第二節(jié)arm體系結(jié)構(gòu)_第1頁
第二節(jié)arm體系結(jié)構(gòu)_第2頁
第二節(jié)arm體系結(jié)構(gòu)_第3頁
第二節(jié)arm體系結(jié)構(gòu)_第4頁
第二節(jié)arm體系結(jié)構(gòu)_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第二節(jié)第二節(jié) ARM體系結(jié)構(gòu)與體系結(jié)構(gòu)與ARM異常異常小節(jié)提要ARM體系結(jié)構(gòu)體系結(jié)構(gòu)ARM 異常處理異常處理ARM簡介 ARM是是Advanced RISC Machines的縮寫,的縮寫,它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計它是一家微處理器行業(yè)的知名企業(yè),該企業(yè)設(shè)計了大量高性能、廉價、耗能低的了大量高性能、廉價、耗能低的RISC (精簡指(精簡指令集)處理器。令集)處理器。 公司的特點是只設(shè)計芯片,而不公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和軟件和OEM廠商,并提供服務(wù)。廠商,并提供服務(wù)。ARM簡介 AR

2、MAdvanced RISC Machines ARM32位位RISC結(jié)構(gòu)結(jié)構(gòu)IP核提供商核提供商將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片. . .ARM授權(quán)費IPARM 創(chuàng)造和創(chuàng)造和設(shè)計設(shè)計IPPartner產(chǎn)品,例如:芯片Partner把把ARM IP 和其他和其他 IP 集成進(jìn)集成進(jìn)產(chǎn)品產(chǎn)品OEM Customer版權(quán)費單價OEM 用來自用來自ARM Partner的的芯片設(shè)計制造最芯片設(shè)計制造最終用戶產(chǎn)品終用戶產(chǎn)品業(yè)務(wù)拓展 / 市場格局ARM的業(yè)務(wù)模型的業(yè)務(wù)模型ARM處理器的處理器的3大特點如下:大特點如下: 小體積、低功耗、成本低、高性能;小體積、低功耗、成本低、高性能; 1

3、6位位/32位雙指令集;位雙指令集; 全球眾多的合作伙伴。全球眾多的合作伙伴。當(dāng)前當(dāng)前ARM體系結(jié)構(gòu)的擴(kuò)充包括:體系結(jié)構(gòu)的擴(kuò)充包括: Thumb:16位指令集,用以改善代碼密度;位指令集,用以改善代碼密度; DSP:用于:用于DSP應(yīng)用的算術(shù)運算指令集;應(yīng)用的算術(shù)運算指令集; Jazeller:允許直接執(zhí)行:允許直接執(zhí)行Java代碼的擴(kuò)充。代碼的擴(kuò)充。ARM處理器系列提供的解決方案包括:處理器系列提供的解決方案包括: 在無線、消費電子和圖像應(yīng)用方面的開放平臺;在無線、消費電子和圖像應(yīng)用方面的開放平臺; 存儲、自動化、工業(yè)和網(wǎng)絡(luò)應(yīng)用的嵌入式實時系統(tǒng);存儲、自動化、工業(yè)和網(wǎng)絡(luò)應(yīng)用的嵌入式實時系統(tǒng);

4、 智能卡和智能卡和SIM卡的安全應(yīng)用??ǖ陌踩珣?yīng)用。ARM處理器的特點處理器的特點ARM微處理器系列微處理器系列 ARM7系列系列 ARM9系列系列 ARM9E系列系列 ARM10E系列系列 ARM11系列系列 SecurCore系列系列 Cortex系列系列 Inter的的StrongARM和和Xscale系列系列 ARM的發(fā)展歷程的發(fā)展歷程-2 1991 - ARM 推出第一款推出第一款RISC嵌入式微處理嵌入式微處理器核器核 ARM6 1993 - ARM 推出推出 ARM7 核核 1995 ARM的的Thumb擴(kuò)展指令集結(jié)構(gòu)為擴(kuò)展指令集結(jié)構(gòu)為16位系統(tǒng)增加了位系統(tǒng)增加了32位的性能位的

5、性能,提供業(yè)界領(lǐng)先的提供業(yè)界領(lǐng)先的代碼密度代碼密度ARM 微處理器微處理器 微處理器核微處理器核: ARM6, ARM7, ARM9, ARM10, ARM11 擴(kuò)展擴(kuò)展: Thumb, DSP, SIMD, Jazelle etc. 其它其它IP核核: UART, GPIO, memory controllers, etcARM體系結(jié)構(gòu)版本體系結(jié)構(gòu)版本 - 1 Version 1 (obsolete) 基本數(shù)據(jù)處理基本數(shù)據(jù)處理 字節(jié)字節(jié),字以及多字字以及多字 load/store 軟件中斷軟件中斷 26 bit 地址總線地址總線 Version 2 (obsolete) Multiply &

6、 Multiply-accumulate 支持協(xié)處理器支持協(xié)處理器 支持線程同步支持線程同步 26 bit 地址總線地址總線ARM體系結(jié)構(gòu)版本體系結(jié)構(gòu)版本 - 2lV3版本推出版本推出32位尋址能力位尋址能力,結(jié)構(gòu)擴(kuò)展變化為結(jié)構(gòu)擴(kuò)展變化為uT16位壓縮指令集位壓縮指令集uM增強(qiáng)型乘法器增強(qiáng)型乘法器,產(chǎn)生全產(chǎn)生全64位結(jié)果位結(jié)果(32X3264or32X32+64 64)lV4版本增加了半字版本增加了半字load和和store指令指令lV5版本改進(jìn)了版本改進(jìn)了ARM和和Thumb之間的交互之間的交互,結(jié)構(gòu)擴(kuò)展結(jié)構(gòu)擴(kuò)展變化為變化為:uE-增強(qiáng)型增強(qiáng)型DSP指令集指令集,包括全部算法操作和包括全部算

7、法操作和16位位乘法操作乘法操作uJ-支持新的支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能優(yōu)化軟件加速功能體系結(jié)構(gòu)變化體系結(jié)構(gòu)變化 長乘法指令長乘法指令 (M)u32x32 = 64 bit. 提供全提供全64位結(jié)果位結(jié)果 增強(qiáng)增強(qiáng)DSP 指令集指令集 (E)u可附加在可附加在ARM中的中的DSP指令指令u64 bit 轉(zhuǎn)換轉(zhuǎn)換u在在 v5版本中第一次推出版本中第一次推出 處理器內(nèi)核的變化處理器內(nèi)核的變化uD: 在片調(diào)試在片調(diào)試. 處理器可響應(yīng)調(diào)試暫停請求處理器可響應(yīng)調(diào)試暫停請求uI: Embedded ICE. 支持片上斷點調(diào)試支持片上斷點調(diào)試體系結(jié)構(gòu)變

8、化體系結(jié)構(gòu)變化 ARM DSP 指令集指令集u對于音頻對于音頻DSP應(yīng)用提供高達(dá)應(yīng)用提供高達(dá)70%的處理速度的處理速度 Jazelleu提供比基于軟件的提供比基于軟件的JAVA虛擬機(jī)(虛擬機(jī)(JVM)更高的性)更高的性能能 u與非與非JAVA加速核相比,提供加速核相比,提供8倍倍JAVA加速性能和加速性能和降低降低80%的功耗的功耗u139 字節(jié)碼直接在硬件上執(zhí)行,字節(jié)碼直接在硬件上執(zhí)行,88個字節(jié)碼在軟件個字節(jié)碼在軟件上執(zhí)行上執(zhí)行ARM 體系結(jié)構(gòu)更新體系結(jié)構(gòu)更新ARM流水線結(jié)構(gòu)的發(fā)展流水線結(jié)構(gòu)的發(fā)展預(yù)?。‵etch)譯碼(Decode)執(zhí)行(Execute)預(yù)?。‵etch)譯碼(Decod

9、e)執(zhí)行(Execute)訪存(Memory)寫入(Write)預(yù)?。‵etch)譯碼(Decode)發(fā)送(Issue)預(yù)?。‵etch)預(yù)?。‵etch)執(zhí)行(Execute)訪存(Memory)寫入(Write)譯碼(Decode)發(fā)送(Issue)執(zhí)行(Execute)轉(zhuǎn)換(Snny)訪存(Memory)寫入(Write)ARM7ARM9ARM10ARM11ARM7TDMI的模塊和內(nèi)核框圖的模塊和內(nèi)核框圖CPBCPACPnICPTBITCPSEQCPnMREQCPnOPCCPnTRAN STRANS1 : 0 PROT1: 0 SIZE1: 0 WRITEABORTRDATA31:0WD

