天天看點

ARM寄存器

arm處理器共有37個寄存器:

      1) 31個通用寄存器,包括程式計數器(pc)。這些寄存器都是32位的;

      2)6個狀态寄存器。這些寄存器也是32位的,但是隻使用了其中的12位。

arm通用寄存器

通用寄存器(r0-r15)可分為三類:不分組寄存器r0~r7;分組寄存器r8~r14;程式計數器pc。

          1)不分組寄存器r0~r7

不分組寄存器r0~r7在所有處理器模式下,它們每一個都通路一樣的32位寄存器。它們是真正的通用寄存器,沒有體系結構所隐含的特殊用途。

2)分組寄存器r8~r14

分組寄存器r8~r14對應的實體寄存器取決于目前的處理器模式。若要通路特定的實體寄存器而不依賴目前的處理器模式,則要使用規定的名字。

寄存器r8~r12各有兩組實體寄存器:一組為fiq模式,另一組為除了fiq以外的所有模式。寄存器r8~r12沒有任何指定的特殊用途,隻是在作快速中斷處理時使用。寄存器r13,r14各對應6個分組的實體寄存器,1個用于使用者模式和系統模式,其它5個分别用于5種異常模式。寄存器r13通常用做堆棧指針,稱為sp;寄存器r14用作子程式連結寄存器,也稱為lr。

          3)程式計數器pc

寄存器r15用做程式計數器(pc)。

arm程式狀态寄存器

在所有處理器模式下都可以通路目前的程式狀态寄存器cpsr。cpsr包含條件碼标志,中斷禁止位,目前處理器模式以及其它狀态和控制資訊。每種異常模式都有一個程式狀态儲存寄存器spsr。當異常出現時,spsr用于儲存cpsr的狀态。

cpsr和spsr的格式如表所示:

                                                                                                                                    cpsr和spsr的格式

31

30

29

28

27

26~8

7

6

5

4

3

2

1

n

z

c

v

q

dnm ( raz )

i

f

t

m

         1)條件碼标志:

n,z,c,v大多數指令可以檢測這些條件碼标志以決定程式指令如何執行。

         2)控制位:

最低8位i,f,t和m位用做控制位。當異常出現時改變控制位。當處理器在特權模式下也可以由軟體改變。

中斷禁止位:i置1則禁止irq中斷;f置1則禁止fiq中斷。

t位:t=0訓示arm執行;t=1訓示thumb執行。在這些體系結構系統中,可自由地使用能在arm和thumb狀态之間切換的指令。

模式位:m0,m1,m2,m3和m4(m[4:0])是模式位,這些位決定處理器的工作模式,如表所示。

表arm工作模式m[4:0]

m[4:0]

模式

可通路的寄-存器

0b10000

使用者

pc,r14~r0,cpsr

0b10001

fiq

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

0b10010

irq

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

0b10011

管理

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

0b10111

中止

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

0b11011

未定義

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

0b11111

系統

3)其他位

程式狀态寄存器的其他位保留,用作以後的擴充。

    arm核工作在使用者模式,r0~r15可用。

        存儲器格式

arm體系結構将存儲器看作是從零位址開始的位元組的線性組合。位元組零到位元組三放置第一個字(word),位元組四到位元組七存儲第二個字,以此類推。

arm體系結構可以用兩種方法存儲字資料,分别稱為大端格式和小端格式。

       大端格式

在這種格式中,字資料的高位位元組存儲在低位址中,而字資料的低位位元組則存放在高位址中

       小端格式

在這種格式中,字資料的高位位元組存儲在高位址中,而字資料的低位位元組則存放在低位址中

繼續閱讀