规则:

  1. 当处理器工作在ARM状态时,几乎所有的指令均根据CPSR中条件码的状态指令的条件域有条件的执行;
  2. 指令的执行条件满足时,指令被执行,否则指令被忽略;

条件码和条件助记符:

  1. 每一条ARM指令包含4位的条件码,位于指令的最高4位[31:28];
  2. 共有16种条件码,每种条件码可用2个字符(简称:条件助记符)表示,这2个字符可以添加在指令助记符的后面和指令同时使用;
  3. 在16种条件码中,只有15种可以使用,如下表所示,第16种条件码(1111)为系统保留,暂时不能使用;
序号 条件
<cond>
条件助记符 CPSR中条件标志位cpsr_f的值 含义
0 0000 EQ Z=1 相等
1 0001 NE Z=0 不相等
2 0010 CS
HS
C=1 无符号数大于或等于
3 0011 CC
LO
C=0 无符号数小于
4 0100 MI N=1 负数
5 0101 PL N=0 正数或零
6 0110 VS V=1 溢出
7 0111 VC V=0 未溢出
8 1000 HI C=1,Z=0 无符号数大于
9 1001 LS C=0,Z=1 无符号数小于或等于
10 1010 GE N=V 带符号数大于或等于
11 1011 LT N!=V 带符号数小于
12 1100 GT Z=0,N=V 带符号数大于
13 1101 LE Z=1,N!=V 带符号数小于或等于
14 1110 AL 任何 忽略条件,即无条件执行
15 1111 任何 系统保留

SofTool.CN Notes:
上面的条件助记符用的大写形式,但是在程序中,我们经常见到的是其小写形式

举例:

BEQ

B可以加上后缀EQ变为BEQ表示“相等则跳转”,即当CPSR中的Z标志置位(Z=1)时发生跳转。