指令的条件域 - ShenYj/ShenYj.github.io GitHub Wiki

指令的条件域

  • CPSR 寄存器

    cpsr

  • ARM指令的编码格式

    31 28 27 21 20 19 16 15 12 11 0
    cond opcode S Rn Rd shifter_operand
    • cond [31-28] 4-bit  指令执行的条件编码
    • opcode [27-21] 4-bit  指令操作符编码
    • S [20] 1-bit  决定指令的操作是否影响CPSR的值
    • Rn [19-16] 4-bit  包含第1个操作数的寄存器编码
    • Rd [15-12] 4-bit  目标寄存器编码
    • shifter_operand [11-0] 12-bit  表示第2个操作数
  • ARM指令的条件码域

    条件码 条件码助记符 含义 CPSR 中条件标志位值
    0000 EQ 相等 Z=1
    0001 NE 不相等 Z=0
    0010 CS/HS 无符号数大于/等于 C=1
    0011 CC/LO 无符号数小于 C=0
    0100 MI 负数 N=1
    0101 PL 非负数 N=0
    0110 VS 上溢出 V=1
    0111 VC 没有上溢出 V=0
    1000 HI 无符号数大于 C=1且Z=0
    1001 LS 无符号数小于/等于 C=0且Z=1
    1010 GE 带符号数大于/等于 N=1且V=1或N=0且V=0
    1011 LT 带符号数小于 N=1且V=0或N=0且V=1
    1100 GT 带符号数大于 Z=0且N=V
    1101 LE 带符号数小于/等于 Z=1或N!=V
    1110 AL 无条件执行
    1111 NV 该指令从不执行
⚠️ **GitHub.com Fallback** ⚠️