ARM程序状态寄存器
扫描二维码
随时随地手机看文章
ARM体系结构包含一个当前程序状态寄存器(CPSR)和五个备份的程序状态寄存器(SPSRs)。备份的程序状态寄存器用来进行异常处理,其功能包括:
─ 保存ALU中的当前操作信息
─ 控制允许和禁止中断
─ 设置处理器的运行模式
条件码标志(Condition Code Flags)
N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。
在ARM状态下,绝大多数的指令都是有条件执行的。
在Thumb状态下,仅有分支指令是有条件执行的。
控制位
PSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。
─ 中断禁止位I、F:
I=1 禁止IRQ中断;
F=1 禁止FIQ中断。
─ T标志位:该位反映处理器的运行状态。
对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。
对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。
─ 运行模式位M[4:0]:M0、M1、M2、M3、M4是模式位。这些位决定了处理器的运行模式。
并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态。
保留位
PSR中的其余位为保留位,当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。