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

2021-09-06 02:45:01 字數 2176 閱讀 7871

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

tstate bit

voverflow

m0~4

mode bits

1、條件碼標誌

n、z、c、v均為條件碼標誌位。它們的內容可被算術或邏輯運算的結果所改變,並且可以決定某條指令是否被執行。條件碼標誌各位的具體含義如下表所示:

標誌位含                                義

n當用兩個補碼表示的帶符號數進行運算時,n=1表示運算的結果為負數;n=0表示運算的結果為正數或零

zz=1表示運算的結果為零,z=0表示運算的結果非零。

c可以有4種方法設定c的值:

-加法運算(包括cmp):當運算結果產生了進製時(無符號數溢位),c=1,否則c=0。

-減法運算(包括cmp):當運算時產生了借位時(無符號數溢位),c=0,否則c=1。

-對於包含移位操作的非加/減運算指令,c為移出值的最後一位。

-對於其它的非加/減運算指令,c的值通常不會改變。

v可以有2種方法設定v的值:

-對於加減法運算指令,當運算元和運算結果為二進位制的補碼表示的帶符號數時,v=1表示符號位溢位

-對於其它的非加/減運算指令,v的值通常不會改變。

q在arm v5及以上版本的e系列處理器中,用q標誌位指示增強的dsp運算指令是否發生了溢位。在其它版本的處理器中,q標誌位無定義

在arm狀態下,絕大多數的指令都是有條件執行的;在thumb狀態下,僅有分支指令是條件執行的。

2 控制位

cpsr的低8位(包括i、f、t和m[4:0])稱為控制位,當發生異常時這些位可以被改變。如果處理器執行於特權模式時,這些位也可以由程式修改。

·中斷禁止位i、f:置1時,禁止irq中斷和fiq中斷。

·t標誌位:該位反映處理器的執行狀態。當該位為1時,程式執行於thumb狀態,否則執行於arm狀態。該訊號反映在外部引腳tbit上。在程式中不得修改cpsr中的tbit位,否則處理器工作狀態不能確定。

·執行模式位m[4:0]:這幾位是模式位,這些位決定了處理器的執行模式。具體含義如下表所示:

·保留位:cpsr中的其餘位為保留位,當改變cpsr中的條件碼標誌位或者控制位時,保留位不要改變,在程式中也不要用保留位儲存資料。保留位將用於arm版本的擴充套件。

m[4:0]

處理器模式

arm模式可訪問的暫存器

thumb模式可訪問的暫存器

0b10000

使用者模式

pc,cpsr,r0~r14

pc,cpsr,r0~r7,lr,sp

0b10001

fiq模式

pc,cpsr,spsr_fiq,r14_fiq~r8_fiq,r0~r7

pc,cpsr,spsr_fiq,lr_fiq,sp_fiq,r0~r7

0b10010

irq模式

pc,cpsr,spsr_irq,r14_irq~r13_irq,r0~r12

pc,cpsr,spsr_irq,lr_irq,sp_irq,r0~r7

0b10011

管理模式

pc,cpsr,spsr_svc,r14_svc~r13_svc,r0~r12

pc,cpsr,spsr_svc,lr_svc,sp_svc,r0~r7

0b10111

中止模式

pc,cpsr,spsr_abt,r14_abt~r13_abt,r0~r12

pc,cpsr,spsr_abt,lr_abt,sp_abt,r0~r7

0b11011

未定義模式

pc,cpsr,spsr_und,r14_und~r13_und,r0~r12

pc,cpsr,spsr_und,lr_und,sp_und,r0~r7

0b11111

系統模式

pc,cpsr,r0~r14

pc,cpsr,lr,sp,r0~r74

ARM程式狀態暫存器

分類 linux arm體系結構包含1個當前程式狀態暫存器 cpsr 和5個各份的程式狀態暫存器 spsrs 使用msr和mrs指令來設定和讀取這些暫存器。當前程式狀態暫存器 cpsr 持有關於當預處理器狀態的資訊。其他5個各份的程式狀態暫存器 spsr 每個特權模式都有乙個,持有完成在這個模式下的...

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 ...

基於ARM9程式狀態暫存器CPSR

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