Z(30):Z=1 表示运算结果为零, Z=0 表示运算结果不为零,对于 CMP 指令, Z=1 表示进行比较的两个数大小相等
C(29):在加法指令中,当结果产生了进位,则 C=1,表示无符号数运算发生上溢,其它情况下 C=0。在减法指令中,当运算中发生借位,则 C=0,表示无符号数运算发生下溢,其它情况下 C=1。对于包含移位操作的非加/减法运算指令, C 中包含最后一次溢出的位的数值,对于其它非加/减运算指令, C 位的值通常不受影响
V(28):对于加/减法运算指令,当操作数和运算结果表示为二进制的补码表示的带符号数时, V=1 表示符号位溢出,通常其他位不影响 V 位
Q(27):仅 ARM v5TE_J 架构支持,表示饱和状态, Q=1 表示累积饱和, Q=0 表示累积不饱和
IT[1:0](26:25):和 IT[7:2](15:10)一起组成 IT[7:0],作为 IF-THEN 指令执行状态
J(24):仅 ARM_v5TE-J 架构支持, J=1 表示处于 Jazelle 状态,此位通常和 T(5)位一起表示当前所使用的指令集
CPSR[24](J) | CPSR[5](T) | 指令集 |
0 | 0 | ARM |
0 | 1 | Thumb |
1 | 1 | ThumbEE |
1 | 0 | Jazelle |
GE[3:0](19:16): SIMD 指令有效,大于或等于。
IT[7:2](15:10): 参考 IT[1:0]。
E(9): 大小端控制位, E=1 表示大端模式, E=0 表示小端模式。
A(8): 禁止异步中断位, A=1 表示禁止异步中断。
I(7): I=1 禁止 IRQ, I=0 使能 IRQ。
F(6): F=1 禁止 FIQ, F=0 使能 FIQ。
T(5): 控制指令执行状态,表明本指令是 ARM 指令还是 Thumb 指令,通常和 J(24)起表明指令类型,参考 J(24)位
CPSR[4:0](M) | 模式 |
10000 | User模式 |
10001 | FIQ模式 |
10010 | IRQ模式 |
10011 | Supervisor(SVC)模式 |
10110 | Monitor(MON)模式 |
10111 | Abort(ABT)模式 |
11010 | Hyp(HYP)模式 |
11011 | Undef(UND)模式 |
11111 | System(SYS)模式 |