10、ATA31:0ADDR31 : 0 DBGTDODBGnTDO E NDBGnTRS TDBGTDIDBGTMSDBGTCKE NDBGCOMM T XDBGCOMM R XDBGRNG 0 DBGRNG 1 DBGENDBGEXT 0 DBGEXT 1 DBGnEXE CDBGACKDBGBREA KDBGRQLOCKCFGBIGE N DnRESETnFIQnIRQCLKENCLKDBGINST RVALIDARM7TDM I - SDMORE同步的Em bededICE-RT掃描調(diào)試訪問 端口存儲器接口存儲器管理接 口協(xié)處理器接口時鐘中斷總線控制仲裁調(diào)試處理器ARM7TDMI的模塊和內(nèi)核

11、框圖的模塊和內(nèi)核框圖ARM7TDMI模塊模塊地址寄存器寄存器組31*32位寄存器(6個狀態(tài)寄存器)地址增加器乘法器桶形移位器32位ALU寫數(shù)據(jù)寄存器指令管線讀數(shù)據(jù)寄存器Thumb指令譯碼器指令譯碼和控制邏輯ADDR31:0CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE1:0PROT1:0TRANS1:0DBG輸出DBG輸入CP控制CP握手WDATA31:0RDATA31:0ARM7TDMI 三級流水線三級流水線 ARM7TDMI處理器使用流水線來增加處處理器使用流水線來增加處理器指令流的速度。這樣可使幾個操作同時理器指令流的速度。這樣可使幾個操

12、作同時進(jìn)行,并使處理和存儲器系統(tǒng)連續(xù)操作,能進(jìn)行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供提供0.9MIPS/MHz的指令執(zhí)行速度。的指令執(zhí)行速度。 ARM7TDMI的流水線分的流水線分3級,分別為:級,分別為:取指取指譯碼譯碼執(zhí)行執(zhí)行流水線技術(shù)流水線技術(shù):幾個指令可以并行執(zhí)行流水線技術(shù):幾個指令可以并行執(zhí)行提高了提高了CPUCPU的運行效率的運行效率譯碼取指執(zhí)行add譯碼取指執(zhí)行sub譯碼取指執(zhí)行cmp時間AddSubCmp 正常操作過程中,在執(zhí)行一條指令的同時對下一條指令進(jìn)行譯碼,并將第三條指令從存儲器中取出。ARM7TDMI 三級流水線三級流水線流水線上各指令的地址流水線上各指令的地址流水線

13、工流水線工位位描述描述ARM指令指令集集Thumb指令指令集集PCPC取指取指指令從存儲器中取出指令從存儲器中取出PC-4PC-2譯碼譯碼對指令使用的寄存器進(jìn)行譯碼對指令使用的寄存器進(jìn)行譯碼PC-8PC-4執(zhí)行執(zhí)行從寄存器組中讀出寄存器,執(zhí)行從寄存器組中讀出寄存器,執(zhí)行移位和移位和ALU操作,寄存器被寫回操作,寄存器被寫回到寄存器組中到寄存器組中ARM7TDMI 存儲器訪問存儲器訪問 ARM7TDMI處理器使用了處理器使用了馮馮諾依曼諾依曼結(jié)構(gòu),結(jié)構(gòu),指令和數(shù)據(jù)共用一條指令和數(shù)據(jù)共用一條32位總線。只有裝載、存位總線。只有裝載、存儲和交換指令可以對存儲器中的數(shù)據(jù)進(jìn)行訪問。儲和交換指令可以對存儲

