歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> ARM寄存器總結

ARM寄存器總結

日期:2017/3/1 11:15:43   编辑:Linux編程
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

0

N

Z

C

V

Q

DNM ( RAZ )

I

F

T

M

M

M

M

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

系統

PC,R14~R0,CPSR

3)其他位

程序狀態寄存器的其他位保留,用作以後的擴展。

ARM核工作在用戶模式,R0~R15可用。

存儲器格式

ARM體系結構將存儲器看作是從零地址開始的字節的線性組合。字節零到字節三放置第一個字(WORD),字節四到字節七存儲第二個字,以此類推。

ARM體系結構可以用兩種方法存儲字數據,分別稱為大端格式和小端格式。

大端格式

在這種格式中,字數據的高位字節存儲在低地址中,而字數據的低位字節則存放在高地址中

小端格式

在這種格式中,字數據的高位字節存儲在高地址中,而字數據的低位字節則存放在低地址中

Copyright © Linux教程網 All Rights Reserved