Skip to content
ShenYj edited this page Apr 18, 2022 · 2 revisions

cmp指令

CMP 指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行比较,同时更新 CPSR 中条件标志位的值。

该指令进行一次减法运算,但不存储结果,只更改条件标志位。
标志位表示的是操作数1与操作数2的关系(大、小、相等)

  • 例如, 当操作数1大于操作操作数2, 则此后的有GT后缀的指令将可以执行。

格式:CMP{条件} 操作数1,操作数2

  • 示例:

    CMP   R1,R0      ;将寄存器R1的值与寄存器R0的值相减,并根据 结果设置CPSR的标志位
    CMP   R1,#100   ;将寄存器R1的值与立即数100相减,并根 据结果设置CPSR的标志位
  • 补充

    • CMP 指令一般搭配 BBL 指令使用

      • B: 无条件跳转,一般是什么函数内部的if、switch条件判断
      • BL: 带函数返回值的跳转,一般是调用其他的函数
    • 区别于 SUB 指令

      • SUB 指令用于把操作数1减去操作数2,并将结果存放到目的寄存器中
        • 格式: SUB{条件}{S} 目的寄存器, 操作数1, 操作数2
      • CMP 其实从格式参数上也能明显观察到区别,CMP 指令也会将操作数1减去操作数2,并将结果存放到 CPSR 寄存器中(程序状态寄存器

Getting Started

Social

Clone this wiki locally