刘帅嵌入式系统-CMP比较指令

刘帅嵌入式系统-CMP比较指令

CMP指令从寄存器Rn中减去< shifter_operand > 表示的数值,根据操作的结果更新CPSR中相应的条件标志位,后面的指令就可以根据CPSR中相应的条件标志位来判断是否执行了。

指令的编码格式

刘帅嵌入式系统-CMP比较指令

指令的语法格式

CMP{< cond >} {S} < Rd >, < Rn> ,< shifter_operand >

其中:

  • < cond >为指令执行的条件码。当< cond >忽略是指令为无条件执行。

  • < Rn > 寄存器为第1个操作数所在的寄存器。

  • < shifter_operand >为第2个操作数。计算方法见之前介绍。

指令操作的伪代码

if ConditionPassed<cond> then
    alu_out=Rn - shifter_operand
    N Flag=alu_out[31]
    Z Flag=if alu_out==0 then 1 else 0
    C Flag=NOT BorrowFrom(Rn - shifter_operand)
    V Flag=OverflowFrom(Rn - shifter_operand)

指令的使用

CMP指令与SUBS指令的区别在于CMP指令不保存操作结果。