常用 ARM指令集及汇编

1238阅读 0评论2012-03-27 tonghuix
分类:

一、 ARM处理器的寻址方式

二、指令集学习

(一)    ARM 指令集

1.  指令格式

2.  条件码

3. ARM 存储器访问指令

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

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

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

4. ARM 数据处理指令

1)       数据传送指令

a)       MOV -数据传送指令

b)       MVN -数据非传送指令

2)       算术逻辑运算指令

a)       ADD -加法运算指令

b)       SUB -减法运算指令

c)       RSB- 逆向减法指令

d)       ADC -带进位加法指令

e)       SBC -带进位减法指令

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

g)       AND -逻辑“与”

h)       ORR -逻辑“或”

i)       EOR -逻辑“异或”

j)       BIC -位清除指令

3)       比较指令

a)       CMP -比较指令

b)       CMN -负数比较指令

c)       TST -位测试指令

d)       TEQ -相等测试指令

4)       乘法指令

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 -数据取负指令

2)       算术逻辑运算指令

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 -循环右移指令

3)       比较指令

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 -空操作伪指令

上一篇:嵌入式的常用工具链
下一篇:实现 Mutt的fortune签名