通过英文全称,了解ARM指令代表的含义,可以快速记住所有ARM指令。我的一些表述,可能存在语法错误,不过不重要,我们的目的是理解。
每个指令用法的详解可以看这篇文章http://t.csdn.cn/mxd6H
本文不详解ARM指令用法,只对指令命名说一说自己的理解。
1. ARM 存储器访问指令
1.1 LDR 和STR 加载/存储字和无符号字节指令
LDR load from register to memory—所以指令后接寄存器,再接内存地址LDR Rd,<地址>
STR store register to memory—所以指令后接寄存器,再接内存地址STR Rd,<地址>;
1.2 LDM和STM 批量加载/存储指令
LDM load from memory to register—所以指令后接内存地址,再接寄存器LDM Rn,reglist{^}
STM store memory to register—所以指令后接内存地址,再接寄存器STM Rn,reglist{^}
寄存器Rn 为基址寄存器,装有传送数据的初始地址
(1) IA:每次传送后地址加4 increase after
(2) IB:每次传送前地址加4 increase before
(3) DA:每次传送后地址减4 decrease after
(4) DB:每次传送前地址减4 decrease before
(5) FD:满递减堆栈 Full descending
(6) ED:空递减堆栈 Empty descending
(7) FA:满递增堆栈 Full ascending
(8) EA:空递增堆栈 Empty ascending
1.3 SWP 寄存器和存储器交换指令
SWP swap
2. ARM 数据处理指令
2.1数据传送指令
2.1.1 MOV 数据传送指令
MOV move
2.1.2 MVN 数据非传送指令
MVN move and NOT
2.2算术逻辑运算指令
2.2.1 ADD 加法运算指令
ADD add
2.2.2 SUB 减法运算指令
SUB subtract
2.2.3 RSB 逆向减法指令
RSB reverse subtract
2.2.4 ADC 带进位加法指令
ADC add with carry
2.2.5 SBC 带进位减法指令
SBC subtract with carry
2.2.6 RSC 带进位逆向减法指令
RSC reverse subtract with carry
2.2.7 AND 逻辑与操作指令
AND and
2.2.8 ORR 逻辑或操作指令
ORR or
2.2.9 EOR 逻辑异或操作指令
EOR exclusive or
2.2.10 BIC 位清除指令
BIC bitwise clear
2.3 比较指令
2.3.1 CMP 比较指令
CMP compare
2.3.2 CMN 负数比较指令
CMN compare nagative
2.3.3 TST 位测试指令
TST test
2.3.4 TEQ 相等测试指令
2.4 乘法指令
2.4.1 MUL 32 位乘法指令
MUL multiply
2.4.2 MLA 32 位乘加指令
MLA multiply and add
2.4.3 UMULL 64 位无符号乘法指令
UMULL unsigned multiply
2.4.4 UMLAL 64 位无符号乘加指令
UMLAL unsigned multiply and add
2.4.5 SMULL 64 位有符号乘法指令
SMULL signed multiply
2.4.6 SMLAL 64 位有符号乘加指令
SMLAL signed multiply and add
3. ARM 跳转指令
3.1 B 跳转指令
B branch
3.2 BL 带链接的跳转指令
BL branch with link
3.3 BX 带状态切换的跳转指令
BX brach and exchange
3.4 BLX
4. ARM 协处理器指令
4.1 CDP 协处理器数据操作指令
CDP coprocessor data process
4.2 LDC 协处理器数据读取指令
LDC load data from coprocessor
4.3 STC 协处理器数据写入指令
LDC store data to coprocessor
4.4 MCR ARM寄存器到协处理器寄存器的数据传送指令
move data to coprocessor from register
4.5 MRC 协处理器寄存器到ARM寄存器到的数据传送指令
move data to register from coprocessor
5. ARM 杂项指令
5.1 SWI 软中断指令
SWI software interrupt
5.2 MRS 读状态寄存器指令
move data to register from status register
5.3 MSR 写状态寄存器指令
move data to status register from register