2.4. 条件执行

在 ARM 状态下以及具有 Thumb-2 的处理器上的 Thumb 状态下,大多数数据处理指令都具有一个选项,该选项可根据运算结果来更新应用程序状态寄存器 (APSR) 中的 ALU 状态标记。 有些指令会更新所有标记,而有些指令仅更新部分标记。 如果某一标记未得到更新,则会保留其原始值。 每个指令的描述详细介绍了它对这些标记所产生的影响。 未执行的条件指令对这些标记没有影响。

在 Thumb-2 以前的处理器的 Thumb 状态下,大多数数据处理指令会自动更新 ALU 状态标记。 没有用于保持这些标记不变而不更新这些标记的选项。 而其他指令不能更新这些标记。

在 ARM 状态下以及具有 Thumb-2 的处理器上的 Thumb 状态下,可以根据其他指令中设置的 ALU 状态标记有条件地执行指令,执行时间为:

可以根据 APSR 中的 ALU 状态标记的状态有条件地执行几乎所有 ARM 指令。 有关添加到指令中以使其有条件执行的后缀的列表,请参阅Table 2.2

在 Thumb 状态下,使用条件跳转是一种条件执行机制。

在具有 Thumb-2 的处理器上的 Thumb 状态下,也可以使用特殊的 IT (If-Then) 指令使指令有条件地执行。 此外,还可以使用 CBZ(零条件跳转)和 CBNZ 指令将寄存器值与零进行比较并根据结果执行跳转。

本节介绍以下内容:

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