a片在线观看免费看视频_欧美婬片在线a_同性男男无遮挡无码视频_久久99狠狠色精品一区_《性妲己》电影在线观看_久久久99婷婷久久久久久_亚洲精品久久久久58_激情在线成人福利小电影_色婷婷久久综合五月激情网

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 電子資訊 >基礎知識 > ARM體系結構之寄存器詳解

ARM體系結構之寄存器詳解

來源: elecfans
2020-09-02
類別:基礎知識
eye 87
文章創建人 拍明

原標題:ARM體系結構之寄存器詳解

ARM體系結構中的寄存器是處理器執行指令、管理數據和控制流程的核心組件。其設計兼顧了高性能、低功耗和靈活性,不同ARM架構版本(如ARMv7、ARMv8/ARM64)的寄存器配置有所差異。以下從通用寄存器、特殊功能寄存器、狀態寄存器、系統寄存器四個維度展開詳解,并對比32位與64位架構的差異。


一、通用寄存器(General-Purpose Registers, GPRs)

通用寄存器用于存儲數據、地址和中間計算結果,是程序執行中最頻繁訪問的寄存器組。

1. ARMv7(32位架構)

  • 數量:16個(R0-R15),其中部分有特殊用途。

  • 核心寄存器

    • R0-R3:常用于函數參數傳遞和返回值。

    • R12:內部臨時寄存器(IP,Intra-Procedure-call scratch register)。

    • R0-R12:通用數據寄存器,無固定用途,由程序員自由分配。

    • R13(SP):棧指針(Stack Pointer),指向當前線程的棧頂。

    • R14(LR):鏈接寄存器(Link Register),存儲子程序返回地址(BL指令自動更新)。

    • R15(PC):程序計數器(Program Counter),指向下一條要執行的指令地址。

2. ARMv8(64位架構/AArch64)

  • 數量:32個(X0-X30),另加32個32位別名(W0-W30)。

  • 核心寄存器

    • X0-X28:通用64位寄存器,W0-W28為其低32位別名。

    • X29(FP):幀指針(Frame Pointer),用于棧幀管理(可選,編譯器可優化省略)。

    • X30(LR):鏈接寄存器,功能同ARMv7的R14。

    • XZR/WZR:零寄存器(Zero Register),讀操作返回0,寫操作被忽略。

    • SP(X31):棧指針,與ARMv7的R13功能一致,但64位模式下獨立編號。

3. 關鍵差異

  • 數量擴展:ARMv8從16個增加到32個,支持更復雜的計算和函數調用。

  • 64位支持:X寄存器可存儲64位數據,W寄存器提供32位兼容。

  • 幀指針:ARMv8明確支持FP,而ARMv7中需通過R11或自定義寄存器實現。


QQ_1751438737685.png


二、特殊功能寄存器(Special-Purpose Registers)

用于控制處理器行為或訪問特定硬件功能。

1. 程序狀態寄存器(PSR, Program Status Register)

  • 組成:分為CPSR(當前PSR)和SPSR(保存的PSR,用于異常處理)。

  • 核心標志位

    • N(Negative):結果為負時置1。

    • Z(Zero):結果為零時置1。

    • C(Carry):進位或借位標志。

    • V(Overflow):算術溢出時置1。

    • T(Thumb狀態):ARMv7中指示當前是否處于Thumb指令集模式。

    • M[4:0](模式位):定義處理器模式(如用戶模式、FIQ模式等)。

  • ARMv8差異

    • PSR拆分為PSTATE(程序狀態)和獨立的系統寄存器(如DAIF控制中斷屏蔽)。

    • 標志位通過MSR/MRS指令訪問,而非直接操作PSR。

2. 程序計數器(PC)

  • 功能:指向下一條指令地址,ARMv7中為R15,ARMv8中為X31(但通常不直接操作)。

  • 分支指令

    • B(無條件跳轉)、BL(跳轉并保存返回地址到LR)。

    • BX(跳轉并切換Thumb/ARM狀態)、BLX(跳轉+切換狀態+保存返回地址)。

3. 棧指針(SP)

  • 功能:指向當前棧頂,支持壓棧(PUSH/STR)和彈棧(POP/LDR)。

  • ARMv8優化

    • 支持多個棧指針(如EL1特權級使用SP_EL1),實現特權級隔離。


三、狀態寄存器與異常處理

ARM通過狀態寄存器管理異常(中斷、未定義指令等)和特權級。

