|
ARM處理器共有37個寄存器:
1) 31個通用寄存器,包括程序計數(shù)器(PC)。這些寄存器都是32位的;
2)6個狀態(tài)寄存器。這些寄存器也是32位的,但是只使用了其中的12位。
ARM通用寄存器
通用寄存器(R0-R15)可分為三類:不分組寄存器R0~R7;分組寄存器R8~R14;程序計數(shù)器PC。
1)不分組寄存器R0~R7
不分組寄存器R0~R7在所有處理器模式下,它們每一個都訪問一樣的32位寄存器。它們是真正的通用寄存器,沒有體系結(jié)構(gòu)所隱含的特殊用途。
2)分組寄存器R8~R14
分組寄存器R8~R14對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式。若要訪問特定的物理寄存器而不依賴當(dāng)前的處理器模式,則要使用規(guī)定的名字。
寄存器R8~R12各有兩組物理寄存器:一組為FIQ模式,另一組為除了FIQ以外的所有模式。寄存器R8~R12沒有任何指定的特殊用途,只是在作快速中斷處理時使用。寄存器R13,R14各對應(yīng)6個分組的物理寄存器,1個用于用戶模式和系統(tǒng)模式,其它5個分別用于5種異常模式。寄存器R13通常用做堆棧指針,稱為SP;寄存器R14用作子程序鏈接寄存器,也稱為LR。
3)程序計數(shù)器PC
寄存器R15用做程序計數(shù)器(PC)。
ARM程序狀態(tài)寄存器
在所有處理器模式下都可以訪問當(dāng)前的程序狀態(tài)寄存器CPSR。CPSR包含條件碼標志,中斷禁止位,當(dāng)前處理器模式以及其它狀態(tài)和控制信息。每種異常模式都有一個程序狀態(tài)保存寄存器SPSR。當(dāng)異常出現(xiàn)時,SPSR用于保存CPSR的狀態(tài)。
CPSR和SPSR的格式如表所示:
1)條件碼標志:
N,Z,C,V大多數(shù)指令可以檢測這些條件碼標志以決定程序指令如何執(zhí)行。
2)控制位:
最低8位I,F(xiàn),T和M位用做控制位。當(dāng)異常出現(xiàn)時改變控制位。當(dāng)處理器在特權(quán)模式下也可以由軟件改變。
中斷禁止位:I置1則禁止IRQ中斷;F置1則禁止FIQ中斷。
T位:T=0指示ARM執(zhí)行;T=1指示Thumb執(zhí)行。在這些體系結(jié)構(gòu)系統(tǒng)中,可自由地使用能在ARM和Thumb狀態(tài)之間切換的指令。
模式位:M0,M1,M2,M3和M4(M[4:0])是模式位,這些位決定處理器的工作模式,如表所示。
3)其他位
程序狀態(tài)寄存器的其他位保留,用作以后的擴展。
ARM核工作在用戶模式,R0~R15可用。
存儲器格式
ARM體系結(jié)構(gòu)將存儲器看作是從零地址開始的字節(jié)的線性組合。字節(jié)零到字節(jié)三放置第一個字(WORD),字節(jié)四到字節(jié)七存儲第二個字,以此類推。
ARM體系結(jié)構(gòu)可以用兩種方法存儲字數(shù)據(jù),分別稱為大端格式和小端格式。
大端格式
在這種格式中,字數(shù)據(jù)的高位字節(jié)存儲在低地址中,而字數(shù)據(jù)的低位字節(jié)則存放在高地址中
小端格式
在這種格式中,字數(shù)據(jù)的高位字節(jié)存儲在高地址中,而字數(shù)據(jù)的低位字節(jié)則存放在低地址中
|
|