|
常用
ARM指令集及汇编
一、
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
-空操作伪指令 |