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.设置处理器的运行模式。