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位压缩指令集提高代码密度
- 加载/存储架构:只有加载/存储指令可访问内存