首页 > 代码库 > CPSR & SPSR 程序状态寄存器的访问 笔记

CPSR & SPSR 程序状态寄存器的访问 笔记

CPSR & SPSR 




一行短短的汇编触发的学习笔记~



ARM 微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传递数据。程序状态寄存器(*PSR) 的访问指令包括一下两条:




--------------------------------------------------------------------------------------------------------------------------------------------------

关于MRS指令:

1.         当需要改变程序状态寄存器的内容时,可用MRS将程序状态寄存器的内容读入通用寄存器,修改后再写回到程序状态寄存器。

2.         当在异常处理或者进程切换时, 需要保存程序状态寄存器的值,可以先用该指令读出程序状态寄存器的值,然后保存.


MRS R0, SPSR; //把SPSR的值传送到R0寄存器中去.

---------------------------------------------------------------------------------------------------------------------------------------------


关于 MSR指令:

          MSR指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。域用于设置程序状态寄存器中需要操作的位。


下图可以看到,32bits的 PSR可以分为4个域。F S X C


MSR CPSR_c,R0 ; //传送R0 到SPSR中,但仅仅修改CPSR中的控制域


-----------------------------------------------------------------------------------------------------------------------------------------




CPSR : current program status register




嘿嘿~ ARM的7种工作模式由CPSR寄存器的M[0:4]5个位来指明


SPSR:      Saved Program Status Register


SPSR用来进行异常处理,有以下功能

1.保存ALU中的当前操作信息。

2.控制允许和禁止中断。

3.设置处理器的运行模式。







CPSR & SPSR 程序状态寄存器的访问 笔记