摘要: 本文主要介紹了Armv8寄存器都有哪些。
關鍵字:ARM64、Armv8、體系結構、ARM架構、通用寄存器、特殊寄存器
1. 通用寄存器
AArch64 執(zhí)行狀態(tài)支持31個64位的通用寄存器,分別是X0-X30;如果使用Xn(如X0,X1,X2...)表示64位寄存器,如果使用Wn(如W0,W1,W2...)表示Xn寄存器的低32位數據。

AArch32 執(zhí)行狀態(tài)支持16個32位的通用寄存器。
通用寄存器在函數調用過程中起到特殊作用。在ARM64體系結構的過程調用標準(Procedure Call Standard,PCS)中進行了規(guī)定。
PCS 定義哪些寄存器可以被破壞,哪些寄存器不能被破壞。如果寄存器可能損壞,則調用的函數可以覆蓋而無需恢復,具體規(guī)則如下表所示:

例如一個函數foo(),被main()調用

函數foo()可以使用的寄存器,且不需要保存的寄存器是X0-X15,但如果foo()要使用X19-X28必須先將其保存到堆棧中,然后在返回之前從堆棧中恢復。
XR(X8)寄存器,是一個間接結果寄存器。如果返回一個結構體,那么foo()中結構體的內存將又調用者分配,指向調用者分配的用于返回結構體的內存指針。
IP0-IP1這些寄存器是過程調用中可以被破壞的寄存器,這些寄存器在函數被調用和執(zhí)行調用函數第一條指令之間這段時間被破壞。鏈接器使用這些寄存器在調用者和被調用者之間插入膠合代碼。最常見使用膠合代碼的例子是A64的分支指令如果目標超出范圍,則鏈接器需要生成一個膠合代碼來擴展分支的范圍。
FP(X29)幀指針。
LR(X30)函數調用鏈接寄存器。
1. 處理器狀態(tài)
AArch64體系結構使用PSTAE(Processor state)寄存器來表示當前處理器狀態(tài)。
2.1數據處理標志位
N:負數標志位,一個二進制補碼,結果為負數則N=1;否則N=0;
Z:零標志位,如果結果為零,則Z=1;否則Z=0;
C:進位標志位,如果結果有進位,則C=1;否則C=0;
V:溢出標志位,如果結果有溢出,則V=1;否則V=0;
2.2異常掩碼標志位
D:調試異常掩碼位。
A:系統錯誤屏蔽位。
I:IRQ屏蔽位。
F:FIQ屏蔽位。
以上標志位,當為0是表示不屏蔽這個異常,當為1時表示屏蔽這個異常。
2.3運行狀態(tài)
SS:軟件單步。該位為1,表示在異常處理時使能了軟件單步功能。
IL:非法執(zhí)行狀態(tài)位。
EL:當前異常等級。0:表示EL0;1:表示EL1;2:表示EL2;3:表示EL3;
nRW:當前執(zhí)行狀態(tài)。0:表示AArch64;1:表示AArch32;
SP:堆棧指針選擇寄存器。0:表示選擇SP0;1:表示SPx;
2. 特殊寄存器
3.1 零寄存器
零寄存器顧名思義,這些寄存器的內容全是0,可以用做源寄存器,也可以用作目標寄存器。WZR是32位的零寄存器,XZR是64位的零寄存器。
3.2 PC(Program Counter)程序指針寄存器
PC指針寄存器通常用來指向當前運行指令的下一條指令的地址,用于控制程序中指令的運行順序,但編程人員不能通過指令來直接訪問。
3.3 SP(Stack Pointer)堆棧指針寄存器
Armv8體系結構支持4個異常等級,每個等級都有一個專門的SP寄存器SP_ELn.
SP_EL0: EL0 下的棧指針寄存器
SP_EL1: EL1 下的棧指針寄存器
SP_EL2: EL2 下的棧指針寄存器
SP_EL3: EL3 下的棧指針寄存器
3.4 SPSR(Saved Program Status Register)備份程序狀態(tài)寄存器
當我們運行一個異常處理程序時,處理器會把PSTATE寄存器的值暫時保存在備份程序狀態(tài)寄存器(SPSR)里,當異常處理完成并返回時,再把SPSR的值恢復到PSTATE寄存器。
3.5 ELR(Exception Link Register)異常鏈接寄存器
ELR用于存放異常返回地址。
3. 系統寄存器
系統寄存器用于配置處理器和控制系統,例如MMU和異常處理。
數據處理或加載/存儲指令不能直接使用系統寄存器。需要將系統寄存器的內容讀入X寄存器,對其進行操作,然后再寫回系統寄存器。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
關于億道電子
億道電子技術有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內資深的研發(fā)工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業(yè)客戶提供研發(fā)、設計、管理過程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產品設計周期,提升產品可靠性。
20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰(zhàn)略合作伙伴關系,并作為他們在中國區(qū)的主要分銷合作伙伴服務了數千家中國本土客戶,為客戶提供從芯片級開發(fā)工具、EDA 設計工具、軟件編譯以及測試工具、結構設計工具、仿真工具、電氣設計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經驗積累,真正的幫助客戶實現了讓研發(fā)更簡單、更可靠、更高效的目標。

歡迎關注“億道電子”公眾號
了解更多研發(fā)工具軟件知識

首頁 > 新聞資訊
