指令集学习
(一) 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 -空操作伪指令
http://www.yd-itedu.com/news/dap/2008/315/08315173355I953GAGKB1HHBE37AD59.html