ARM 指令集
常用寄存器 64 位
通用寄存器
| 寄存器名称 | 描述 |
|---|---|
| X0 | 函数返回值和第一个参数传递 |
| X1-X7 | 第二~八个参数传递 |
| X8 | 系统调用号 |
| X9-X15 | 临时寄存器 |
| X16-X18 | 保留寄存器,和平台相关,不同平台可能不同 |
| X19-X28 | 被调用者保存寄存器 |
| X29 | 栈指针(SP),指向栈顶 |
| X30 | 链接寄存器(LR),存储返回地址 |
| X31 | 程序计数器(PC),存储当前指令地址 |
常见指令
数据处理指令
MOV:寄存器间移动数据ADD/SUB:加减运算AND/ORR/EOR:位操作CMP:比较指令MUL/MLA:乘法和乘加
内存访问指令
LDR/STR:加载/存储字数据LDM/STM:多寄存器加载/存储PUSH/POP:栈操作指令
分支指令
B:无条件跳转BL:带链接跳转(用于函数调用)BX:切换指令集(ARM/Thumb)
协处理器指令
CDP:协处理器数据处理LDC/STC:协处理器加载/存储MCR/MRC:ARM与协处理器间数据传输
指令特点
- 条件执行:大多数指令可条件执行(如ADDEQ)
- 桶形移位器:支持操作数移位(如LSL,LSR,ASR,ROR)
- Thumb指令集:16位压缩指令集提高代码密度
- 加载/存储架构:只有加载/存储指令可访问内存