ARM32汇编语言之寄存器别名和指令补充

「这是我参与11月更文挑战的第29天,活动详情查看:2021最后一次更文挑战」。

ARM32中寄存器别名补充

寄存器 别名 用途
r0 a1 第一个函数参数和函数返回值
r1 a2 第二个函数参数
r2 a3 第三个函数参数
r3 a4 第四个函数参数
r4 v1 寄存器变量
r5 v2 寄存器变量
r6 v3 寄存器变量
r7 v4 寄存器变量
r8 v5 寄存器变量
r9 v6 寄存器变量 实际的帧指针
r10 sl 栈接线
r11 fp 参数指针
r12 ip 临时
r13 sp 栈指针
r14 lr 连接寄存器
r15 pc 程序计数器

如何编译16位arm汇编指令

  	AREA test, CODE
  	code16		;声明为16位arm指令 如果不写默认则为code32 
  	
    END			
复制代码

附:指令集汇总

(一) ARM 指令集

1. 指令格式

2. 条件码

3. ARM 存储器访问指令

  1. LDR/ STR -加载 /存储指令

  2. LDM/ STM -多寄存器加载 /存储指令

  3. SWP -寄存器和存储器交换指令

4. ARM 数据处理指令

  1. 数据传送指令

a) MOV -数据传送指令

b) MVN -数据非传送指令

扫描二维码关注公众号,回复: 13461660 查看本文章
  1. 算术逻辑运算指令

a) ADD -加法运算指令

b) SUB -减法运算指令

c) RSB- 逆向减法指令

d) ADC -带进位加法指令

e) SBC -带进位减法指令

f) RSC -带进位逆向减法指令

g) AND -逻辑“与”

h) ORR -逻辑“或”

i) EOR -逻辑“异或”

j) BIC -位清除指令

  1. 比较指令

a) CMP -比较指令

b) CMN -负数比较指令

c) TST -位测试指令

d) TEQ -相等测试指令

  1. 乘法指令

a) MUL - 32位乘法指令

b) MLA - 32位乘加指令

c) UMULL - 64位无符号乘法指令

d) UMLAL - 64位无符号乘加指令

e) SMULL - 64位有符号乘法指令

f) SMLAL - 64位有符号乘加指令

5. ARM 分支指令

  1. B -分支指令

  2. BL -带连接的分支指令

  3. BX -带状态切换的分支指令

6. ARM 协处理器指令

  1. CDP -协处理器数据操作指令

  2. LDC -协处理器数据读取指令

  3. STC -协处理器数据写入指令

  4. MCR - ARM处理器到协处理器的数据传送指令

  5. MRC -协处理器到 ARM处理器的数据传送指令

7. ARM 杂项指令

  1. SWI -软中断指令

  2. MRS -读状态寄存器指令

  3. MSR -写状态寄存器指令

8. ARM 伪指令

  1. ADR -小范围的地址读取伪指令

  2. ADRL -中等范围的地址读取伪指令

  3. LDR -大范围的地址读取伪指令

  4. NOP -空操作伪指令

(二) Thumb 指令集

1. Thumb 指令集和 ARM指令集的区别

2. Thumb 存储器访问指令

  1. LDR/ STR -加载 /存储指令

  2. PUSH/ POP -寄存器入栈 /出栈指令

  3. LDMIA/ STMIA -多寄存器加载 /存储指令

3. Thumb 数据处理指令

  1. 数据传送指令

a) MOV -数据传送指令

b) MVN -数据非传送指令

c) NEG -数据取负指令

  1. 算术逻辑运算指令

a) ADD -加法运算指令

b) SUB -减法运算指令

c) ADC -带进位加法指令

d) SBC -带进位减法指令

e) MUL -乘法运算指令

f) AND -逻辑“与”

g) ORR -逻辑“或”

h) EOR -逻辑“异或”

i) BIC -位清除指令

j) ASR -算术右移指令

k) LSL -逻辑左移指令

l) LSR -逻辑右移指令

m) ROR -循环右移指令

  1. 比较指令

a) CMP -比较指令

b) CMN -负数比较指令

c) TST -位测试指令

4. Thumb 分支指令

  1. B -分支指令

  2. BL -带连接的分支指令

  3. BX -带状态切换的分支指令

5. Thumb 杂项指令

  1. SWI -软中断指令

6. Thumb 伪指令

  1. ADR -小范围的地址读取伪指令

  2. LDR -大范围的地址读取伪指令

  3. NOP -空操作伪指令

猜你喜欢

转载自juejin.im/post/7035795213159235621