CPSR:程序狀態寄存器(current program status register),cpsr在用戶級編程時用於存儲條件碼。CPSR包含條件碼標志,中斷禁止位,當前處理器模式以及其他狀態和控制信息。
SPSR:程序狀態保存寄存器。SPSR用於保存CPSR的狀態,以便異常返回后恢復異常發生時的工作狀態。
CPSR(當前程序狀態寄存器)在任何處理器模式下被訪問。它包含了條件標志位、中斷禁止位、當前處理器模式標志以及其他的一些控制和狀態位。每一種處理器模式下都有一個專用的物理狀態寄存器,稱為SPSR(備份程序狀態寄存器)。當特定的異常中斷發生時,這個寄存器用於存放當前程序狀態寄存器的內容。在異常中斷退出時,可以用SPSR來恢復CPSR。由於用戶模式和系統模式不是異常中斷模式,所以他沒有SPSR。當用戶在用戶模式或系統模式訪問SPSR,將產生不可預知的后果。
CPSR格式如下所示。SPSR和CPSR格式相同。
31 30 29 28 27 26 7 6 5 4 3 2 1 0
N Z C V Q DNM(RAZ) I F T M4 M3 M2 M1 M0
***條件標志位***
N——本位設置成當前指令運算結果的bit[31]的值。當兩個表示的有符號整數運算時,n=1表示運算結果為負數,n=0表示結果為正書或零。
z——z=1表示運算的結果為零;z=0表示運算的結果不為零。對於CMP指令,Z=1表示進行比較的兩個數大小相等。
C——下面分四種情況討論C的設置方法:
在加法指令中(包括比較指令CMP),當結果產生了進位,則C=1,表示無符號運算發生上溢出;其他情況C=0。