2.4.2. 条件执行

可有条件执行的指令具有可选条件代码,如 {cond} 中的语法描述所示。 此条件在 ARM 指令中编码,也可在 Thumb-2 指令的前一 IT 指令中编码。 仅当 APSR 中的条件代码标记满足指定的条件时,才会执行带有条件代码的指令。Table 2.2 显示了可使用的条件代码。

在 Thumb-2 以前的处理器上的 Thumb 状态下,只允许在某些跳转指令中使用 {cond} 字段。

Table 2.2 还显示了条件代码后缀与 NZCV 标记之间的关系。

Table 2.2. 条件代码后缀

后缀标记含义
EQ设置 Z等于
NE清除 Z不等于
CS 或 HS设置 C大于或等于(无符号 >=)
CC 或 LO清除 C小于(无符号 <)
MI设置 N负数
PL清除 N正数或零
VS设置 V溢出
VC清除 V无溢出
HI设置 C 并清除 Z大于(无符号 >)
LS清除 C 或设置 Z小于或等于(无符号 <=)
GENV 相同有符号 >=
LTNV 不同有符号 <
GT清除 ZNV 相同有符号 >
LE设置 ZNV 不同有符号 <=
AL任何始终。 通常会忽略此后缀。

Example 2.3 显示了条件执行的示例。

Example 2.3. 

    ADD     r0, r1, r2    ; r0 = r1 + r2, don't update flags
    ADDS    r0, r1, r2    ; r0 = r1 + r2, and update flags
    ADDSCS  r0, r1, r2    ; If C flag set then r0 = r1 + r2, and update flags
    CMP     r0, r1        ; update flags based on r0-r1.

Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential