程序状态寄存器(Program Status Register,简称PSR)是计算机体系结构中的寄存器之一,用于存储CPU的状态信息,它是ARM体系结构中的一种寄存器,我们来看一下它的格式是什么。
PSR是一个32位的寄存器,它由31个二进制位组成,这些位被分成了不同的域。按位组织,它的格式是这样的:
```
+-+------------------+--+------+----+
|N| Z |C | V | Q |
+-+------------------+--+------+----+
| | |I | | |
+-+------------------+--+------+----+
```
其中,最上面的4个二进制位Q、V、C和Z分别对应着四个条件码寄存器,即饱和标志、溢出标志、进位标志和零标志,用于表征运算结果是否满足相应条件。
其中N、I和其他未列出的位共同构成了程序状态字(Program Status Word,简称PSW),注意,不要与PSR混淆。其中,N表示结果为负数,I表示当前CPU处于中断屏蔽状态,其他未列表的位都是未定义的。
常用的PSR域有C、N、V、Z和T5个位,这些位的含义如下:
PSR寄存器的设置和清除都是通过MRS(Move from the PSR)和MSR(Move to the PSR)指令来完成的。MRS指令用于将PSR寄存器中的内容传输到通用寄存器中,MSR指令用于将通用寄存器的内容传输到PSR寄存器中。
对于PSR寄存器中的标志位,则可以使用相关的标志位操作指令来设置或清除。例如,BIC指令可以将标志位清0,ORR指令可以将标志位设置为1,这些指令都可以通过指定相应的标志位的字面值来操作PSR寄存器中的标志位。
程序状态寄存器在各种应用场景中都有重要作用,例如: