嵌入式系統(tǒng)--基于32位微處理器與實時操作系統(tǒng) Chap3課件_第1頁
嵌入式系統(tǒng)--基于32位微處理器與實時操作系統(tǒng) Chap3課件_第2頁
嵌入式系統(tǒng)--基于32位微處理器與實時操作系統(tǒng) Chap3課件_第3頁
嵌入式系統(tǒng)--基于32位微處理器與實時操作系統(tǒng) Chap3課件_第4頁
嵌入式系統(tǒng)--基于32位微處理器與實時操作系統(tǒng) Chap3課件_第5頁
已閱讀5頁,還剩117頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、3C H A P T E RARM7體系結(jié)構(gòu)第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.1 ARM簡介ARM公司簡介 ARM是Advanced RISC Machines的縮寫,它是一家微處理器行業(yè)的知名企業(yè)

2、,該企業(yè)設(shè)計了大量高性能、廉價、耗能低的RISC (精簡指令集)處理器。 公司的特點是只設(shè)計芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)。3.1 ARM簡介微處理器是整個系統(tǒng)的核心,通常由3大部分組成:控制單元、算術(shù)邏輯單元和寄存器。 算術(shù)邏輯單元寄存器控制單元微處理器存儲器輸入輸出3.1 ARM簡介ARM處理器的應(yīng)用當(dāng)前主要應(yīng)用于消費類電子領(lǐng)域;到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75以上的市場份額全球80%的GSM/3G手機、99%的CDMA手機以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計算”相關(guān)的所有

3、領(lǐng)域皆為其所主宰。ARM技術(shù)正在逐步滲入到我們生活的各個方面。3.1 ARM簡介ARM體系結(jié)構(gòu)ARM體系結(jié)構(gòu)的特點:每條數(shù)據(jù)處理指令都對算術(shù)邏輯單元和移位器控制,實現(xiàn)了ALU和移位器的最大利用;地址自動增加和減少尋址模式,優(yōu)化程序循環(huán);多寄存器裝載和存儲指令實現(xiàn)最大數(shù)據(jù)吞吐量;所有指令的條件執(zhí)行實現(xiàn)最快速的代碼執(zhí)行。3.1 ARM簡介各ARM體系結(jié)構(gòu)版本 ARM體系結(jié)構(gòu)從最初開發(fā)到現(xiàn)在有了很大的改進,并仍在完善和發(fā)展。為了清楚的表達每個ARM應(yīng)用實例所使用的指令集,ARM公司定義了6種主要的ARM指令集體系結(jié)構(gòu)版本,以版本號V1V6表示。3.1 ARM簡介各ARM體系結(jié)構(gòu)版本V1 該版本的AR

4、M體系結(jié)構(gòu),只有26位的尋址空間,沒有商業(yè)化,其特點為:基本的數(shù)據(jù)處理指令(不包括乘法);字節(jié)、字和半字加載/存儲指令;具有分支指令,包括在子程序調(diào)用中使用的分支和鏈接指令;在操作系統(tǒng)調(diào)用中使用的軟件中斷指令。3.1 ARM簡介各ARM體系結(jié)構(gòu)版本V2 同樣為26位尋址空間,現(xiàn)在已經(jīng)廢棄不再使用,它相對V1版本有以下改進:具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中的兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。3.1 ARM簡介各ARM體系結(jié)構(gòu)版本V3 尋址范圍擴展到32位(目前已廢棄),具有獨立的程序:具有乘法和乘加指令;支持協(xié)處理器;快速中斷模式中具有的兩個以上的分

5、組寄存器;具有原子性加載/存儲指令SWP和SWPB。3.1 ARM簡介各ARM體系結(jié)構(gòu)版本V4 不在為了與以前的版本兼容而支持26位體系結(jié)構(gòu),并明確了哪些指令會引起未定義指令異常發(fā)生,它相對V3版本作了以下的改進:半字加載/存儲指令;字節(jié)和半字的加載和符號擴展指令;具有可以轉(zhuǎn)換到Thumb狀態(tài)的指令(BX);增加了用戶模式寄存器的新的特權(quán)處理器模式。3.1 ARM簡介ARM處理器核簡介 ARM公司開發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11了,而ARM6核以及更早的系列已經(jīng)很罕見了。目前應(yīng)用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleA

6、RM11Cortex預(yù)?。‵etch)譯碼(Decode)執(zhí)行(Execute)預(yù)?。‵etch)譯碼(Decode)執(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)ARM7ARM9ARM10ARM113.1 ARM簡介ARM系列微處理器核特點ARM7ARM7TDMI:整數(shù)處理核ARM7TDMI 處理器的可綜合版本; A

