(六)ARM狀態(tài)寄存器-PSR
ARM程序狀態(tài)寄存器Program State Register
在ARM模式中, 有16個數(shù)據(jù)寄存器和1或2個狀態(tài)寄存器是可以隨時訪問的.在特權(quán)模式(privileged mode)下, 對應的特殊組寄存器才可以使用.
CPSR當前程序狀態(tài)寄存器(Current Program State Register)
SPSR保存的程序狀態(tài)寄存器(Saved Program State Register), 有6個,主要是在處理異常的時候使用.
每一種處理器模式下都有一個專用的物理寄存器作為備份的程序狀態(tài)寄存器SPSR , 當特定的異常發(fā)生時,這個物理寄存器負責保存CPSR當前程序狀態(tài)寄存器的內(nèi)容, 當異常處理程序返回時,再將內(nèi)容恢復到當前程序狀態(tài)器中,繼續(xù)向下執(zhí)行原來程序.
結(jié)構(gòu)解析CPSR和保存它的SPSR寄存器因為都屬于狀態(tài)寄存器PSR,因此它們的結(jié)構(gòu)相同,如下:
保存最近的邏輯或者算術(shù)操作的信息;
控制中斷時使能;
設置處理器的工作模式;
狀態(tài)寄存器的各個位的功能如下圖:
其中,著重要注意的是高4位(28-31)和低8位(0-7).
注意:
-DNM(Do Not Modify):不同通過軟件進行賦值;
-條件標志位(Condition code flags): N,Z,C,V. 這些位可以通過邏輯或者算術(shù)操作, 或者MSR和LDM指令來操作. 處理器會測試這些標志位,以確定是否操作一些指令.
-控制位(低8位 I,F,T,M[4:0]),當發(fā)生異常時, 這些為的值將發(fā)生相應的變化.在特權(quán)模式下,也可以通過軟件來修改這些位.用的比較多.