不同的ARM体系结构版本支持的指令是不同的,但是新的版本一般是增加指令并且保持指令的向后兼容。 也就是说,在ARMv4T上写的代码在ARMv5TE处理器上也是可以运行的。下表列出了所有ARMv5E指令集架 构ISA下支持的指令。这个ISA包括了所有ARM指令,以及在ARM指令集中一些新的功能特征。“ARM ISA” 一列,列出了该指令是在哪个修定版本引入的。一些指令在后续的架构中已扩展了功能,例如CDP指令在 ARMv5中有一个变体叫CDP2。同样,有此指令,像LDR,也有ARMv5的扩展,但不需要新的或扩展的助记符。 |
||
助记符 | ARM ISA | 说明 |
ADC | 带进位的32位数加法 | |
ADD | 32位数的相加 | |
AND | 32位数的逻辑与 | |
B | 在32M空间内的相对跳转指令 | |
BIC | 32位数的逻辑位清零 | |
BKPT | 断点指令 | |
BL | 带链接的相对跳转指令 | |
BLX | 带链接的切换跳转 | |
BX | 切换跳转 | |
CDP CDP2 | 协处理器数据处理操作 | |
CLZ | 零计数 | |
CMN | 比较两个数的相反数 | |
CMP | 32位数的比较 | |
EOR | 32位逻辑异或 | |
LDC LDC2 | 从协处理器取一个或多个 32位值 | |
LDM | 从内存送多个32位字到ARM寄存器 | |
LDR | 从虚拟地址取一个单个的32位值 | |
MCR MCR2 MCRR | 从寄存器送数据到协处理器 | |
MLA | 32位乘累加 | |
MOV | 传送一个32位数到寄存器 | |
MRC MRC2 MRRC | 从协处理器传送数据到寄存器 | |
MRS | 把状态寄存器的值送到通用寄存器 | |
MSR | 把通用寄存器的值传送到状态寄存器 | |
MUL | 32位乘 | |
MVN | 把一个32位数的逻辑“非”送到寄存器 | |
ORR | 32位逻辑或 | |
PLD | 预装载提示指令 | |
QADD | 有符号32位饱和加 | |
QDADD | 有符号双32位饱和加 | |
QSUB | 有符号32位饱和减 | |
QDSUB | 有符号双32位饱和减 | |
RSB | 逆向32位减法 | |
RSC | 带进位的逆向32位减法 | |
SBC | 带进位的32位减法 | |
SMLAxy | 有符号乘累加((16位X16位)+32位=32位) | |
SMLAL | 64位有符号乘累加((32位X32位)+64位=64位) | |
SMLALxy | 64位有符号乘累加((16位X16位)+64位=64位) | |
SMLAWy | 有符号乘累加(((32位X16位)》16位)+32位=32位) | |
SMULL | 64位有符号乘累加((32位X32位)=64位) | |
SMULxy | 有符号乘(16位X16位=32位) | |
SMULWy | 有符号乘(32位X16位》16=32位 | |
STC STC2 | 从协处理器中把一个或多个32位值存到内存 | |
STM | 把多个32位的寄存器值存放到内存 | |
STR | 把寄存器的值存到一个内存的虚地址空间 | |
SUB | 32位减法 | |
SWI | 软中断 | |
SWP | 把一个字或者一个字节和一个寄存器值交换 | |
TEQ | 等值测试 | |
TST | 位测试 | |
UMLAL | 64位无符号乘累加((32位X32位)+64位=64位) | |
UMULL | 64位无符号乘法(32位X32位=64位) |
文章评论(0条评论)
登录后参与讨论