7、RM720T:帶MMU的處理器核心,支持操作系統(tǒng);ARM7EJ-S:帶有DSP和Jazelle TM 技術(shù),能夠?qū)崿F(xiàn)Java加速功能馮諾伊曼體系結(jié)構(gòu);ARMTDMI是目前應(yīng)用最廣的微處理器核ARM720T帶有MMU和8KB的指令數(shù)據(jù)混合cache;ARM7EJ-執(zhí)行ARMv5TEJ指令,5級流水線,提供Java加速指令,沒有存儲器保護。ARM9ARM920T:帶有獨立的16KB 數(shù)據(jù)和指令Cache;ARM922T:帶有獨立的8位KB 數(shù)據(jù)和指令Cache;ARM940T包括更小數(shù)據(jù)和指令Cache和一個MPU基于ARM9TDMI ,帶16位的Thumb指令集,增強代碼密度最多到35%;在0.

8、13m工藝下最高性能可達到300MIPS(Dhrystone 2.1測試標(biāo)準(zhǔn));集成了數(shù)據(jù)和指令Chche;32位AMBA總線接口的MMU支持;可在0.18m、 0.15m和0.13m工藝的硅芯片上實現(xiàn)。3.1 ARM簡介ARM9EARM926EJ-S:Jazelle 技術(shù),有MMU,可配置的數(shù)據(jù)和指令Cache,TCM接口;ARM946E-S:可配置的數(shù)據(jù)和指令Cache及TCM;ARM966E-S:針對要求高性能和低功耗的可預(yù)測的指令執(zhí)行時間的硬實時應(yīng)用設(shè)計 ARM968E-S:最小、功耗最小的ARM9E系列處理器,針對嵌入式實時應(yīng)用設(shè)計;ARM9E是針對微控制器、DSP和Java的單處理

9、器解決方案; ARMJazelle技術(shù)提供 8倍的 Java 加速性能 (ARM926EJ-S) ;5-級整數(shù)流水線; 在0.13m工藝下最高性能可達到300MIPS(Dhrystone 2.1測試標(biāo)準(zhǔn));可選擇的向量浮點單元VFP9 協(xié)處理器指令優(yōu)秀海浮點性能,對于3D圖形加速和實時控制可達到215MFLOPS。高性能的AHB總線,帶MMU可在0.18m, 0.15m, 0.13m工藝的硅芯片上實現(xiàn)。 ARM10EARM1020E:帶DSP指令集,在片調(diào)試功能,獨立的32KB數(shù)據(jù)和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨立的數(shù)據(jù)和指令Cache變?yōu)?6KB

10、;ARM1026EJ-S:同時具有MPU和MMU,可綜合版本; 帶分支預(yù)測的6級整數(shù)流水線;在0.13m工藝下最高性能可達到430MIPS(Dhrystone 2.1測試標(biāo)準(zhǔn));對于3D圖形運算和實時控制采用VFP協(xié)處理器,浮點運算性能最高可達650MFLOPS;雙64位AMBA總線接口和64位內(nèi)部總路線接口;優(yōu)化的緩存結(jié)構(gòu)提高了處理器訪問低速存儲器的性能;可在0.18m, 0.15m, 0.13m工藝的硅芯片上實現(xiàn)3.1 ARM簡介ARM11ARM11 MPCore:可綜合的多處理器核,1至4個處理器可配置;ARM1136J(F)-S:可配置的數(shù)據(jù)和指令Cache,可提供1.9位的MPEG4

11、編碼加速功能;ARM1156T2(F)-S:帶集成浮點協(xié)處理器,帶內(nèi)存保護單元MPU;ARM1176JZ(F)-S:帶針對CPU和系統(tǒng)安全架構(gòu)擴展的TrustZone技術(shù)。增強的Thumb、Jazelle、DSP擴展支持; 帶片上和系統(tǒng)安全TrustZone 技術(shù)支持 ;在0.13m工藝下最高可達到550MHz;MPCore在0.13m工藝下最高性能可達到740MIPS(Dhrystone 2.1測試標(biāo)準(zhǔn));支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。 SecurCoreSC100:第一個32位安全處理器;、SC110:在SC100上增加密鑰協(xié)處

