指令集学习
(一)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-空操作伪指令