ARM程式狀態暫存器
ARM體系結構包含1個當前程式狀態暫存器(CPSR)和5個各份的程式狀態暫存器(SPSRs)。使用MSR和MRS指令來設定和讀取這些暫存器。
當前程式狀態暫存器(CPSR),持有關於當前處理器狀態的資訊。其他5個各份的程式狀態暫存器(SPSR),每個特權模式都有一個,持有完成在這個模式下的例外處理時處理器必須返回的關於狀態的資訊。
SPSR用來進行異常處理,其功能包括:
(1)儲存ALU中的當前操作資訊。
(2)控制允許和禁止中斷。
(3)設定處理器的執行模式。
程式狀態暫存器的每一位的安排如圖所示。
圖 程式狀態暫存器格式
1.條件碼標誌(Condition Code Flags)
N、Z、C、V均為條件碼標誌位。它們的內容可被算術或邏輯運算的結果所改變,並且可以決定某條指令是否被執行。
在ARM狀態下,絕大多數的指令都是有條件執行的;在Thumb狀態下,僅有分支指令是有條件執行的。條件碼標誌位的各位具體含義如表1所示。
表1 條件碼標誌位的具體含義
2.控制位
PSR的低8位(包括I、F、T和M[4∶0])稱為控制位,當發生異常時這些位可以被改變。如果處理器執行特權模式,那麼這些位也可以由程式修改。
(1)中斷禁止位I、F。
·I=1,禁止IRQ中斷;
·F=1,禁止FIQ中斷。
(2)T標誌位:該位反映處理器的執行狀態。
·對於ARM體系結構v5及以上版本的T系列處理器,當該位為l時,程式運行於Thumb狀態,否則運行於ARM狀態。
·對於ARM體系結構v5及以上版本的非T系列處理器,當該位為1時,執行下一條指令以引起位定義的指令異常;當該位為0時,表示運行於ARM狀態。
(3)執行模式位M[4∶0]:MO、M1、M2、M3、M4是模式位,這些位決定了處理器的執行模式。具體含義如表2所示。
表2 執行模式位M[4∶0]的具體含義
由表2可知,並不是所有的執行模式位的組合都是有效的,其他的組合結果會導致處理器進入一個不可恢復的狀態。
3.保留位
PSR中的其餘位為保留位,當改變PSR中的條件碼標誌位或者控制位時,保留位不要改變,在程式中也不要使用保留位來儲存資料。保留位將用於ARM版本的擴充套件。