12、理器;SC200:帶Jazelle技術(shù)的高級安全處理器;SC210:在SC200上增加密鑰協(xié)處理器SecurCore是專門為智能卡、安全IC提供的32位安全處理器, 為電子商務(wù)、銀行、網(wǎng)絡(luò)、移動多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長的Java卡平臺提供Java加速功能;3.1 ARM簡介CortexCortex-A:面向應(yīng)用的微處理器,針對復(fù)雜操作系統(tǒng)和應(yīng)用程序設(shè)計;Cortex-R:針對實時系統(tǒng)的嵌入式處理器;Cortex-M:針對成本敏感應(yīng)用優(yōu)化的深度嵌入式處理器;2004年發(fā)布,提供增強的媒體和數(shù)字處理能力,增加了系統(tǒng)性能;支持ARM、Thumb、T

13、humb-2指令集;Thumb-2指令集提供了更高的代碼存儲密度,進一步降低成本;Intel系列StrongARM:ARMv4體系XScale:ARMv5TE體系,增加MMX指令StrongARM主要應(yīng)用于手持設(shè)備和PDA,5級流水線,具有獨立的數(shù)據(jù)和指令Cache,不支持Thumb指令集,目前已停產(chǎn);XScale是目前Intel公司主推的高性能嵌入式處理器,分通用處理器、網(wǎng)絡(luò)處理器和I/O處理器三類。其中通用處理器有PXA25x、PXA26x、PXA27x三個系列,被廣泛應(yīng)用于智能手機、PDA領(lǐng)域。3.1 ARM簡介第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖

14、4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.2 ARM7TDMI簡介 ARM7TDMI基于ARM體系結(jié)構(gòu)V4版本,是目前低端的ARM核。具有廣泛的應(yīng)用,其最顯著的應(yīng)用為數(shù)字移動電話。注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內(nèi)外設(shè)組合在一起才能構(gòu)成現(xiàn)實的芯片。3.2 ARM7TDMI簡介 ARM7TDMI處理器是ARM通用32位微處理器家族的成員之一。它具有優(yōu)異的性能,但功耗卻很低,使用門的數(shù)量也很少。它屬于精簡指令集計算機(RISC),比復(fù)雜指令集計算機(CISC)要

15、簡單得多。這樣的簡化實現(xiàn)了:高的指令吞吐量;出色的實時中斷響應(yīng);小的、高性價比的處理器宏單元。3.2 ARM7TDMI三級流水線 ARM7TDMI處理器使用流水線來增加處理器指令流的速度。這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連續(xù)操作,能提供0.9MIPS/MHz的指令執(zhí)行速度。 ARM7TDMI的流水線分3級,分別為:取指譯碼執(zhí)行第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.3 系統(tǒng)內(nèi)部結(jié)構(gòu)圖 ARM7TDMI處

16、理器部件和主要信號路徑的框圖如圖所示。它內(nèi)部由處理器核、用于邊界掃描的TAP控制器和在線仿真器ICE組成。雙向數(shù)據(jù)總線D31:0被分割成單向輸入和輸出總線,以便于與外部存儲器兼容。 3.3 ARM7TDMI的模塊和內(nèi)核框圖ARM7TDMI模塊地址寄存器寄存器組31*32位寄存器(6個狀態(tài)寄存器)地址增量器乘法器桶形移位器32位ALU寫數(shù)據(jù)寄存器指令流水線讀數(shù)據(jù)寄存器Thumb指令譯碼器指令譯碼和邏輯控制ADDR31:0CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE1:0PROT1:0TRANS1:0DBG輸出DBG輸入CP控制CP握手WDATA

17、31:0RDATA31:0掃描調(diào)試控制A總線B總線ALU總線增量器總線PC總線3.3 ARM7TDMI功能信號圖 ARM7TDMI第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:字節(jié) 8位半字 16位(必須分配為占用兩個字節(jié))字 32位(必須分配為占用4各字節(jié))1112342體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型注意:V4版本之后的ARM結(jié)構(gòu)都支持這3

18、種結(jié)構(gòu)(包括V4版本),而以前的版本只支持字節(jié)和字;當(dāng)數(shù)據(jù)類型定義為無符號型時,N位數(shù)據(jù)值使用正常的二進制格式表示范圍為02N-1的非負整數(shù);當(dāng)數(shù)據(jù)類型定義為有符號型時,N位數(shù)據(jù)值使用2的補碼格式表示范圍為-2N-1+2N-1-1的整數(shù);3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型注意:所有數(shù)據(jù)操作,例如ADD,都以字為單位;裝載和保存指令可以對字節(jié)、半字和字進行操作,當(dāng)裝載字節(jié)或半字時自動實現(xiàn)零擴展或符號擴展;ARM指令的長度剛好是1個字(分配為占用4個字節(jié)),Thumb指令的長度剛好是半字(占用2個字節(jié))。3.4 體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型第3章 目錄1.簡介2.ARM7T

