热度 16
2012-11-2 22:21
1973 次阅读|
0 个评论
不同的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位)