Cortex-M3/M4的寄存器之程序状态寄存器
程序状态寄存器包括以下三个状态寄存器:应用PSR(APSR),执行PSR(EPSR),中断PSR(IPSR)。这三个寄存器可以通过一个组合寄存器访问,该寄存器在有些文献中也被称作 xPSR。对于 ARM 汇编器,在访问xPSR 时使用的是 PSR。例如:
MRS rO, PSR;读组合程序状态字 MSR PSR, rO;写组合程序状态字
还可以单独访问每个 PSR 。例如:
MRS rO, APSR;将标志状态读入 RO MRS rO, IPSR;读取异常/中断状态 MSR APSR, rO;写标志状态
注意:
- 软件代码无法直接使用 MRS(读出为 0)或 MSR 直接访问 EPSR。
- IPSR 为只读的,可以从组合PSR(xPSR)中读出。
注意,APSR 和 EPSR 的一些位域在 ARMv6-M 架构(如 Cortex-M0)中是不可用的,且它们和ARM7TDMI等经典的 ARM 处理器之间也存在很大的差异。若和 ARM7的当前程序状态寄存器(CPSR)相比较,可能会发现 ARM7 中的某些位域已经不存在了。由于 CortexM3 中没有 ARM7 中定义的操作模式,因此模式位(M)也就给去掉了。Thumb(T)位被移到了第 24 位,中断状态(1和F)位被新的中断屏蔽寄存器(PRIMASK)代替,已经从 PSR 中分离出来。