19、DMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.5 處理器狀態(tài)處理器狀態(tài) ARM7TDMI處理器內(nèi)核使用V4T版本的ARM結(jié)構(gòu),該結(jié)構(gòu)包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態(tài):ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令;Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的ARM指令。注意:兩個狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。3.5 處理器狀態(tài)處理器狀態(tài) 使用BX指令將ARM7TDMI內(nèi)核

20、的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進行切換(詳見第4章) ,程序如下所示。;從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)號第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O處理器模式說明備注 用戶 (usr)正常程序執(zhí)行模式不能直接切

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

22、ys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式 管理 (svc)操作系統(tǒng)保護代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式 除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許(或者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,

23、而用戶模式不能直接切換到別的模式。 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統(tǒng) (sys)3.6 處理器模式異常模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式 管理 (svc)操作系統(tǒng)保護代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM

24、7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當(dāng)特定的異常出現(xiàn)時,處理器進入相應(yīng)的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態(tài)不可靠。3.6 處理器模式用戶和系統(tǒng)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (

25、fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式 管理 (svc)操作系統(tǒng)保護代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時進入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式 這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個模式訪問一些受控的資源。 系統(tǒng) (sys) 用戶 (usr)第3章

26、 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.7 內(nèi)部寄存器簡介 在ARM7TDMI處理器內(nèi)部有37個用戶可見的寄存器。 在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不盡相同。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v

27、5)R8R8_fiq *R9(SB,v6)R9R9_fiq *R10(SL,v7)R10R10_fiq *R11(FP,v8)R11R11_fiq *R12(IP)R12R12_fiq *R13(SP)R13R13_svc*R13_abt *R13_und *R13_irq *R13_fiq *R14(LR)R14R14_svc *R14_abt *R14_und *R14_irq *R14_fiq *R15(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編

28、中的名稱各模式下實際訪問的寄存器用戶系統(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)寄存器

29、CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_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)寄存器。寄存器類別寄存器在匯編中的

30、名稱各模式下實際訪問的寄存器用戶系統(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)寄存器CP

31、SRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R

32、9R8R7R6R5R4R3R2R1R0未定義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)R7R8

33、(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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12

34、R11_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_fiqR11(

35、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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R

36、7R6R5R4R3R2R1R0 其中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_svcR13_abtR13_

37、undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾

38、乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_abt

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

40、3(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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器 寄存器R13

41、、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)R10R10_fiqR11(FP,v8)

42、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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP) 寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類別寄存器在匯編中的名稱各模

43、式下實際訪問的寄存器用戶系統(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)寄存器CPSRCP

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

45、在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;3.7 內(nèi)部寄存器R14寄存器與異常發(fā)生 異常發(fā)生時,程序要跳轉(zhuǎn)至異常服務(wù)程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。3.7 內(nèi)部寄存器R14寄存器注意要點 當(dāng)發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。3.7 內(nèi)

46、部寄存器R14寄存器注意要點R14R14_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_irq3.7 內(nèi)部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式

47、下的R14沒有被破壞;3. 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(

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

50、8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼3.7 內(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)在程序中計算出該芯片的偏移量。3.7 內(nèi)部寄存器讀R15的限制計算偏移量(PC值和當(dāng)前指令地址的差)程序代碼:SUBR1,PC,#4;R1=下面STR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然后重裝SU

51、BR0,R0,R1;計算偏移量04812ARM狀態(tài)3.7 內(nèi)部寄存器寫R15的限制 正常操作時,寫入R15 的值被當(dāng)作一個指令地址,程序從這個地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無條件跳轉(zhuǎn))。 3.7 內(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ù)測。寄存器類別寄存器在匯編中的名稱各模式下實

52、際訪問的寄存器用戶系統(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)寄存器CPSRCPSRS

53、PSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態(tài)寄存器CPSR 寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當(dāng)前值,異常退出時可通過它恢復(fù)CPSR。詳細描述參看3.8小節(jié)。3.7 內(nèi)部寄存器ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系 Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器有如下的關(guān)系:Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7相同;Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;Thumb狀態(tài)SP映射到ARM狀

54、態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)。Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針(R13) 連接寄存器(R14) 程序計數(shù)器(R15) 低寄存器高寄存器3.7 內(nèi)部寄存器在Thumb狀態(tài)中訪問高寄存器 在Thumb狀態(tài)中,高寄存器(R8R15)不是標(biāo)準(zhǔn)寄存器集的一部分。匯編語言程序員對它們的訪問受到限制。 可以使用MOV、CMP和ADD指令對高寄存器操作,詳見第4章。第3章 目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內(nèi)

