10.1.2 状态寄存器
程序状态寄存器(CPSR,current programmer status register)包含处理器的状态和一些控制标
记位。
条件标记,bits[31:28]
根据指令的执行结果设置,这些标记位是
N,bit[31]负数标记位
Z,bit[30]零标记位
C,bit[29]进位标记位
V,bit[28]溢出标记位
这些条件标记位可以在任何模式下读写
GE[3:0],bit[19:16]一些SIMD指令使用
IT[7:2],bit[15:10]Thumb2指令集的If-then条件指令使用
J, bit[24] 处理器是否处于Jazelle状态,和T, bit[5]一起决定执行的指令集
E, bit[9] 大小端状态位,0表示小端,1表示大端。
Mask bits, bits[8:6]
A, bit[8] 异步中止禁止位Asynchronous abort mask bit.
I, bit[7] IRQ 禁止位
F, bit[6] FIQ 禁止位
Q,bit[27]为1的话,表明执行一些指令时出现饱和或者溢出,一般与DSP有关。
T, bit[5] Thumb指令位,和J,bit[24]位决定了处理器的指令集,ARM,Thumb,Jazzelle或者
ThumbEE
M[4:0], bits[4:0]工作模式位,决定了处理器当前处于的工作模式。
处理器可以使用直接写入CPSR模式位来实现模式之间切换。更常见的是,处理器会由于异常事件而
自动切换模式。在用户模式下,无法改变处理器模式的PSR位[4:0]来切换模式和A,I和F位来使能或者
禁止异步中止、IRQ和FIQ。
10.1.3 协处理器CP15
CP15是系统控制协处理器,可控制处理器核的许多功能。它可以包含16个32位主寄存器。对CP15
的访问受权限控制,并且在用户模式下并非所有寄存器都可用。CP15寄存器访问指令指定所需的主寄存
器,指令中的其他字段用于更精确地定义访问并增加CP15中的物理32位寄存器的数量。CP15中的16个
主要寄存器的名称为c0至c15,但通常使用名称来引用。例如,CP15系统控制寄存器称为CP15.SCTLR。