ARM指令格式:
<opcode>{<cond>}{S} <Rd><Rn>{,<op2>}
其中< >不可省略,{ }可省略,<opcode> 、<cond> 与 <S> 之间没有分隔符,{ S } 与 <Rd> 之间用空格隔开
<opcode>
指令的操作码,即助记符
如:MOV、ADD、B等
{<cond>}
条件域,满足条件才执行指令。不加条件即可省略条件
如:EQ、NE等
{S}
指令执行时是否更新CPSR,可省略
<Rd>
目的寄存器,Rd可为任意通用寄存器
<Rn>
第一个源操作数,Rn可为任意通用寄存器,Rn可以与Rd相同
<op2>
可为#imm8m 、寄存器Rm及任意移位寄存器
关于 #imm8m 的说明:
对于ARM指令集, #imm8m 表示一个由8位立即数经循环右移任意偶数位次形成的32位操作数
对于Thumb指令集, #imm8m 表示一个由8位立即数经左移任意位次形成的32位操作数
ADC
带进位加法指令
ADD
加法指令
AND
逻辑与指令
B
跳转指令
BIC
位清零指令
BKPT
断点中断指令
BL
带返回的跳转指令
BLX
带返回和状态切换的跳转指令
BX
带状态切换的跳转指令
CDP
协处理器数据操作指令
CMN
比较反值指令
CMP
比较指令
EOR
异或指令
LDC
存储器到协处理器的数据传送指令
LDM
加载多个寄存器指令
LDR
存储器到寄存器的数据传送指令
MCR
从寄存器到协处理器寄存器的数据传送指令
MLA
乘加运算指令
MOV
数据传送指令
MRC
从协处理器寄存器到寄存器的数据传送指令
MRS
传送CPSR到SPSR的指令
MUL
32位乘法指令
MLA
32位乘加指令
MVN
数据取反传送指令
ORR
逻辑或指令
RSB
逆向减法指令
RSC
带借位的逆向减法指令
SBC
带借位的减法指令
STC
协处理器寄存器写入存储器指令
STM
批量内存字写入指令
STR
寄存器到存储器的数据传送指令
SUB
减法指令
SWI
软件中断指令
SWP
交换指令
TEQ
相等测试指令
TST
位测试指令
指令的条件码助记符:
EQ
标志: Z置位,含义:相等
NE
标志:Z清零,含义:不相等
CS
标志:C置位,含义:无符号数大于或等于
CC
标志:C清零,含义:无符号数小于
MI
标志:N置位,含义:负数
PL
标志:N清零,含义:正数或零
VS
标志:V置位,含义:溢出
VC
标志:V清零,含义:未溢出
HI
标志:C置位 Z清零,含义:无符号数大于
LS
标志:C清零 Z置位,含义:无符号数小于或等于
GE
标志:N 等于 V,含义:带符号数大于或等于
LT
标志:N 不等于 V,含义:带符号数小于
GT
标志:Z 清零且(N 等于 V),含义:带符号数大于
LE
标志:Z 置位或(N 不等于 V),含义:带符号数小于或等于
AL(系统保留)
标志:忽略,含义:无条件执行
ARM指令
最新推荐文章于 2024-08-16 17:26:01 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)