55、部框圖4.體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型5.處理器狀態(tài)6.處理器模式7.內(nèi)部寄存器8. 程序狀態(tài)寄存器9.異常10.復(fù)位11.存儲器及存儲器映射I/O3.8 程序狀態(tài)寄存器簡介 ARM7TDMI內(nèi)核包含1個CPSR和5個供異常處理程序使用的SPSR。CPSR反映了當(dāng)前處理器的狀態(tài),其包含:4個條件代碼標(biāo)志(負(N)、零(Z)、進位(C)和溢出(V) );2個中斷禁止位,分別控制一種類型的中斷; 5個對當(dāng)前處理器模式進行編碼的位;1個用于指示當(dāng)前執(zhí)行指令(ARM還是Thumb)的位。 NZCVIM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 03

56、.8 程序狀態(tài)寄存器簡介條件代碼標(biāo)志保留控制位溢出標(biāo)志 oVerflow進位或借位擴展 Carry零 Zero負或小于 NegativeIRQ禁止 InterruptFIQ禁止 Fast狀態(tài)位 Thumb模式位 ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式3.8 程序狀態(tài)寄存器簡介 每個異常模式還帶有一個程序狀態(tài)保存寄存器 (SPSR),它用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR通過特殊指令(MRS、MSR)進行訪問。3.8 程序狀態(tài)寄存器條件代碼標(biāo)志 大多數(shù)“數(shù)值處理指令”可以選擇是否影響條件代碼標(biāo)志位。通常如果指令帶S后綴,則該指令的執(zhí)行會影響條件代碼標(biāo)志;但

57、有一些指令的執(zhí)行總是會影響條件代碼標(biāo)志。 N、 Z、 C和V位都是條件代碼標(biāo)志。算術(shù)操作、邏輯操作、MSR或者LDM指令可以對這些位進行設(shè)置。所有ARM指令都可按條件來執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。3.8 程序狀態(tài)寄存器條件代碼標(biāo)志各標(biāo)志位的含義如下:N 運算結(jié)果的最高位反映在該標(biāo)志位。對于有符號二進制補碼,結(jié)果為負數(shù)時N=1,結(jié)果為正數(shù)或零時N=0;Z 指令結(jié)果為0時Z=1(通常表示比較結(jié)果“相等”),否則Z=0;3.8 程序狀態(tài)寄存器條件代碼標(biāo)志各標(biāo)志位的含義如下:C 當(dāng)進行加法運算(包括CMN指令),并且最高位產(chǎn)生進位時C=1,否則C=0。當(dāng)進行減法運算(包括CMP

58、指令),并且最高位產(chǎn)生借位時C=0,否則C=1。對于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變; V當(dāng)進行加法/減法運算,并且發(fā)生有符號溢出時V=1,否則V=0,其它指令V通常不變。3.8 程序狀態(tài)寄存器控制位 CPSR的最低8位為控制位,當(dāng)發(fā)生異常時,這些位被硬件改變。當(dāng)處理器處于一個特權(quán)模式時,可用軟件操作這些位。 它們分別是:中斷禁止位;T位;模式位。3.8 程序狀態(tài)寄存器控制位中斷禁止位包括I和F位:當(dāng)I位置位時,IRQ中斷被禁止;當(dāng)F位置位時,F(xiàn)IQ中斷被禁止。T位反映了正在操作的狀態(tài):當(dāng)T位為1時,處理器正在Thumb狀態(tài)下運行;當(dāng)T位清零時,處理

59、器正在ARM狀態(tài)下運行。3.8 程序狀態(tài)寄存器控制位模式位包括M4、M3、M2、M1和M0,這些位決定處理器的操作模式。注意:不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設(shè)置,將引起一個無法恢復(fù)的錯誤。M4:0模式可見的Thumb狀態(tài)寄存器可見的ARM狀態(tài)寄存器10000用戶R0R7,SP,LR,PC,CPSRR0R14,PC, CPSR 10001快中斷R0R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiq R0R7,R8_fiqR14_fiq,PC,CPSR, SPSR_fiq 10010中斷R0R7,SP_irq,LR_irq,PC,CPSR, SPSR

60、_fiq R0R12,R13_irq,R14_irq,PC,CPSR, SPSR_irq 10011管理R0R7,SP_svc,LR_svc,PC,CPSR, SPSR_svc R0R12,R13_svc,R14_svc,PC,CPSR, SPSR_svc 10111中止R0R7,SP_abt,LR_abt,PC,CPSR, SPSR_abt R0R12,R13_abt,R14_abt,PC,CPSR, SPSR_abt 11011未定義R0R7,SP_und,LR_und,PC,CPSR, SPSR_und R0R12,R13_und,R14_und,PC,CPSR,SPSR_und1111

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論