ARM程式狀態暫存器

2021-07-31 21:48:32 字數 1330 閱讀 3564

分類: linux

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版本的擴充套件。

ARM中的程式狀態暫存器(CPSR)

arm中的程式狀態暫存器 cpsr 2006.11.1 hokepoly 閱讀 8379 3130 292827 8765 4321 0nzc v保留if tm4m3m2 m1m0 nnegative less than iirq disable zzero ffiq disable ccarry ...

ARM中的程式狀態暫存器(CPSR)

2006.11.1 00 31 閱讀 8379 31 3029 2827 8 7654 3210 nzcv 保留ift m4m3 m2m1m0n negative less than iirq disable zzero ffiq disable ccarry borrow extend tstat...

基於ARM9程式狀態暫存器CPSR

定義 程式狀態暫存器 功能 反映資料運算狀態,控制系統模式等 特點 程式狀態暫存器不屬於通用暫存器 關於cpsr的訪問,arm專門為其設立了兩條指令 mrs cpsr到通用暫存器傳遞資料指令 msr 通用暫存器到cprs傳遞資料指令 1 msr 通用暫存器 cpsr 格式 msr 條件 cpsr s...