14、器中的數(shù)據(jù)進(jìn)行訪問。 數(shù)據(jù)可以是字節(jié)(數(shù)據(jù)可以是字節(jié)( 8位)、半字(位)、半字( 16位)位)或者字(或者字(32位)。位)。體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:處理器支持下列數(shù)據(jù)類型:字節(jié)字節(jié) 8位位半字半字 16位(必須分配為占用兩個字節(jié))位(必須分配為占用兩個字節(jié))字字 32為(必須分配為占用為(必須分配為占用4各字節(jié))各字節(jié))1112342注意: 裝載和保存指令可以對字節(jié)、半字和字進(jìn)行操裝載和保存指令可以對字節(jié)、半字和字進(jìn)行操作,當(dāng)裝載字節(jié)或半字時自動實現(xiàn)零擴(kuò)展或符號作,當(dāng)裝載字節(jié)或半字時自動實現(xiàn)零擴(kuò)展或符號擴(kuò)

15、展;擴(kuò)展; ARM指令的長度剛好是指令的長度剛好是1個字(分配為占用個字(分配為占用4個字節(jié)),個字節(jié)),Thumb指令的長度剛好是半字(占用指令的長度剛好是半字(占用2個字節(jié))。個字節(jié))。3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型存儲器模式存儲器模式 大端模式大端模式u字?jǐn)?shù)據(jù)的高位字節(jié)存儲在低地址中字?jǐn)?shù)據(jù)的高位字節(jié)存儲在低地址中u字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中 小端模式小端模式u低地址中存放字?jǐn)?shù)據(jù)的低字節(jié)低地址中存放字?jǐn)?shù)據(jù)的低字節(jié)u高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)3124 2316 158 70字地址字地址111098876

16、54432100 低地址低地址 高地址高地址3124 2316 158 70 字地址字地址89101184567401230 低地址低地址 高地址高地址數(shù)據(jù)和指令類型數(shù)據(jù)和指令類型 ARM 采用的是采用的是32位架構(gòu)位架構(gòu). ARM 約定約定: Byte : 8 bits Halfword :16 bits (2 byte) Word : 32 bits (4 byte) 大部分大部分ARM core 提供:提供: ARM 指令集(指令集(32-bit) Thumb 指令集指令集(T變種變種)(16-bit ) Jazelle cores 支持支持 Java bytecode(J變種,變種,4

17、TEJ)27 The ARM 可以用 little/big endian 格式存取數(shù)據(jù). r0 = 0 x11223344STR r0, r1LDRB r2, r1r1 = 0 x100Memory3 2 1 0 0 1 2 3Byte Lane3124 2316 158 70112233443124 2316 158 70112233443124 2316 158 70112233443124 2316 158 70000000443124 2316 158 7000000011Little endianBig endianR2 = 0 x44R2 = 0 x11字節(jié)順序字節(jié)順序ARM處理器

18、體系結(jié)構(gòu) 32 2 737 32位架構(gòu)位架構(gòu) 2種工作狀態(tài)種工作狀態(tài) 7種工作模式種工作模式 37個個32位的寄存器位的寄存器處理器狀態(tài) ARM7TDMI處理器內(nèi)核使用處理器內(nèi)核使用V4T版本的版本的ARM結(jié)結(jié)構(gòu),該結(jié)構(gòu)包含構(gòu),該結(jié)構(gòu)包含32位位ARM指令集和指令集和16位位Thumb指令指令集。因此集。因此ARM7TDMI處理器有兩種操作狀態(tài):處理器有兩種操作狀態(tài): ARM狀態(tài):狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式位,這種狀態(tài)下執(zhí)行的是字方式的的ARM指令;指令; Thumb狀態(tài):狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方位,這種狀態(tài)下執(zhí)行半字方式的式的Thumb指令。指令。注意:注意:兩個狀態(tài)之

19、間的切換并不影響處理器模式兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容?;蚣拇嫫鲀?nèi)容。處理器狀態(tài) 處理器狀態(tài)處理器狀態(tài) 使用使用BX指令將指令將ARM7TDMI內(nèi)核的操作內(nèi)核的操作狀態(tài)在狀態(tài)在ARM狀態(tài)和狀態(tài)和Thumb狀態(tài)之間進(jìn)行切狀態(tài)之間進(jìn)行切換,程序如下所示。換,程序如下所示。;從Arm狀態(tài)切換到Thumb狀態(tài) LDR R0,=Lable+1 BX R0;從Thumb狀態(tài)切換到ARM狀態(tài) LDR R0,=Lable BX R0地址最低位為1,表示切換到Thumb狀態(tài)地址最低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標(biāo)號處理器模式處理器模式說明說明備注備注 用戶用戶 (usr)正常程序執(zhí)行模

