1.程序状况寄存器的条件标志位
N 运算成果的b31位值。关于有符号二进制补码,成果为负数时N=1,成果为正数或零时N=0;
Z 指令成果为0时Z=1,不然Z=0;
C 运用加法运算(包括CMN指令),b31位产生进位时C=1,不然C=0。运用减法运算(包括CMP),b31位产生借位时C=0,不然C=1。关于结合移位操作的非加法/减法指令,C为b31位最终的移出值,其它指令C一般不变;
V 运用加法/减法运算,当产生有符号溢出时V=1,不然V=0,其它指令V一般不变。
2.每一条ARM指令包括4位的条件码
操作码 | 条件码助记符 | 标志 | 意义 |
0000 | EQ | Z=1 | 持平 |
0001 | NE(Not Equal) | Z=0 | 不持平 |
0010 | CS/HS(Carry Set/High or Same) | C=1 | 无符号数大于或等于 |
0011 | CC/LO(Carry Clear/LOwer) | C=0 | 无符号数小于 |
0100 | MI(MInus) | N=1 | 负数 |
0101 | PL(PLus) | N=0 | 正数或零 |
0110 | VS(oVerflow set) | V=1 | 溢出 |
0111 | VC(oVerflow clear) | V=0 | 没有溢出 |
1000 |
HI(HIgh) | C=1,Z=0 |
无符号数大于 |
1001 | LS(Lower or Same) | C=0,Z=1 | 无符号数小于或等于 |
1010 | GE(Greater or Equal) | N=V | 有符号数大于或等于 |
1011 | LT(Less Than) | N!=V | 有符号数小于 |
1100 | GT(Greater Than) | Z=0,N=V | 有符号数大于 |
1101 | LE(Less or Equal) | Z=1,N!=V | 有符号数小于或等于 |
1110 | AL | 任何 | 无条件履行(默许) |
1111 | NV | 任何 | 从不履行 |