【方輝專欄】ARM64體系結構編程與實踐學習筆記(二) Armv8寄存器
2022-07-20
摘要: 本文主要介紹了Armv8寄存器都有哪些。關鍵字:ARM64、Armv8、體系結構、ARM架構、通用寄存器、特殊寄存器 1. 通用寄存器AArch64 執行狀態支持31個64位的通用寄存器,分別是X0-X30;如果使用Xn(如X0,X1,X2...)表示64位寄存器,如果使用Wn(如W0,W1,W2...)表示Xn寄存器的低32位數據。AArch32 執行狀態支持16個32位的通用寄存器。通用寄存器在函數調用過程中起到特殊作用。在ARM64體系結構的過程調用標準(Procedure Call Standard,PCS)中進行了規定。PCS 定義哪些寄存器可以被破壞,哪些寄存器不能被破壞。如果寄存器可能損壞,則調用的函數可以覆蓋而無需恢復,具體規則如下表所示:例如一個函數foo(),被main()調用函數foo()可以使用的寄存器,且不需要保存的寄存器是X0-X15,但如果foo()要使用X19-X28必須先將其保存到堆棧中,然后在返回之前從堆棧中恢復。XR(X8)寄存器,是一個間接結果寄存器。如果返回一個結構體,那么foo()中結構體的內存將又調用者分配,指向調用者分配的用于返回結構體的內存指針。IP0-IP1這些寄存器是過程調用中可以被破壞的寄存器,這些寄存器在函數被調用和執行調用函數第一條指令之間這段時間被破壞。鏈接器使用這些寄存器在調用者和被調用者之間插入膠合代碼。最常見使用膠合代碼的例子是A64的分支指令如果目標超出范圍,則鏈接器需要生成一個膠合代碼來擴展分支的范圍。FP(X29)幀指針。LR(X30)函數調用鏈接寄存器。1. 處理器狀態AArch64體系結構使用PSTAE(Processor state)寄存器來表示當前處理器狀態。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運行狀態SS:軟件單步。該位為1,表示在異常處理時使能了軟件單步功能。IL:非法執行狀態位。EL:當前異常等級。0:表示EL0;1:表示EL1;2:表示EL2;3:表示EL3;nRW:當前執行狀態。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)備份程序狀態寄存器當我們運行一個異常處理程序時,處理器會把PSTATE寄存器的值暫時保存在備份程序狀態寄存器(SPSR)里,當異常處理完成并返回時,再把SPSR的值恢復到PSTATE寄存器。3.5 ELR(Exception Link Register)異常鏈接寄存器ELR用于存放異常返回地址。3. 系統寄存器系統寄存器用于配置處理器和控制系統,例如MMU和異常處理。數據處理或加載/存儲指令不能直接使用系統寄存器。需要將系統寄存器的內容讀入X寄存器,對其進行操作,然后再寫回系統寄存器。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++關于億道電子億道電子技術有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國內資深的研發工具軟件提供商,公司成立于 2002 年,面向中國廣大的制造業客戶提供研發、設計、管理過程中使用的各種軟件開發工具,致力于幫助客戶提高研發管理效率、縮短產品設計周期,提升產品可靠性。20 年來,先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰略合作伙伴關系,并作為他們在中國區的主要分銷合作伙伴服務了數千家中國本土客戶,為客戶提供從芯片級開發工具、EDA 設計工具、軟件編譯以及測試工具、結構設計工具、仿真工具、電氣設計工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經驗積累,真正的幫助客戶實現了讓研發更簡單、更可靠、更高效的目標。歡迎關注“億道電子”公眾號了解更多研發工具軟件知識
查看更多→