持续更新文章...
0:后缀学习
后缀 | 含义 |
---|---|
S | SUB R1,R0,R3 R0的值减去R3的值,结果存入R1 SUBS R1,R0,R3 R0的值减去R3的值,刷新CPSR |
! | LDR R3,[R0,#4] 将R0+4作为地址指针,把这个指针的地址单元的数据读入R3 LDR R3,[R0,#4]! 将R0+4作为地址指针,把这个指针的地址单元的数据读入R3,还把R0+4的结果送入到R0 |
1:寻址方式
方式 | 含义 |
---|---|
多寄存器寻址 | 加载 |
1:指令条件码
条件码 | 助记符 | 标志 | 含义 |
---|---|---|---|
0000 | EQ | Z = 1 | 相等 |
0001 | NE | Z = 0 | 不相等 |
0010 | CS/HS | C = 1 | 无符号数大于或等于 |
0011 | CC/LO | C = 0 | 无符号数小于 |
0100 | MI | N = 1 | 负数 |
0101 | PL | N = 0 | 正数或零 |
0110 | VS | V = 1 | 溢出 |
0111 | VC | V = 0 | 没有溢出 |
1000 | HI | C = 1,Z = 0 | 无符号数大于 |
1001 | LS | C = 0,Z = 1 | 无符号数小于或等于 |
1010 | GE | N = V | 有符号数大于或等于 |
1011 | LT | N != V | 有符号书小于 |
1100 | GT | Z = 0, N = V | 有符号数大于 |
1101 | LE | Z = 1, N != V | 有符号数小于或等于 |
1110 | AL | 任何 | 无条件执行(指令默认条件) |
2:ARM指令
助记符 | 指令功能描述 | 助记符 | 指令功能描述 |
---|---|---|---|
ADC | 带进位加法指令 | MRC | 从协处理器寄存器到ARM寄存器的数据传输指令 |
ADD | 加法指令 | MRS | 传送CPSR或SPSR的内容到通用寄存器指令 |
AND | 逻辑与指令 | MSR | 传送通用寄存器到CPSR或SPSR的指令 |
B | 分支指令 | MUL | 32位乘法指令 |
BIC | 位清除指令 | MLA | 32位乘加指令 |
BL | 带返回的分支指令 | MVN | 数据取反传送指令 |
BLX | 带返回和状态切换的分支指令 | ORR | 逻辑或指令 |
BX | 带状态切换的分支指令 | RSB | 逆向减法指令 |
CDP | 协处理器数据操作指令 | RSC | 带借位的逆向减法指令 |
CMN | 比较反值指令 | SBC | 带借位减法指令 |
CMP | 比较指令 | STC | 协处理器寄存器写入存储器指令 |
EOR | 异或指令 | STM | 批量内存字写入指令 |
LDC | 存储器到协处理器的数据传输指令 | STR | 寄存器到存储器的数据存储指令 |
LDM | 加载多个寄存器指令 | SUB | 减法指令 |
LDR | 存储器到寄存器的数据加载指令 | SWI | 软件中断指令 |
MCR | 从ARM寄存器到协处理器寄存器的数据传输指令 | SWP | 交换指令 |
MOV | 数据传输指令 | TEQ | 相等测试指令 |
2:跳转指令
指令 | 含义 |
---|---|
B | 最简单的跳转指令 |
3:数据存储指令
指令 | 含义 |
---|---|
LDR | 加载 |
4:比较指令
指令 | 含义 |
---|---|
CMP比较指令 | CMP R1,R0 实际上是R1-R0,同时刷新CPSR,但是并不存储结果 |
CMN反值比较指令 | CMN R0,R1 实际上就是R0+R1,并根据结果刷新CPSR |
TST位测试指令 | TST R0,R1 将R0和R1按位进行与运算,并根据结果刷新CPSR |
TEQ相等测试指令 | TEQ R0,R1 将R0和R1寄存器的值进行按位异或,刷新CPSR |
5:数据传送指令
指令 | 含义 |
---|---|
MOV | MOV R0,#5 将立即数5传送到寄存器R0,带S影响结果的CPSR的N和Z值 |
MVN | MOV R1,R2 将R2按位取反,传送到R1,带S影响结果的CPSR的N和Z值 |
6:移位指令
指令 | 含义 |
---|---|
LSL | 逻辑左移 |
LSR | 逻辑右移 |
ASR | 算术右移 |
ROR | 循环右移 |
RRX | 带扩展的循环右移 |
7:算术指令
指令 | 含义 |
---|---|
ADD加法 | ADD R0,R1,R2 实际上是R0 = R1+R2,带S的时候刷新CPSR的N,Z,C,V |
ADC带进位加法 | ADDS R0,R2,R4 加低32位,S表示结果影响CPSR的N,Z,C,V ADD R1,,R3,R5 加高32位,带进位 |
SUB减法 | SUB R0,R1,R2 R0 = R1 - R2 有S的时候刷新CPSR的N,Z,C,V |
SBC带借位减法 | SUBS R0,R2,R4 低32位相减,S表示影响CPSR的N,Z,C,V SBC R1,R3,R5 高32位相减 |
RSB逆向减法 | RSB R0,R1,R2 R0 = R2 - R1 |
RSC带借位的逆向减法 | 加载 |
8:逻辑运算指令
指令 | 含义 |
---|---|
AND逻辑与 | AND |
ORR逻辑或 | 加载 |
EOR逻辑异或 | 加载 |
BIC位清除 | 加载 |
LDR | 加载 |
9:比较指令
指令 | 含义 |
---|---|
CMP | CMP R1,#10 将寄存器R1的值和10相减, 并设置CPSR的标志位 |
ORR逻辑或 | 加载 |
EOR逻辑异或 | 加载 |
BIC位清除 | 加载 |
LDR | 加载 |
更新日期-18/09/10
网友评论