arm指令

Thumb® 16 位指令集
快速参考卡
本卡列出了版本低于 ARM®v6T2 的支持 Thumb 的处理器中可用的所有 Thumb 指令。此外,还列出了所有 Thumb-2 16 位指令。
除非另外注明,否则本卡中显示的指令均为 Thumb-2 16 位指令。
除非指定,否则所有寄存器都为 Lo (R0-R7)。 Hi 寄存器为 R8-R15。
表关键字
§ 请参阅表 ARM 体系结构版本。<loreglist+LR> 以逗号隔开的 Lo 寄存器列表。加上 LR,括在大括号 { 和 } 内。
<loreglist> 以逗号隔开的 Lo 寄存器列表,括在大括号 { 和 } 内。<loreglist+PC> 以逗号隔开的 Lo 寄存器列表。加上 PC,括在大括号 { 和 } 内。
运算 汇编器更新 操作说明
移动立即数MOVS Rd, #<imm> N Z Rd := imm imm 范围为 0-255。
Lo 到 Lo MOVS Rd, Rm N Z Rd := Rm LSLS Rd, Rm, #0 的同义词
Hi 到 Lo、Lo 到 Hi、Hi 到 Hi MOV Rd, Rm Rd := Rm 不是 Lo 到 Lo。
任何寄存器之间6 MOV Rd, Rm Rd := Rm 任何寄存器之间。
加法立即数 3 ADDS Rd, Rn, #<imm> N Z C V Rd := Rn + imm imm 范围为 0-7。
所有寄存器 Lo ADDS Rd, Rn, Rm N Z C V Rd := Rn + Rm
Hi 到 Lo、Lo 到 Hi、Hi 到 Hi ADD Rd, Rd, Rm Rd := Rd + Rm 不是 Lo 到 Lo。
任何寄存器之间T2 ADD Rd, Rd, Rm Rd := Rd + Rm 任何寄存器之间。
立即数 8 ADDS Rd, Rd, #<imm> N Z C V Rd := Rd + imm imm 范围为 0-255。
带进位ADCS Rd, Rd, Rm N Z C V Rd := Rd + Rm + C-bit
值与 SP ADD SP, SP, #<imm> SP := SP + imm imm 范围为 0-508(字对齐)。
SP 所存储的地址ADD Rd, SP, #<imm> Rd := SP + imm imm 范围为 0-1020(字对齐)。
PC 所存储的地址ADR Rd, <label> Rd := label 标签范围为 PC 到 PC+1020(字对齐)。
减法Lo 到 Lo SUBS Rd, Rn, Rm N Z C V Rd := Rn – Rm
立即数 3 SUBS Rd, Rn, #<imm> N Z C V Rd := Rn – imm imm 范围为 0-7。
立即数 8 SUBS Rd, Rd, #<imm> N Z C V Rd := Rd – imm imm 范围为 0-255。
带进位SBCS Rd, Rd, Rm N Z C V Rd := Rd – Rm – NOT C 位
来自 SP 的值SUB SP, SP, #<imm> SP := SP – imm imm 范围为 0-508(字对齐)。
求反RSBS Rd, Rn, #0 N Z C V Rd := – Rn 同义词:NEGS Rd, Rn
乘法乘法MULS Rd, Rm, Rd N Z * * Rd := Rm * Rd * C 和 V 标记在 §4T 中不可预测,
在 §5T 及更高版本中保持不变
比较CMP Rn, Rm N Z C V 更新 Rn – Rm 的 APSR 标记可为 Lo 和 Lo、Lo 和 Hi、Hi 和 Lo 或者 Hi 和 Hi。
求反CMN Rn, Rm N Z C V 更新 Rn + Rm 的 APSR 标记
立即数CMP Rn, #<imm> N Z C V 更新 Rn – imm 的 APSR 标记imm 范围为 0-255。
逻辑与ANDS Rd, Rd, Rm N Z Rd := Rd AND Rm
异或EORS Rd, Rd, Rm N Z Rd := Rd EOR Rm
或ORRS Rd, Rd, Rm N Z Rd := Rd OR Rm
位清零BICS Rd, Rd, Rm N Z Rd := Rd AND NOT Rm
取反移动MVNS Rd, Rd, Rm N Z Rd := NOT Rm
测试位TST Rn, Rm N Z 更新 Rn AND Rm 的 APSR 标记
移位/循环逻辑左移LSLS Rd, Rm, #<shift> N Z C* Rd := Rm << shift 允许移动 0-31 位。 如果移位为 0,则不会影响 * C 标记。
LSLS Rd, Rd, Rs N Z C* Rd := Rd << Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响 * C 标记。
逻辑右移LSRS Rd, Rm, #<shift> N Z C Rd := Rm >> shift 允许移动 1-32 位。
LSRS Rd, Rd, Rs N Z C* Rd := Rd >> Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响 * C 标记。
算术右移ASRS Rd, Rm, #<shift> N Z C Rd := Rm ASR shift 允许移动 1-32 位。
ASRS Rd, Rd, Rs N Z C* Rd := Rd ASR Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响 * C 标记。
向右循环移RORS Rd, Rd, Rs N Z C* Rd := Rd ROR Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响 * C 标记。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值