手冊:ARM .pdf
章節:’ Model-->A2.
ARM處理器總共有37個寄存器:
1、31個通用寄存器
2、6個程序狀態寄存器
---------------------------------------
1、31個通用寄存器:
R0-R14共15個寄存器,加上PC指針共16個寄存器。
注意有后綴的寄存器,例如:R13_
表示SVC模式下面的R13寄存器。同理其他帶后綴的寄存器。
再來把各種模式下的寄存器數一遍。通用寄存器共31個。
2、程序狀態寄存器:
CPSR加上帶后綴的共6個程序狀態寄存器。
-------------------------------------------------------------
R0-R15被劃分為三類:
1、不分組寄存器,R0-R7,不管在什么工作模式下面,用的是同一個寄存器。
2、分組寄存器,R8-R14,不同工作模式下面,用的可能是不同的寄存器。
3、PC指針, 15,R15,即程序計數器。
-----------------------------------------------------
在通用寄存器下面,有3個特殊的寄存器:
1、R13用來充當SP堆棧指針。在程序中R13通常用來充當堆棧指針。
2、R14用來充當鏈接寄存器LR。有兩個特殊的功能:
在每種工作模式下,保存函數的返回地址。
當程序發生異常時,比如中斷發生時,去執行中斷處理函數,中斷處理函數執行完成,返回地址也是被保存在R14中。
3、R15程序計數器,PC指針。
------------------------------------------------------------
程序狀態寄存器: 手冊A2.
ARM所有工作模式下都可以訪問程序狀態寄存器寄存器CPSR。
CPSR包含條件碼標志、中斷禁止位、當前處理器模式以及其它狀態和控制信息。
CPSR在每種"異常模式"下都有一個對應的
物理寄存器——程序狀態保存寄存器
SPSR。當異常出現時,SPSR用于保存
CPSR的值,以便異常返回后恢復異常發生時的工作狀態。
格式在感覺寄存器中,信息可能受到,意義:
比較重要的幾個字段:
N Z I F M
N:比較兩個數字大小時
a-b 如果a
如果a>b,則N=0
Z: a-b在感覺寄存器中,信息可能受到,如果a==b 則 Z=1,否則為0
I:如果為1,不能產生普通中斷
F:如果為1,不能產生快速中斷
M:0 1 2 3 4 ,共占了5位,表明處理器不能的工作模式,
想知道處理器現在的工作模式就訪問CPSR寄存器,如果M位是10000,則表示為User模式
也可以設置M位,改為模式,則把M設置為11111