1. 異常模式(ARMv7)

  • 7種模式

    • 用戶模式(User):普通應用程序運行模式,無特權操作。

    • FIQ/IRQ模式:快速中斷/普通中斷處理模式,有獨立寄存器組(R8-R12_fiq/irq)。

    • 管理模式(Supervisor):操作系統內核運行模式(如svc指令觸發)。

    • 中止模式(Abort):內存訪問錯誤時進入。

    • 未定義模式(Undefined):執行未定義指令時進入。

    • 系統模式(System):運行特權任務,寄存器組與用戶模式共享。

  • 寄存器組切換

    • 進入異常時,自動保存CPSR到SPSR,并切換到異常模式對應的寄存器組。

2. ARMv8異常處理

  • 4種異常級別(EL0-EL3)

    • EL0:用戶空間(應用程序)。

    • EL1:操作系統內核(如Linux)。

    • EL2:虛擬機監控器(Hypervisor)。

    • EL3:安全監控器(Secure Monitor,如TrustZone)。

  • 系統寄存器

    • SPSR_ELx:保存異常返回時的PSTATE。

    • ELR_ELx:保存異常返回地址(類似ARMv7的LR)。

    • DAIF:控制調試、SError、IRQ、FIQ的屏蔽狀態。

四、系統寄存器(ARMv8新增)

ARMv8引入大量系統寄存器,用于控制處理器特性(如緩存、MMU、安全監控)。

1. 關鍵系統寄存器

  • SCTLR_EL1:系統控制寄存器,配置MMU、緩存、對齊檢查等。

  • TTBR0_EL1/TTBR1_EL1:頁表基址寄存器,定義虛擬地址到物理地址的映射。

  • MAIR_EL1:內存屬性間接寄存器,定義內存區域的訪問權限(如設備、緩存策略)。

  • ESR_ELx:異常綜合寄存器,記錄異常原因(如數據中止、SVC調用號)。

2. 訪問方式

  • MRS/MSR指令

MRS X0, SCTLR_EL1    ; 讀取系統寄存器到通用寄存器 MSR SCTLR_EL1, X0    ; 將通用寄存器值寫入系統寄存器

  • 特權級限制:低特權級(如EL0)無法訪問高特權級寄存器。


五、寄存器使用最佳實踐

  1. 通用寄存器分配

    • 優先使用R0-R3(ARMv7)或X0-X7(ARMv8)傳遞參數,減少棧操作。

    • 避免隨意覆蓋LR和SP,函數返回前需恢復。

  2. 異常處理

    • ARMv7中,FIQ模式有獨立寄存器組,適合低延遲中斷。

    • ARMv8中,通過ERET指令從異常返回,需正確設置SPSR_ELx和ELR_ELx。

  3. 64位遷移

    • ARMv8中,32位計算需顯式使用W寄存器(如ADD W0, W1, W2)。

    • 零擴展與符號擴展指令(如SXTBUXTH)需謹慎使用。


六、總結


特性ARMv7(32位)ARMv8(64位)
通用寄存器R0-R15(16個)X0-X30(32個)+ W0-W30別名
狀態寄存器CPSR/SPSRPSTATE + 獨立系統寄存器(如DAIF)
異常級別7種模式(用戶、FIQ、IRQ等)4級特權(EL0-EL3)
系統寄存器少量(如CP15協處理器)大量(控制MMU、緩存、安全等)


ARM寄存器設計體現了精簡指令集(RISC)的核心思想:固定長度指令、負載均衡的寄存器組、明確的硬件控制。理解寄存器布局和行為是優化性能(如減少內存訪問)、調試低級代碼(如中斷處理)和遷移架構(如從ARMv7到ARMv8)的關鍵。


責任編輯:David

【免責聲明】

1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學習使用,不涉及商業目的。

3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。

4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

相關資訊

資訊推薦
云母電容公司_云母電容生產廠商

云母電容公司_云母電容生產廠商

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

開關三極管13007的規格參數、引腳圖、開關電源電路圖?三極管13007可以用什么型號替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內部結構及應用電路)

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片lm2596s開關電壓調節器的中文資料_引腳圖及功能_內部結構及原理圖_電路圖及封裝

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

芯片UA741運算放大器的資料及參數_引腳圖及功能_電路原理圖?ua741運算放大器的替代型號有哪些?

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

28nm光刻機卡住“02專項”——對于督工部分觀點的批判(睡前消息353期)

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告