5.4. 条件代码

在 ARM 状态下,可以使用条件代码来控制 VFP 指令的执行。 此类指令是根据 APSR 中的状态标记有条件执行的,执行方式与几乎所有其他 ARM 指令完全相同。

在 ARM 状态下,除 VFP 和 NEON 公用的指令之外,不能使用条件代码来控制 NEON 指令的执行。

在 Thumb-2 处理器上的 Thumb® 状态下,使用一个 IT 指令最多可在随后的四个 NEON 或 VFP 指令上设置条件代码。 有关详细信息,请参阅IT

VCMP 是可用于更新状态标记的唯一 VFP 指令。 该指令不直接更新 APSR 中的标记,而是更新 FPSCR 中的一个单独的标记集(请参阅FPSCR,浮点状态和控制寄存器)。

Note

要使用这些标记来控制条件指令(包括条件 VFP 指令),必须先使用 VMRS 指令将其复制到 APSR 中(请参阅VMRS 和 VMSR)。

这些标记在 VCMP 指令后的准确含义与其在 ARM 数据处理指令后的含义是不同的。 这是因为:

条件代码助记符的含义如Table 5.4 所示。

Table 5.4. 条件代码

助记符在 ARM 数据处理指令后的含义在 VFP VCMP 指令后的含义
EQ等于等于
NE不等于不等于或无序
CS or HS进位设置或无符号大于或相同大于或等于或无序
CC or LO进位清除或无符号小于小于
MI求反小于
PL正数或零大于或等于或无序
VS溢出无序(至少一个非数字操作数)
VC无溢出非无序
HI无符号大于大于或无序
LS无符号小于或相同小于或等于
GE有符号大于或等于大于或等于
LT有符号小于小于或无序
GT有符号大于大于
LE有符号小于或等于小于或等于或无序
AL始终(通常省略)始终(通常省略)

Note

最后更新 APSR 中的标记的指令类型确定了条件代码的含义。

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