20、式正常程序執(zhí)行模式不能直接切換到其它模式不能直接切換到其它模式 系統(tǒng)系統(tǒng) (sys)運行操作系統(tǒng)的特權(quán)運行操作系統(tǒng)的特權(quán)任務(wù)任務(wù)與用戶模式類似,但具有可以直接切換與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)到其它模式等特權(quán) 快中斷快中斷(fiq)支持高速數(shù)據(jù)傳輸及通支持高速數(shù)據(jù)傳輸及通道處理道處理FIQ異常響應(yīng)時進(jìn)入此模式異常響應(yīng)時進(jìn)入此模式 中斷中斷 (irq)用于通用中斷處理用于通用中斷處理IRQ異常響應(yīng)時進(jìn)入此模式異常響應(yīng)時進(jìn)入此模式 管理管理 (svc)保護(hù)模式保護(hù)模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式 中止中止 (abt)用于支持虛擬內(nèi)存和用于

21、支持虛擬內(nèi)存和/或存儲器保護(hù)或存儲器保護(hù) 未定義未定義 (und)支持硬件協(xié)處理器的軟支持硬件協(xié)處理器的軟件仿真件仿真未定義指令異常響應(yīng)時進(jìn)入此模式未定義指令異常響應(yīng)時進(jìn)入此模式處理器工作模式處理器工作模式(1)(1) ARM處理器有處理器有7種工作模式種工作模式處理器工作模式處理器工作模式(2)(2)特權(quán)模式特權(quán)模式處理器模式處理器模式說明說明備注備注 用戶用戶 (usr)正常程序工作模式正常程序工作模式不能直接切換到其它模式不能直接切換到其它模式 系統(tǒng)系統(tǒng) (sys)用于支持操作系統(tǒng)的用于支持操作系統(tǒng)的特權(quán)任務(wù)等特權(quán)任務(wù)等與用戶模式類似,但具有可以與用戶模式類似,但具有可以直接切換到其它模

22、式等特權(quán)直接切換到其它模式等特權(quán) 快中斷快中斷 (fiq)支持高速數(shù)據(jù)傳輸及支持高速數(shù)據(jù)傳輸及通道處理通道處理FIQ異常響應(yīng)時進(jìn)入此模式異常響應(yīng)時進(jìn)入此模式 中斷中斷 (irq)用于通用中斷處理用于通用中斷處理IRQ異常響應(yīng)時進(jìn)入此模式異常響應(yīng)時進(jìn)入此模式 管理管理 (svc)操作系統(tǒng)保護(hù)代碼操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式入此模式 中止中止 (abt)用于支持虛擬內(nèi)存和用于支持虛擬內(nèi)存和/或存儲器保護(hù)或存儲器保護(hù)在在ARM7TDMI沒有大用處沒有大用處 未定義未定義 (und)支持硬件協(xié)處理器的支持硬件協(xié)處理器的軟件仿真軟件仿真未定義指令異常響應(yīng)時

23、進(jìn)入此未定義指令異常響應(yīng)時進(jìn)入此模式模式 除用戶模式外,其它模式均為除用戶模式外,其它模式均為特權(quán)模式特權(quán)模式。ARM內(nèi)部部分寄存器內(nèi)部部分寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。戶模式不能直接切換到別的模式。 未定義未定義 (und) 中止中止 (abt) 管理管理 (svc) 中斷中斷 (irq) 快中斷快中斷 (fiq) 系統(tǒng)系統(tǒng) (sys)處理器工作模式處理器工作模式(

24、3)(3) 用戶和系統(tǒng)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進(jìn)入此模式 這兩種模式使用完全相同的寄存器這兩種模式使用完全

25、相同的寄存器組。組。 系統(tǒng)模式是特權(quán)模式,不受用戶系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。使用這個模式訪問一些受控的資源。 系統(tǒng)系統(tǒng) (sys) 用戶用戶 (usr)寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4

