比较指令通常用于把一个寄存器与一个32位的值进行比较或测试.比较指令根据结果更新cpsr的标志位,但不映象其它的寄存器.在设置标志位后,其他指令可通过条件执行来改变程序的执行流程.对于比较指令,不需要使用S后缀就可以改变标志位.
指令语法:<指令>{<cond>} Rn, N
CMN 取负比较 标记根据Rn+N的值设置
CMP 比较 标记根据Rn-N的值设置
TEQ 等值测试 标记根据Rn^N的值设置
TST 位测试 标记根据Rn&N的值设置
其中N是桶形移位器的操作结果
比较指令CMP本质上就是一个不返回运算结果的减法指令;TST指令就是一个没有保存结果的逻辑与操作;TEQ则是一个逻辑异或操作.对于每个操作,不需要保存结果,只根据结果影响cpsr.
比较指令只改变cpsr中的条件标志,不影响参与比较的寄存器内容.
指令语法:<指令>{<cond>} Rn, N
CMN 取负比较 标记根据Rn+N的值设置
CMP 比较 标记根据Rn-N的值设置
TEQ 等值测试 标记根据Rn^N的值设置
TST 位测试 标记根据Rn&N的值设置
其中N是桶形移位器的操作结果
比较指令CMP本质上就是一个不返回运算结果的减法指令;TST指令就是一个没有保存结果的逻辑与操作;TEQ则是一个逻辑异或操作.对于每个操作,不需要保存结果,只根据结果影响cpsr.
比较指令只改变cpsr中的条件标志,不影响参与比较的寄存器内容.
转载于:https://blog.51cto.com/bluefish/58351