(六)ARM状态寄存器-PSR
ARM程序状态寄存器Program State Register
在ARM模式中, 有16个数据寄存器和1或2个状态寄存器是可以随时访问的.在特权模式 (privileged mode) 下, 对应的特殊组寄存器才可以使用.
CPSR
当前程序状态寄存器 (Current Program State Register)
SPSR
保存的程序状态寄存器 (Saved Program State Register), 有6个,主要是在处理异常的时候使用.
每一种处理器模式下都有一个专用的物理寄存器作为备份的程序状态寄存器SPSR , 当特定的异常发生时,这个物理寄存器负责保存CPSR当前程序状态寄存器的内容, 当异常处理程序返回时,再将内容恢复到当前程序状态器中,继续向下执行原来程序.
结构解析
CPSR和保存它的SPSR寄存器因为都属于状态寄存器PSR,因此它们的结构相同,如下:
- 保存最近的逻辑或者算术操作的信息;
- 控制中断时使能;
- 设置处理器的工作模式;
状态寄存器的各个位的功能如下图:
其中,着重要注意的是高4位(28-31)和低8位(0-7).
注意:
- DNM(Do Not Modify):不同通过软件进行赋值;
- 条件标志位(Condition code flags): N,Z,C,V. 这些位可以通过逻辑或者算术操作, 或者 MSR
和 LDM
指令来操作. 处理器会测试这些标志位,以确定是否操作一些指令.
- 控制位(低8位 I,F,T,M[4:0]),当发生异常时, 这些为的值将发生相应的变化.在特权模式下,也可以通过软件来修改这些位.用的比较多.