26、)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiqARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中

27、止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt S

28、PSR_abt SPSR_und SPSR_irq SPSR_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個寄存器,分成兩大類:31個通用32位寄存器;6個狀態(tài)寄存器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管

29、理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt

30、 SPSR_abt SPSR_und SPSR_irq SPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6

31、R5R4R3R2R1R0未定義未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷快中斷ARM狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R

32、8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_f

33、iqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fi

34、qR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4

35、R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR1

36、3_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對應(yīng)的物理寄存器

37、取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R

38、14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0

39、R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SP

40、SR_fiq一般的通用寄存器 寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7

41、)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq堆棧指針寄存器R13(SP) 寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使

42、用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14

43、_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq鏈接寄存器R14(LR) R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時,將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個小的固定偏移量)。Lable程序A程序BR14內(nèi)部寄存器內(nèi)部寄存器 R14(LR)寄存器與子程序調(diào)用BL Lable地址A?MOV PC,LRR14(地址A)1.程序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號Lable,執(zhí)行程序B

44、。同時硬件將“BL Lable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;內(nèi)部寄存器內(nèi)部寄存器 R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB.XA地址1地址11.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被用到;3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;R14_irq內(nèi)部寄存器內(nèi)部寄存器 R14寄存器注意要點 當(dāng)發(fā)生異常嵌套時,這些異常之間可能會

45、當(dāng)發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。發(fā)生沖突。 例如:如果用戶在用戶模式下執(zhí)行程序例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了時發(fā)生了IRQIRQ中斷,用戶模式寄存器不會被破中斷,用戶模式寄存器不會被破壞。但是如果允許在壞。但是如果允許在IRQIRQ模式下的中斷處理程模式下的中斷處理程序重新使能序重新使能IRQIRQ中斷,并且發(fā)生了嵌套的中斷,并且發(fā)生了嵌套的IRQIRQ中斷時,外部中斷處理程序保存在中斷時,外部中斷處理程序保存在R14_irqR14_irq中中的任何值都將被嵌套中斷的返回地址所覆蓋。的任何值都將被嵌套中斷的返回地址所覆蓋。內(nèi)部寄存器內(nèi)部寄存器 R14寄存器注意要點R1

46、4R14_irq用戶模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq內(nèi)部寄存器內(nèi)部寄存器 R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.

47、IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ處理程序中打開IRQ中斷,并且再次發(fā)生IRQ中斷;5. 硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;R14_irq 被破壞6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發(fā)生錯誤,將不能正確返回;returnreturn 解決辦法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時不再保存任何有意義的值,如,將R14入棧。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器

48、用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPS

