ARM暫存器介紹

2021-04-17 11:57:30 字數 3851 閱讀 5051

arm微處理器支援7種執行模式,分別為:

1.使用者模式(usr):arm處理器正常的程式執行狀態;

2.快速中斷模式(fiq):用於高速資料傳輸或通道管理;

3.外部中斷模式(irq):用於通用的中斷處理;

4.管理模式(svc):作業系統使用的保護模式;

5.資料訪問終止模式(abt):當資料或指令預取終止時進入該模式,用於虛擬儲存及儲存保護;

6.系統模式(sys):執行具有特權的作業系統任務;

7.未定義指令中止模式(und):當未定義指令執行時進入該模式,可用於支援硬體協處理器的軟體**

arm有37個暫存器,其中31個通用暫存器,6個狀態暫存器。

1、不分組暫存器(r0-r7)

在所有的處理器模式下指的都時同一物理暫存器。

2、備份暫存器(r8-r14)

對於r8-r12來說,除在快速中斷模式下,每個模式對應相同物理暫存器,所以在fiq模式下可不必保護和恢復中斷現場。

對於r13-r14來說,每個暫存器對應6個不同的物理暫存器,其中乙個是使用者模式和系統模式共用的。

暫存器r13常用做棧指標sp,除使用者和系統模式外,其他模式在使用時的名字構成為r13_。

暫存器r14又被稱為連線暫存器(lr),除使用者和系統模式外,其他模式在使用時的名字構成為r14_。

3、程式計數器r15

4、程式狀態暫存器

cpsr(當前程式狀態暫存器)可以在任何處理器模式下被訪問。同時除了使用者和系統模式以外,每中處理器模式下都有乙個專用的物理狀態暫存器,稱為spsr(備份程式狀態暫存器)。31

30 29

28 27 - 0 8 7

6 54 3

2 10 n

z cv i

f tm4 m3

m2 m1

m0

n 本位設定成當前指令運算結果的bit[31]的值

當兩個補碼表示的有符號整數運算時,n=1表示運算的結果為負數,n=0 表示結果為正數或零

z z=1表示運算結果是0,z=0表示運算結果不是零

對於cmp指令,z=1表示進行比較的兩個數大小相等

c 在加法指令中(包括比較指令cmn),結果產生進製了,則c=1,表示無符號數運算發生上溢位,其他情況下c=0

在減法指令中(包括比較指令cmp),結果產生借位了,則c=0,表示無符號數運算發生下溢位,其他情況下c=1

對於包含移位操作的非加/減法運算指令,c中包含最後一次被溢位的位的數值,對於其他非加/減法運算指令,c位的值通常不受影響

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

其他的指令通常不影響v位

i中斷禁止位

當i=1時禁止irq中斷。

當f=1時禁止fiq中斷。

t控制位,用來控制指令執行的狀態,即說明本指令是arm指令還是thumb指令。對於不同版本的arm處理器,t控制位的含義是有些不同的。

對於arm v3及更低的版本和arm v4的非t系列版本的處理器,沒有arm和thumb指令的切換,所以t始終為0。

對於arm v4及更高版本的t系列處理器,t控制位含義如下。

當t=0,表示執行arm指令。

當t=1,表示執行thumb指令。

對於arm v5及更高的版本的非t系列處理器,t控制位的含義如下。

當t=0表示執行arm指令。

當t=1表示強制下一條執行的指令產生為定義指令中斷。

使用者模式

系統模式

特權模式

中止模式

未定義指令模式

外部中斷模式

快速中斷模式 r0

r0 r0

r0 r0

r0 r0

r1 r1

r1          r1

r1 r1

r1 r2

r2 r2

r2 r2

r2 r2

r3 r3

r3 r3

r3 r3

r3 r4

r4 r4

r4 r4

r4 r4

r5 r5

r5 r5

r5 r5

r5 r6

r6 r6

r6 r6

r6 r6

r7 r7

r7 r7

r7 r7

r7 r8

r8 r8

r8 r8

r8r8_fiq r9

r9 r9

r9 r9

r9r9_fiq

r10r10

r10r10

r10r10

r10_fiq

r11r11

r11r11

r11r11

r11_fiq

r12r12

r12r12

r12r12

r12_fiq

r13r13

r13_svc

r13_abt

r13_und

r13_inq

r13_fiq

r14r14

r14_svc

r14_abt

r14_und

r14_inq

r14_fiq pc

pc pc

pc pc

pc pc

cpsr

cpsr

cpsr

spsr_svc

cpsr

spsr_abt

cpsr

spsr_und

cpsr

spsr_inq

cpsr

spsr_fiq

arm狀態和thumb狀態下暫存器的對應關係

1> r0 - r7是相同的

2> cpsr和spsr是相同的

3> thumb狀態下的sp相當於arm狀態的r13

4> thumb狀態下的lr相當於arm狀態的r14

5> thumb狀態下的程式計數器相當於arm狀態下的r15

thumb狀態下的暫存器   

使用者模式

系統模式

特權模式

中止模式

未定義指令模式

外部中斷模式

快速中斷模式 r0

r0 r0

r0 r0

r0 r0

r1 r1

r1          r1

r1 r1

r1 r2

r2 r2

r2 r2

r2 r2

r3 r3

r3 r3

r3 r3

r3 r4

r4 r4

r4 r4

r4 r4

r5 r5

r5 r5

r5 r5

r5 r6

r6 r6

r6 r6

r6 r6

r7 r7

r7 r7

r7 r7

r7 sp

spsp_svc

sp_abt

sp_und

sp_inq

sp_fiq lr

lrlr_svc

lr_abt

lr_und

lr_inq

lr_fiq pc

pc pc

pc pc

pc pc

cpsr

cpsr

cpsr

spsr_svc

cpsr

spsr_abt

cpsr

spsr_und

cpsr

spsr_inq

cpsr

spsr_fiq

ARM暫存器介紹

arm暫存器介紹arm處理器共有37個暫存器。其中包括 31個通用暫存器,包括程式計數器 pc 存內。這些暫存器都是32位暫存器。6個狀態暫存器。這些暫存器都是32位暫存器,但日前只使用了其中12位。arm處理器共有7種不同的處理器模式,在每一種處理器模式中有組相應的暫存器組。任意時刻 也就是任意的...

ARM暫存器整理

arm有37個暫存器,31個通用暫存器 r0 r15 32位 和6個狀態暫存器 1.通用暫存器 使用者模式 系統模式 特權模式 中止模式 未定義指令模式 外部中斷模式 快速中斷模式。可分為 未備份暫存器r0 r7 備份暫存器 r8 r14 程式計數器 pc r15 注 r0 r7在所有模式下指的同一...

arm暫存器別名

apcs,arm 過程呼叫標準 arm procedure call standard 提供了緊湊的編寫例程的一種機制,定義的例程可以與其他例程交織在一起。最顯著的一點是對這些例程來自 沒有明確的限制。它們可以編譯自 c pascal 也可以是用組合語言寫成的。apcs 對我們通常稱為 r0 到 r...