•比较指令 cmp cmn tst teq (比较指令重在过程不在乎结果)
cmp r0, r1 @等价于sub r2, r0,r1 (r2 = r0-r1)
cmn r0, r1 @等价于 add r0,r1
tst r0,#0x08 @测试bit_3是否为0
bne suspendup @上一条指令指令是否成立 成立就跳转到 标签suspendup
tst r0,#0x0f @测试r0的bit0-bit3是否都为0
•乘法指令 mvl mla umull umlal smull smlal
•前导零计数 clz
比较指令用来比较2个寄存器中的数
注意:比较指令不用后加s后缀就可以影响cpsr中的标志位。
常用ARM指令2:cpsr访问指令
•mrs & msr
•
•mrs用来读psr(包括cpsr、spsr),msr用来写psrpsr(包括cpsr、spsr)
cpsr和spsr的区别和联系:cpsr程序状态寄存器,整个SOC中只有1个;而spsr有5个,分别在5种异常模式下,作用是当普通模式进入异常模式时,用来保存之前普通模式下的cpsr,已在返回普通模式时恢复原来的spsr。
•CPSR寄存器比较特殊,需要专门的指令访问,这就是mrs和msr。