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

2021-07-11 09:32:14 字數 2220 閱讀 3540

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/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)

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