Date: 2018.11.11


学习参考: https://blog.csdn.net/listener51/article/details/82856001

1、指令编码长度
A32模式(ARM instruction sets),指令固定的编码长度为32bit
T32模式(Thumb instruction sets),指令可以编码成16bit长,也可编码成32bit长
A64模式(AArch64 instruction sets),指令固定的编码长度为32bit
2、当前指令的地址

在ARM32状态下,当前执行指令的地址通常是pc-8,而在Thumb状态下通常是pc-4。
参考地址:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.den0013d/index.html 程序计数器(pc)

拿ARMv7三级流水线做示例,如图,假设add指令fetch时,指令地址为pc1; add指令decode时,下一条指令sub又进入fetch阶段,此时pc2 = pc1 + 4; add指令execute时,sub指令后的cmp油进入fetch阶段,此时pc = pc2 + 4, 因此add指令执行时真正的pc地址pc1 = pc-8。

参考: https://blog.csdn.net/lee244868149/article/details/49488575/

在AARCH64状态下,当前执行指令的地址通常是pc。
英文原文:

Program counter
 The current Program Counter (PC) cannot be referred to by number as if part of the general register file and therefore cannot be used as the source or destination of arithmetic instructions, or as the base, index or transfer register of load and store instructions.
 The only instructions that read the PC are those whose function it is to compute a PC-relative address (ADR, ADRP, literal load, and direct branches), and the branch-and-link instructions that store a return address in the link register (BL and BLR). The only way to modify the program counter is using branch, exception generation and exception return instructions.
 Where the PC is read by an instruction to compute a PC-relative address, then its value is the address of that instruction. Unlike A32 and T32, there is no implied offset of 4 or 8 bytes.

参考: http://infocenter.arm.com/help/index.jsptopic=/com.arm.doc.den0024a/ch05s01s03.html 5.1.3. Registers

3、形参超过指定通用寄存器个数的访问方法

arm32下,前4个参数是通过r0~r3传递,第4个参数需要通过sp访问,第5个参数需要通过sp + 4 访问,第n个参数需要通过sp + 4*(n-4)访问。

arm64下,前8个参数是通过x0~x7传递,第8个参数需要通过sp访问,第9个参数需要通过sp + 8 访问,第n个参数需要通过sp + 8*(n-8)访问。

4、aarch64下< Vn >.< Ts >[< index2 >]的用法

示例:

 mov < Vd >.< Ts >[< index1 >], < Vn >.< Ts >[< index2 >]

其中Ts的值需要注意,只能是以下情况之一:

  • B :8bit
  • H:16bit
  • S :32bit
  • D: 64bit

注意:不要将Ts写成8B、2s等,因为是取矢量寄存器(Vn)中的元素。

5、aarch64下imm需注意的地方

示例:

cmp < Wn|WSP>, #< imm> {, < shift>}

其中imm是无符号立即数,取值范围[0, 4095]。

注意:在使用立即数的时候,需要看指令所支持的立即数范围。不同指令中立即数的取值范围可能不同。


THE END!

