国产精品久久久久久亚洲影视,插我舔内射18免费视频,国产+精品+在线观看,国产精品18久久久久久麻辣,丰满少妇69激情啪啪无

0 賣盤信息
BOM詢價
您現(xiàn)在的位置: 首頁 > 電子資訊 >基礎(chǔ)知識 > ARM體系結(jié)構(gòu)之寄存器詳解

ARM體系結(jié)構(gòu)之寄存器詳解

來源: elecfans
2020-09-02
類別:基礎(chǔ)知識
eye 87
文章創(chuàng)建人 拍明

原標(biāo)題:ARM體系結(jié)構(gòu)之寄存器詳解

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


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

通用寄存器用于存儲數(shù)據(jù)、地址和中間計算結(jié)果,是程序執(zhí)行中最頻繁訪問的寄存器組。

1. ARMv7(32位架構(gòu))

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

  • 核心寄存器

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

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

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

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

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

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

2. ARMv8(64位架構(gòu)/AArch64)

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

  • 核心寄存器

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

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

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

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

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

3. 關(guān)鍵差異

  • 數(shù)量擴展:ARMv8從16個增加到32個,支持更復(fù)雜的計算和函數(shù)調(diào)用。

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

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


QQ_1751438737685.png


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

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

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

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

  • 核心標(biāo)志位

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

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

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

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

    • T(Thumb狀態(tài)):ARMv7中指示當(dāng)前是否處于Thumb指令集模式。

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

  • ARMv8差異

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

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

2. 程序計數(shù)器(PC)

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

  • 分支指令

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

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

3. 棧指針(SP)

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

  • ARMv8優(yōu)化

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


三、狀態(tài)寄存器與異常處理

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

1. 異常模式(ARMv7)

  • 7種模式

    • 用戶模式(User):普通應(yīng)用程序運行模式,無特權(quán)操作。

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

    • 管理模式(Supervisor):操作系統(tǒng)內(nèi)核運行模式(如svc指令觸發(fā))。

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

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

    • 系統(tǒng)模式(System):運行特權(quán)任務(wù),寄存器組與用戶模式共享。

  • 寄存器組切換

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

2. ARMv8異常處理

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

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

    • EL1:操作系統(tǒng)內(nèi)核(如Linux)。

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

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

  • 系統(tǒng)寄存器

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

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

    • DAIF:控制調(diào)試、SError、IRQ、FIQ的屏蔽狀態(tài)。

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

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

1. 關(guān)鍵系統(tǒng)寄存器

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

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

  • MAIR_EL1:內(nèi)存屬性間接寄存器,定義內(nèi)存區(qū)域的訪問權(quán)限(如設(shè)備、緩存策略)。

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

2. 訪問方式

  • MRS/MSR指令

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

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


五、寄存器使用最佳實踐

  1. 通用寄存器分配

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

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

  2. 異常處理

    • ARMv7中,F(xiàn)IQ模式有獨立寄存器組,適合低延遲中斷。

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

  3. 64位遷移

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

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


六、總結(jié)


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


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


責(zé)任編輯:David

【免責(zé)聲明】

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

2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。

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

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

拍明芯城擁有對此聲明的最終解釋權(quán)。

標(biāo)簽: ARM寄存器 ARM微處理器

相關(guān)資訊

資訊推薦
云母電容公司_云母電容生產(chǎn)廠商

云母電容公司_云母電容生產(chǎn)廠商

開關(guān)三極管13007的規(guī)格參數(shù)、引腳圖、開關(guān)電源電路圖?三極管13007可以用什么型號替代?

開關(guān)三極管13007的規(guī)格參數(shù)、引腳圖、開關(guān)電源電路圖?三極管13007可以用什么型號替代?

74ls74中文資料匯總(74ls74引腳圖及功能_內(nèi)部結(jié)構(gòu)及應(yīng)用電路)

74ls74中文資料匯總(74ls74引腳圖及功能_內(nèi)部結(jié)構(gòu)及應(yīng)用電路)

芯片lm2596s開關(guān)電壓調(diào)節(jié)器的中文資料_引腳圖及功能_內(nèi)部結(jié)構(gòu)及原理圖_電路圖及封裝

芯片lm2596s開關(guān)電壓調(diào)節(jié)器的中文資料_引腳圖及功能_內(nèi)部結(jié)構(gòu)及原理圖_電路圖及封裝

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

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

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

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

拍明芯城微信圖標(biāo)

各大手機應(yīng)用商城搜索“拍明芯城”

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

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