49、R_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq程序計數(shù)器R15(PC) 寄存器R15為程序計數(shù)器(PC),它指向正在取指的地址??梢哉J(rèn)為它是一個通用寄存器,但是對于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測的。內(nèi)部寄存器內(nèi)部寄存器 讀R15的限制 正常操作時,從R15讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個字節(jié)(兩條ARM指令的長度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程

50、序代碼內(nèi)部寄存器內(nèi)部寄存器 讀R15的限制 當(dāng)使用STR或STM指令保存R15時,會有一個例外。這些指令可能將當(dāng)前指令地址加8字節(jié)或加12字節(jié)保存(將來可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對于一個確定的芯片,這個值是一個常量。所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應(yīng)當(dāng)在程序中計算出該芯片的偏移量。 讀R15的限制計算偏移量程序代碼:SUBR1,PC,#4;R1=下面STR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然后重裝SUBR0,R0,R1;計算偏移量內(nèi)部寄存器內(nèi)部寄存器 寫R15的限制 正常操作時,寫入

51、R15 的值被當(dāng)作一個指令地址,程序從這個地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無條件跳轉(zhuǎn))。 內(nèi)部寄存器內(nèi)部寄存器 寫R15的限制 由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實際目標(biāo)地址(寫入R15的值)和0 xFFFFFFFC相與得到;在ARM結(jié)構(gòu)V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測。程序狀態(tài)寄存器程序狀態(tài)寄存器 - 1 ARM9包含當(dāng)前程序狀態(tài)寄存器 (CPSR), 加上5個程序狀態(tài)保存寄存器SPSR,當(dāng)異常發(fā)生時,

52、用于保存CPSR的狀態(tài) 這些寄存器的功能是:u保存ALU當(dāng)前操作信息u控制允許和禁止中斷u設(shè)置處理器操作模式寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR1

53、3_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abt SPSR_abt SPSR_und SPSR_irq SPSR_fiq程序狀態(tài)寄存器CPSR 寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在因為異常事件而進(jìn)入異常時它保存CPSR的當(dāng)前值,異常退出時可通過它恢復(fù)CPSR。程序狀態(tài)寄存器程序狀態(tài)寄存器 - 2uN, Z, C and V 條件碼標(biāo)志條件碼標(biāo)志u可以在處理器中作為數(shù)學(xué)和邏輯

54、操作改變可以在處理器中作為數(shù)學(xué)和邏輯操作改變u可以被所有的指令測試,以決定指令是否被執(zhí)行可以被所有的指令測試,以決定指令是否被執(zhí)行uN : Negative. Z : Zero. C : Carry. V : oVerflowuI and F 位是中斷禁止位位是中斷禁止位uM0, M1, M2, M3 and M4 位是模式位位是模式位程序狀態(tài)寄存器程序狀態(tài)寄存器 條件位: N = 1-結(jié)果為負(fù),0-結(jié)果為正或0 Z = 1-結(jié)果為0,0-結(jié)果不為0 V =1-C =1-進(jìn)位,0-借位 結(jié)果溢出,0結(jié)果沒溢出Q 位: 僅ARM 5TE/J架構(gòu)支持 指示增強(qiáng)型DSP指令是否溢出J 位 僅ARM

55、5TE/J架構(gòu)支持 J = 1: 處理器處于Jazelle狀態(tài)中斷禁止位: I = 1: 禁止 IRQ. F = 1: 禁止 FIQ.T Bit 僅ARM xT架構(gòu)支持 T = 0: 處理器處于 ARM 狀態(tài) T = 1: 處理器處于 Thumb 狀態(tài)Mode位(處理器模式位): 0b10000 User 0b10001 FIQ 0b10010 IRQ 0b10011Supervisor 0b10111Abort 0b11011Undefined 0b11111System2731N Z C V Q2867I F T mode1623 815 54024fsxc U n d e f i n e

56、 dJ內(nèi)部寄存器內(nèi)部寄存器 Thumb狀態(tài)寄存器 Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集,程序員可以直接訪問的寄存器為:8個通用寄存器R0R7;程序計數(shù)器(PC);堆棧指針(SP);鏈接寄存器(LR);有條件訪問程序狀態(tài)寄存器( CPSR)。Thumb狀態(tài)各模式下的寄存器CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(

57、a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別注意:括號內(nèi)為ATPCS中寄存器的命名,可以使用RN匯編偽指令將寄存器定義多個名字。其中ADS1.2的匯編程序直接支持這些名稱,但注意a1a4,v1v4必須用小寫。Thumb狀態(tài)下的通用寄存器CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a

58、3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別R7R6R5R4R3R2R1R0 在匯編語言中寄存器R0R7為保存數(shù)據(jù)或地址值的通用寄存器。對于任何處理器模式,它們中的每一個都對應(yīng)于相同的32為物理寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用寄存器的指令。Thumb狀態(tài)下的堆棧指針寄存器(SP)CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_a

59、btR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別 堆棧指針SP對應(yīng)ARM狀態(tài)的寄存器R13。每個異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時,處理器自動進(jìn)入ARM狀態(tài)。R13_fiqR13_irqR13_undR13_abtR13_svcR13Thumb狀態(tài)下的鏈接寄存器R14(LR)CPSRCPSR狀態(tài)寄存器R15PCR14_f

60、iqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實際訪問的寄存器寄存器在匯編中的名稱寄存器類別 鏈接寄存器LR對應(yīng)ARM狀態(tài)寄存器R14,在結(jié)構(gòu)上有兩個特殊功能。 注意:在發(fā)生異常時,處理器自動進(jìn)入ARM狀態(tài)。R14_fiqR14_irqR14_undR14_abtR14_svcR143.7 內(nèi)部寄存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論