【arm】ARM32和AARCH64的几点区别相关推荐

  1. ARM AArch32和AArch64通用寄存器、状态寄存器

    ARM AArch32和AArch64通用寄存器.状态寄存器 文章目录 ARM AArch32和AArch64通用寄存器.状态寄存器 1. ARM CPU Mode 1.1 ARM32 CPU Mod ...

  2. ARM、Intel、MIPS处理器的区别

    安卓支持三类处理器(CPU):ARM.Intel和MIPS.ARM无疑被使用得最为广泛.Intel因为普及于台式机和服务器而被人们所熟知,然而对移动行业影响力相对较小.MIPS在32位和64位嵌入式领 ...

  3. 怎么看电脑系统是win几_一文看懂arm架构和x86架构有什么区别

    一文看懂arm架构和x86架构有什么区别 本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能.扩展能力.操作系统的兼容性.软件开发的方便性及可使用 ...

  4. ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析

    ARM系列之ARM 平台安全架构PSA和Trustzone区别 浅析 PSA要求是什么? C1.1 硬件级别的隔离环境 C1.2 安全启动 C1.3 生命周期管理 C1.4 密钥管理 差异总结 熟悉A ...

  5. 从零开始系列(四):一文看懂arm架构和x86架构有什么区别

    从零开始系列(四):一文看懂arm架构和x86架构有什么区别 相关系列文章推荐:   从零开始系列(一):在github上搭建自己的博客   从零开始系列(二):数据库基础篇   从零开始系列(三): ...

  6. 一文看懂arm架构和x86架构有什么区别

    本文主要介绍的是arm架构和x86架构的区别,首先介绍了ARM架构图,其次介绍了x86架构图,最后从性能.扩展能力.操作系统的兼容性.软件开发的方便性及可使用工具的多样性及功耗这五个方面详细的对比了a ...

  7. ARM汇编:伪指令DATA和EQU的区别

    ARM汇编:伪指令DATA和EQU的区别 1.EQU 指令 定义:用于将一个数值或寄存器名赋给一个指定的符号名. 格式: 符号名 EQU 表达式 符号名 EQU 寄存器名 注意:表达式必须是一个简单再 ...

  8. 【汇编优化】之ARM32与AARCH64指令集优化总结

    序 前文<arm64>.<arm32>已经介绍arm,aarch64优化的一些基本知识,本文着重介绍优化过程中容易混淆的点,或需注意的点. 1. 关于指令编码长度 1.1 aa ...

  9. ARM指令 LDR 和 ADR的一些区别

    LDR 是ARM中的指令,也是伪指令. 当用 LDR r, =imd  // r 为寄存器, imd为立即数 LDR 是一条伪指令.编译器会根据 立即数的大小,决定用 ldr 指令或者是mov或mvn ...

最新文章

  1. 054_Unicode字符官方标准五
  2. tableau应用实战案例(二)-TABLEAU调用中国地图和Python获取地址的经纬度
  3. 翻牌游戏如何打乱牌面java_剑仙登上虎牙封面C位,成为新的牌面,虎牙造星能力真的强...
  4. 火狐浏览器插件_期待!全新安卓正式版Firefox火狐浏览器,将支持97个插件
  5. Tomcat中JVM内存溢出及合理配置(转:http://blog.csdn.net/ye1992/article/details/9344807)
  6. android 解决setbackgrounddrawable过时
  7. UVA572 Oil Deposits DFS求解
  8. oracle 本地使用命令导入数据到远程主机
  9. 万字干货:一步步教你如何在容器上构建持续部署!
  10. python reduce求和_Tensorflow 的reduce_sum()函数到底是什么意思,谁能解释下?
  11. Qt——P13 Q4版本信号槽连接
  12. WPF之完美捕捉精灵神器 -- HitTest
  13. druid 连接池监控报错 Sorry, you are not permitted to view this page.
  14. 【问题导向】GWR与MGWR——以南京市中心城区住宅小区为例
  15. Java SE 12 新增特性
  16. CocosCreator downlevelIteration 允许迭代器进行迭代
  17. 伯克利摘得最佳论文 | ACL2022奖项公布
  18. grok java_Java Grok.match方法代码示例
  19. 从头到尾彻底解析Hash 表算法
  20. Android 布局旋转 横屏竖屏

热门文章

  1. 对抗博弈搜索——吃豆人
  2. 关于电脑壁纸分辨率低的原因及解决办法(个人感悟,并非系统性的盘点)
  3. ac6005直连ap 如何配置_WLAN1:AC6005组网配置实验
  4. 云帆教育大数据分享-Flume-0.9.4源码编译及一些编译出错解决方法
  5. Xshell6|Xftp6 要继续使用此程序,您必须应用最新的更新或使用新版本
  6. linux虚拟光驱挂载教程,VMWare 挂载虚拟光驱及制作floppy linux
  7. MySQL中show命令用法大全
  8. 人工智能在电力系统的典型应用有哪些
  9. 一看就会的Nginx学习教程(千万别告诉其他人),java视频百度云盘
  10. 一文带你看懂小程序朋友圈广告是什么