




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
3CHAPTERARM7體系結構1ppt課件3CHAPTERARM7體系結構1p第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O2ppt課件第3章目錄1.簡介9.異常2ppt課件精品資料精品資料你怎么稱呼老師?如果老師最后沒有總結一節課的重點的難點,你是否會認為老師的教學方法需要改進?你所經歷的課堂,是講座式還是討論式?教師的教鞭“不怕太陽曬,也不怕那風雨狂,只怕先生罵我笨,沒有學問無顏見爹娘……”“太陽當空照,花兒對我笑,小鳥說早早早……”嵌入式系統--ARM7體系結構--ppt課件第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O5ppt課件第3章目錄1.簡介9.異常5ppt課件3.1ARM簡介ARM公司簡介ARM是AdvancedRISCMachines的縮寫,它是一家微處理器行業的知名企業,該企業設計了大量高性能、廉價、耗能低的RISC(精簡指令集)處理器。公司的特點是只設計芯片,而不生產。它將技術授權給世界上許多著名的半導體、軟件和OEM廠商,并提供服務。6ppt課件3.1ARM簡介ARM公司簡介ARM是A3.1ARM簡介ARM公司簡介將技術授權給其它芯片廠商形成各具特色的ARM芯片...7ppt課件3.1ARM簡介ARM公司簡介將技術授權給其它芯片廠商形3.1ARM簡介微處理器是整個系統的核心,通常由3大部分組成:控制單元、算術邏輯單元和寄存器。
算術邏輯單元寄存器控制單元微處理器存儲器輸入輸出8ppt課件3.1ARM簡介微處理器是整個系統的核心,通常由3大部分3.1ARM簡介ARM處理器的應用當前主要應用于消費類電子領域;到目前為止,基于ARM技術的微處理器應用約占據了32位嵌入式微處理器75%以上的市場份額全球80%的GSM/3G手機、99%的CDMA手機以及絕大多數PDA產品均采用ARM體系的嵌入式處理器,“掌上計算”相關的所有領域皆為其所主宰。ARM技術正在逐步滲入到我們生活的各個方面。9ppt課件3.1ARM簡介ARM處理器的應用9ppt課件3.1ARM簡介ARM體系結構ARM處理器為RISC芯片,其簡單的結構使ARM內核非常小,這使得器件的功耗也非常低。它具有經典RISC的特點:大的、統一的寄存器文件;裝載/保存結構,數據處理操作只針對寄存器的內容,而不直接對存儲器進行操作;簡單的尋址模式;統一和固定長度的指令域,簡化了指令的譯碼,便于指令流水線設計。10ppt課件3.1ARM簡介ARM體系結構ARM處理3.1ARM簡介ARM體系結構ARM體系結構的特點:每條數據處理指令都對算術邏輯單元和移位器控制,實現了ALU和移位器的最大利用;地址自動增加和減少尋址模式,優化程序循環;多寄存器裝載和存儲指令實現最大數據吞吐量;所有指令的條件執行實現最快速的代碼執行。11ppt課件3.1ARM簡介ARM體系結構ARM體系結構的特點:每條3.1ARM簡介各ARM體系結構版本ARM體系結構從最初開發到現在有了很大的改進,并仍在完善和發展。為了清楚的表達每個ARM應用實例所使用的指令集,ARM公司定義了6種主要的ARM指令集體系結構版本,以版本號V1~V6表示。12ppt課件3.1ARM簡介各ARM體系結構版本AR3.1ARM簡介各ARM體系結構版本——V1該版本的ARM體系結構,只有26位的尋址空間,沒有商業化,其特點為:基本的數據處理指令(不包括乘法);字節、字和半字加載/存儲指令;具有分支指令,包括在子程序調用中使用的分支和鏈接指令;在操作系統調用中使用的軟件中斷指令。13ppt課件3.1ARM簡介各ARM體系結構版本——V13.1ARM簡介各ARM體系結構版本——V2同樣為26位尋址空間,現在已經廢棄不再使用,它相對V1版本有以下改進:具有乘法和乘加指令;支持協處理器;快速中斷模式中的兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。14ppt課件3.1ARM簡介各ARM體系結構版本——V23.1ARM簡介各ARM體系結構版本——V3尋址范圍擴展到32位(目前已廢棄),具有獨立的程序:具有乘法和乘加指令;支持協處理器;快速中斷模式中具有的兩個以上的分組寄存器;具有原子性加載/存儲指令SWP和SWPB。15ppt課件3.1ARM簡介各ARM體系結構版本——V33.1ARM簡介各ARM體系結構版本——V4不在為了與以前的版本兼容而支持26位體系結構,并明確了哪些指令會引起未定義指令異常發生,它相對V3版本作了以下的改進:半字加載/存儲指令;字節和半字的加載和符號擴展指令;具有可以轉換到Thumb狀態的指令(BX);增加了用戶模式寄存器的新的特權處理器模式。16ppt課件3.1ARM簡介各ARM體系結構版本——V43.1ARM簡介各ARM體系結構版本——V5在V4版本的基礎上,對現在指令的定義進行了必要的修正,對V4版本的體系結構進行了擴展并并增加了指令,具體如下:改進了ARM/Thumb狀態之間的切換效率;E---增強型DSP指令集,包括全部算法操作和16位乘法操作;J----支持新的JAVA,提供字節代碼執行的硬件和優化軟件加速功能。17ppt課件3.1ARM簡介各ARM體系結構版本——V53.1ARM簡介ARM處理器核簡介ARM公司開發了很多系列的ARM處理器核,目前最新的系列已經是ARM11了,而ARM6核以及更早的系列已經很罕見了。目前應用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleARM11Cortex18ppt課件3.1ARM簡介ARM處理器核簡介ARM預取(Fetch)譯碼(Decode)執行(Execute)預取(Fetch)譯碼(Decode)執行(Execute)訪存(Memory)寫入(Write)預?。‵etch)譯碼(Decode)發送(Issue)預?。‵etch)預?。‵etch)執行(Execute)訪存(Memory)寫入(Write)譯碼(Decode)發送(Issue)執行(Execute)轉換(Snny)訪存(Memory)寫入(Write)ARM7ARM9ARM10ARM113.1ARM簡介19ppt課件預取譯碼執行預取譯碼執行訪存寫入預取譯碼發送預取預取執行訪存項目ARM7ARM9ARM10ARM11流水線3568典型頻率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS**/MHz0.971.11.31.2架構馮
諾伊曼哈佛哈佛哈佛3.1ARM簡介20ppt課件項目ARM7ARM9ARM10ARM11流水線3568典型頻ARM系列微處理器核特點ARM7ARM7TDMI:整數處理核ARM7TDMI處理器的可綜合版本;ARM720T:帶MMU的處理器核心,支持操作系統;ARM7EJ-S:帶有DSP和JazelleTM技術,能夠實現Java加速功能馮
諾伊曼體系結構;ARMTDMI是目前應用最廣的微處理器核ARM720T帶有MMU和8KB的指令數據混合cache;ARM7EJ-執行ARMv5TEJ指令,5級流水線,提供Java加速指令,沒有存儲器保護。ARM9ARM920T:帶有獨立的16KB數據和指令Cache;ARM922T:帶有獨立的8位KB數據和指令Cache;ARM940T–包括更小數據和指令Cache和一個MPU基于ARM9TDMI,帶16位的Thumb指令集,增強代碼密度最多到35%;在0.13μm工藝下最高性能可達到300MIPS(Dhrystone2.1測試標準);集成了數據和指令Chche;32位AMBA總線接口的MMU支持;可在0.18μm、0.15μm和0.13μm工藝的硅芯片上實現。3.1ARM簡介21ppt課件ARM系列微處理器核特點ARM7ARM7TDMI:整數處理核ARM9EARM926EJ-S:Jazelle技術,有MMU,可配置的數據和指令Cache,TCM接口;ARM946E-S:可配置的數據和指令Cache及TCM;ARM966E-S:針對要求高性能和低功耗的可預測的指令執行時間的硬實時應用設計ARM968E-S:最小、功耗最小的
ARM9E系列處理器,針對嵌入式實時應用設計;ARM9E是針對微控制器、DSP和Java的單處理器解決方案;ARM
Jazelle
技術提供8倍的Java加速性能(ARM926EJ-S);5-級整數流水線;在0.13μm工藝下最高性能可達到300MIPS(Dhrystone2.1測試標準);可選擇的
向量浮點單元VFP9協處理器指令優秀海浮點性能,對于3D圖形加速和實時控制可達到
215MFLOPS。高性能的AHB總線,帶MMU可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實現。ARM10EARM1020E:帶DSP指令集,在片調試功能,獨立的32KB數據和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨立的數據和指令Cache變為16KB;ARM1026EJ-S:同時具有MPU和MMU,可綜合版本;帶分支預測的6級整數流水線;在0.13μm工藝下最高性能可達到430MIPS(Dhrystone2.1測試標準);對于3D圖形運算和實時控制采用VFP協處理器,浮點運算性能最高可達650MFLOPS;雙64位AMBA總線接口和64位內部總路線接口;優化的緩存結構提高了處理器訪問低速存儲器的性能;可在0.18μm,0.15μm,0.13μm工藝的硅芯片上實現3.1ARM簡介22ppt課件ARM9EARM926EJ-S:Jazelle技術,有MMARM11ARM11MPCore:可綜合的多處理器核,1至4個處理器可配置;ARM1136J(F)-S:可配置的數據和指令Cache,可提供1.9位的MPEG4編碼加速功能;ARM1156T2(F)-S:帶集成浮點協處理器,帶內存保護單元MPU
;ARM1176JZ(F)-S:帶針對CPU和系統安全架構擴展的TrustZone技術。增強的Thumb、Jazelle、DSP擴展支持;帶片上和系統安全TrustZone技術支持;在0.13μm工藝下最高可達到550MHz;MPCore在0.13μm工藝下最高性能可達到740MIPS(Dhrystone2.1測試標準);支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。SecurCoreSC100:第一個32位安全處理器;、SC110:在SC100上增加密鑰協處理器;SC200:帶Jazelle技術的高級安全處理器;SC210:在SC200上增加密鑰協處理器SecurCore是專門為智能卡、安全IC提供的32位安全處理器,為電子商務、銀行、網絡、移動多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長的Java卡平臺提供Java加速功能;3.1ARM簡介23ppt課件ARM11ARM11MPCore:可綜合的多處理器核,1至CortexCortex-A:面向應用的微處理器,針對復雜操作系統和應用程序設計;Cortex-R:針對實時系統的嵌入式處理器;Cortex-M:針對成本敏感應用優化的深度嵌入式處理器;2004年發布,提供增強的媒體和數字處理能力,增加了系統性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令集提供了更高的代碼存儲密度,進一步降低成本;Intel系列StrongARM:ARMv4體系XScale:ARMv5TE體系,增加MMX指令StrongARM主要應用于手持設備和PDA,5級流水線,具有獨立的數據和指令Cache,不支持Thumb指令集,目前已停產;XScale是目前Intel公司主推的高性能嵌入式處理器,分通用處理器、網絡處理器和I/O處理器三類。其中通用處理器有PXA25x、PXA26x、PXA27x三個系列,被廣泛應用于智能手機、PDA領域。3.1ARM簡介24ppt課件CortexCortex-A:面向應用的微處理器,針對復雜操第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O25ppt課件第3章目錄1.簡介9.異常25ppt課件3.2ARM7TDMI簡介ARM7TDMI基于ARM體系結構V4版本,是目前低端的ARM核。具有廣泛的應用,其最顯著的應用為數字移動電話。注意:“ARM核”并不是芯片,ARM核與其它部件如RAM、ROM、片內外設組合在一起才能構成現實的芯片。26ppt課件3.2ARM7TDMI簡介ARM7TDM3.2ARM7TDMI簡介ARM7TDMI支持32位尋址范圍,并彌補了ARM6不能在低于5V電源電壓下工作的不足。ARM7TDMI的后綴意義為:支持高密度16位的Thumb指令集;支持片上調試;支持64位乘法;支持Embeded-ICE觀察硬件;ARM7TDMI的可綜合(synthesizable)版本(軟核),對應用工程師來說其編程模型與ARM7TDMI一致;ARM7TDMI-S27ppt課件3.2ARM7TDMI簡介ARM7TDM3.2ARM7TDMI簡介ARM7TDMI處理器是ARM通用32位微處理器家族的成員之一。它具有優異的性能,但功耗卻很低,使用門的數量也很少。它屬于精簡指令集計算機(RISC),比復雜指令集計算機(CISC)要簡單得多。這樣的簡化實現了:高的指令吞吐量;出色的實時中斷響應;小的、高性價比的處理器宏單元。28ppt課件3.2ARM7TDMI簡介ARM7TDM3.2ARM7TDMI三級流水線ARM7TDMI處理器使用流水線來增加處理器指令流的速度。這樣可使幾個操作同時進行,并使處理和存儲器系統連續操作,能提供0.9MIPS/MHz的指令執行速度。ARM7TDMI的流水線分3級,分別為:取指
譯碼
執行29ppt課件3.2ARM7TDMI三級流水線ARM73.2ARM7TDMI存儲器訪問ARM7TDMI處理器使用了馮·諾依曼(VonNeumann)結構,指令和數據共用一條32位總線。只有裝載、存儲和交換指令可以對存儲器中的數據進行訪問。數據可以是字節(8位)、半字(16位)或者字(32位)。30ppt課件3.2ARM7TDMI存儲器訪問ARM7第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O31ppt課件第3章目錄1.簡介9.異常31ppt課件3.3系統內部結構圖ARM7TDMI處理器部件和主要信號路徑的框圖如圖所示。它內部由處理器核、用于邊界掃描的TAP控制器和在線仿真器ICE組成。雙向數據總線D[31:0]被分割成單向輸入和輸出總線,以便于與外部存儲器兼容。32ppt課件3.3系統內部結構圖ARM7TDMI處理器部件和主要信號3.3ARM7TDMI的模塊和內核框圖ARM7TDMI模塊地址寄存器寄存器組31*32位寄存器(6個狀態寄存器)地址增量器乘法器桶形移位器32位ALU寫數據寄存器指令流水線讀數據寄存器Thumb指令譯碼器指令譯碼和邏輯控制ADDR[31:0]CLKCLENCFGBIGENDnIRQnFIQnRESETABORTLOCKWRITESIZE[1:0]PROT[1:0]TRANS[1:0]DBG輸出DBG輸入CP控制CP握手WDATA[31:0]RDATA[31:0]掃描調試控制A總線B總線ALU總線增量器總線PC總線33ppt課件3.3ARM7TDMI的模塊和內核框圖ARM7TDMI模3.3ARM7TDMI功能信號圖ARM7TDMI34ppt課件3.3ARM7TDMI功能信號圖ARM7TDMI34pp第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O35ppt課件第3章目錄1.簡介9.異常35ppt課件3.4體系結構直接支持的數據類型體系結構直接支持的數據類型ARM處理器支持下列數據類型:字節8位半字16位(必須分配為占用兩個字節)字32位(必須分配為占用4各字節)111234236ppt課件3.4體系結構直接支持的數據類型體系結構直接支持的數據類體系結構直接支持的數據類型注意:V4版本之后的ARM結構都支持這3種結構(包括V4版本),而以前的版本只支持字節和字;當數據類型定義為無符號型時,N位數據值使用正常的二進制格式表示范圍為0~2N-1的非負整數;當數據類型定義為有符號型時,N位數據值使用2的補碼格式表示范圍為-2N-1~+2N-1-1的整數;3.4體系結構直接支持的數據類型37ppt課件體系結構直接支持的數據類型注意:3.4體系結構直接支持的體系結構直接支持的數據類型注意:所有數據操作,例如ADD,都以字為單位;裝載和保存指令可以對字節、半字和字進行操作,當裝載字節或半字時自動實現零擴展或符號擴展;ARM指令的長度剛好是1個字(分配為占用4個字節),Thumb指令的長度剛好是半字(占用2個字節)。3.4體系結構直接支持的數據類型38ppt課件體系結構直接支持的數據類型注意:3.4體系結構直接支持的第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O39ppt課件第3章目錄1.簡介9.異常39ppt課件3.5處理器狀態處理器狀態ARM7TDMI處理器內核使用V4T版本的ARM結構,該結構包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態:ARM狀態:32位,這種狀態下執行的是字方式的ARM指令;Thumb狀態:16位,這種狀態下執行半字方式的ARM指令。注意:兩個狀態之間的切換并不影響處理器模式或寄存器內容。40ppt課件3.5處理器狀態處理器狀態ARM7TDM3.5處理器狀態處理器狀態使用BX指令將ARM7TDMI內核的操作狀態在ARM狀態和Thumb狀態之間進行切換(詳見第4章),程序如下所示。;從Arm狀態切換到Thumb狀態LDRR0,=Lable+1BXR0;從Thumb狀態切換到ARM狀態LDRR0,=LableBXR0地址最低位為1,表示切換到Thumb狀態地址最低位為0,表示切換到ARM狀態跳轉地址標號41ppt課件3.5處理器狀態處理器狀態使用BX指令將第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O42ppt課件第3章目錄1.簡介9.異常42ppt課件處理器模式說明備注用戶(usr)正常程序執行模式不能直接切換到其它模式系統(sys)運行操作系統的特權任務與用戶模式類似,但具有可以直接切換到其它模式等特權快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統保護模式系統復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式3.6處理器模式處理器7種模式43ppt課件處理器模式說明備注用戶(usr)正常程序執3.6處理器模式特權模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式除用戶模式外,其它模式均為特權模式。ARM內部寄存器和一些片內外設在硬件設計上只允許(或者可選為只允許)特權模式下訪問。此外,特權模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)系統(sys)44ppt課件3.6處理器模式特權模式處理器模式說明備注用戶3.6處理器模式異常模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式未定義(und)中止(abt)管理(svc)中斷(irq)快中斷(fiq)這五種模式稱為異常模式。它們除了可以通過程序切換進入外,也可以由特定的異常進入。當特定的異常出現時,處理器進入相應的模式。每種異常模式都有一些獨立的寄存器,以避免異常退出時用戶模式的狀態不可靠。45ppt課件3.6處理器模式異常模式處理器模式說明備注用戶3.6處理器模式用戶和系統模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式這兩種模式都不能由異常進入,而且它們使用完全相同的寄存器組。系統模式是特權模式,不受用戶模式的限制。操作系統在該模式下訪問用戶模式的寄存器就比較方便,而且操作系統的一些特權任務可以使用這個模式訪問一些受控的資源。系統(sys)用戶(usr)46ppt課件3.6處理器模式用戶和系統模式處理器模式說明備注用戶第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O47ppt課件第3章目錄1.簡介9.異常47ppt課件3.7內部寄存器簡介在ARM7TDMI處理器內部有37個用戶可見的寄存器。在不同的工作模式和處理器狀態下,程序員可以訪問的寄存器也不盡相同。48ppt課件3.7內部寄存器簡介在ARM7TDMI處寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)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狀態寄存器R16(CPSR)CPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態各模式下的寄存器49ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態各模式下的寄存器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個狀態寄存器。50ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷ARM狀態各模式下可以訪問的寄存器51ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編語言中寄存器R0~R13為保存數據或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結構作為特殊用途,并且可用于任何使用通用寄存器的指令。52ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應于相同的32位物理寄存器。53ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組寄存器。它們所對應的物理寄存器取決于當前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器54ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有兩個分組的物理寄存器。一個用于除FIQ模式之外的所有寄存器模式,另一個用于FIQ模式。這樣在發生FIQ中斷后,可以加速FIQ的處理速度。55ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器寄存器R13、R14分別有6個分組的物理寄存器。一個用于用戶和系統模式,其余5個分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR1356ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SP)。在ARM指令集當中,沒有以特殊方式使用R13的指令或其它功能,只是習慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。57ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結構上有兩個特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當發生異常時,將R14對應的異常模式版本設置為異常返回地址(有些異常有一個小的固定偏移量)。58ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系Lable程序A程序BR143.7內部寄存器R14(LR)寄存器與子程序調用BLLable地址A???MOVPC,LRR14(地址A)Lable???1.程序A執行過程中調用程序B;操作流程2.程序跳轉至標號Lable,執行程序B。同時硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執行最后,將R14寄存器的內容放入PC,返回程序A;59ppt課件Lable程序A程序BR143.7內部寄存器R14(LR3.7內部寄存器R14寄存器與異常發生異常發生時,程序要跳轉至異常服務程序,對返回地址的處理與子程序調用類似,都是由硬件完成的。區別在于有些異常有一個小常量的偏移。60ppt課件3.7內部寄存器R14寄存器與異常發生異3.7內部寄存器R14寄存器注意要點當發生異常嵌套時,這些異常之間可能會發生沖突。例如:如果用戶在用戶模式下執行程序時發生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。61ppt課件3.7內部寄存器R14寄存器注意要點當發3.7內部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...XA地址A地址A1.執行用戶模式下的程序;2.發生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq62ppt課件3.7內部寄存器R14寄存器注意要點R14R14_irq3.7內部寄存器R14寄存器注意要點R14R14_irq用戶模式下的程序IRQ模式下的程序AaB...XA地址A地址A1.執行用戶模式下的程序;2.發生IRQ中斷,硬件將某個地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒有被破壞;3.IRQ服務程序A執行完畢,將R14_irq寄存器的內容減去某個常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB...XA地址B地址B4.如果在IRQ處理程序中打開IRQ中斷,并且再次發生IRQ中斷;5.硬件將返回地址保存在R14_irq寄存器中,原來保存的返回地址將被覆蓋,造成錯誤;R14_irq被破壞6.在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時,發生錯誤,將不能正確返回;returnreturn解決辦法是確保R14的對應版本在發生中斷嵌套時不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。63ppt課件3.7內部寄存器R14寄存器注意要點R14R14_irq寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計數器R15(PC)寄存器R15為程序計數器(PC),它指向正在取指的地址。可以認為它是一個通用寄存器,但是對于它的使用有許多與指令相關的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結果將是不可預測的。64ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系3.7內部寄存器讀R15的限制正常操作時,從R15讀取的值是處理器正在取指的地址,即當前正在執行指令的地址加上8個字節(兩條ARM指令的長度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。LDRR0,PC??????PCPC-4PC-8正在執行正在譯碼正在取指流水線狀態地址程序代碼65ppt課件3.7內部寄存器讀R15的限制正常操作時3.7內部寄存器讀R15的限制當使用STR或STM指令保存R15時,會有一個例外。這些指令可能將當前指令地址加8字節或加12字節保存(將來可能還有其它數字)。偏移量是8還是12取決于具體的ARM芯片,但是對于一個確定的芯片,這個值是一個常量。所以最好避免使用STR和STM指令來保存R15,如果很難做到,那么應當在程序中計算出該芯片的偏移量。66ppt課件3.7內部寄存器讀R15的限制當使用ST3.7內部寄存器讀R15的限制計算偏移量(PC值和當前指令地址的差)程序代碼:SUB R1,PC,#4 ;R1=下面STR指令的地址STR PC,[R0] ;保存STR指令地址+偏移量LDR R0,[R0] ;然后重裝SUB R0,R0,R1 ;計算偏移量04812ARM狀態67ppt課件3.7內部寄存器讀R15的限制計算偏移量(PC值和當前指3.7內部寄存器寫R15的限制正常操作時,寫入R15的值被當作一個指令地址,程序從這個地址處繼續執行(相當于執行一次無條件跳轉)。68ppt課件3.7內部寄存器寫R15的限制正常操作時3.7內部寄存器寫R15的限制由于ARM指令以字節為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規則取決于內核結構的版本:在ARM結構V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉地址由指令的實際目標地址(寫入R15的值)和0xFFFFFFFC相與得到;在ARM結構V4版及以上版本中,寫入R15的值的最低兩位為0,如果不是,結果將不可預測。69ppt課件3.7內部寄存器寫R15的限制由于ARM寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態寄存器CPSR寄存器CPSR為程序狀態寄存器,在異常模式中,另外一個寄存器“程序狀態保存寄存器(SPSR)”可以被訪問。每種異常都有自己的SPSR,在進入異常時它保存CPSR的當前值,異常退出時可通過它恢復CPSR。詳細描述參看3.8小節。70ppt課件寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系3.7內部寄存器ARM狀態和Thumb狀態之間寄存器的關系Thumb狀態寄存器與ARM狀態寄存器有如下的關系:Thumb狀態R0~R7與ARM狀態R0~R7相同;Thumb狀態CPSR和SPSR與ARM狀態CPSR和SPSR相同;Thumb狀態SP映射到ARM狀態R13;Thumb狀態LR映射到ARM狀態R14;Thumb狀態PC映射到ARM狀態PC(R15)。71ppt課件3.7內部寄存器ARM狀態和Thumb狀態之間寄存器的關Thumb狀態寄存器在Arm狀態寄存器上的映射R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R0
堆棧指針(R13)
連接寄存器(R14)
程序計數器(R15)
低寄存器高寄存器72ppt課件Thumb狀態寄存器在Arm狀態寄存器上的映射R1R2R3.7內部寄存器在Thumb狀態中訪問高寄存器在Thumb狀態中,高寄存器(R8~R15)不是標準寄存器集的一部分。匯編語言程序員對它們的訪問受到限制??梢允褂肕OV、CMP和ADD指令對高寄存器操作,詳見第4章。73ppt課件3.7內部寄存器在Thumb狀態中訪問高寄存器第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O74ppt課件第3章目錄1.簡介9.異常74ppt課件3.8程序狀態寄存器簡介ARM7TDMI內核包含1個CPSR和5個供異常處理程序使用的SPSR。CPSR反映了當前處理器的狀態,其包含:4個條件代碼標志(負(N)、零(Z)、進位(C)和溢出(V));2個中斷禁止位,分別控制一種類型的中斷;5個對當前處理器模式進行編碼的位;1個用于指示當前執行指令(ARM還是Thumb)的位。75ppt課件3.8程序狀態寄存器簡介ARM7TDMNZCV——IM0M1M2M3M4TF—...3130292827268765432103.8程序狀態寄存器簡介條件代碼標志保留控制位溢出標志oVerflow進位或借位擴展Carry零Zero負或小于NegativeIRQ禁止InterruptFIQ禁止Fast狀態位Thumb模式位ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式76ppt課件NZCV——IM0M1M2M3M4TF—...313.8程序狀態寄存器簡介每個異常模式還帶有一個程序狀態保存寄存器(SPSR),它用于保存在異常發生之前的CPSR。CPSR和SPSR通過特殊指令(MRS、MSR)進行訪問。77ppt課件3.8程序狀態寄存器簡介每個異常模式還3.8程序狀態寄存器條件代碼標志大多數“數值處理指令”可以選擇是否影響條件代碼標志位。通常如果指令帶S后綴,則該指令的執行會影響條件代碼標志;但有一些指令的執行總是會影響條件代碼標志。N、Z、C和V位都是條件代碼標志。算術操作、邏輯操作、MSR或者LDM指令可以對這些位進行設置。所有ARM指令都可按條件來執行,而Thumb指令中只有分支指令可按條件執行。78ppt課件3.8程序狀態寄存器條件代碼標志大多數“3.8程序狀態寄存器條件代碼標志各標志位的含義如下:N運算結果的最高位反映在該標志位。對于有符號二進制補碼,結果為負數時N=1,結果為正數或零時N=0;Z指令結果為0時Z=1(通常表示比較結果“相等”),否則Z=0;79ppt課件3.8程序狀態寄存器條件代碼標志各標志位的含義如下:793.8程序狀態寄存器條件代碼標志各標志位的含義如下:C當進行加法運算(包括CMN指令),并且最高位產生進位時C=1,否則C=0。當進行減法運算(包括CMP指令),并且最高位產生借位時C=0,否則C=1。對于結合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變;V當進行加法/減法運算,并且發生有符號溢出時V=1,否則V=0,其它指令V通常不變。80ppt課件3.8程序狀態寄存器條件代碼標志各標志位的含義如下:803.8程序狀態寄存器控制位CPSR的最低8位為控制位,當發生異常時,這些位被硬件改變。當處理器處于一個特權模式時,可用軟件操作這些位。它們分別是:中斷禁止位;T位;模式位。81ppt課件3.8程序狀態寄存器控制位CPSR的最3.8程序狀態寄存器控制位中斷禁止位包括I和F位:當I位置位時,IRQ中斷被禁止;當F位置位時,FIQ中斷被禁止。T位反映了正在操作的狀態:當T位為1時,處理器正在Thumb狀態下運行;當T位清零時,處理器正在ARM狀態下運行。82ppt課件3.8程序狀態寄存器控制位中斷禁止位包括I和F位:82p3.8程序狀態寄存器控制位模式位包括M4、M3、M2、M1和M0,這些位決定處理器的操作模式。注意:不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯誤的設置,將引起一個無法恢復的錯誤。83ppt課件3.8程序狀態寄存器控制位模式位包括M4、M3、M2、MM[4:0]模式可見的Thumb狀態寄存器可見的ARM狀態寄存器10000用戶R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSR10001快中斷R0~R7,SP_fiq,LR_fiq,PC,CPSR,SPSR_fiqR0~R7,R8_fiq~R14_fiq,PC,CPSR,SPSR_fiq10010中斷R0~R7,SP_irq,LR_irq,PC,CPSR,SPSR_fiqR0~R12,R13_irq,R14_irq,PC,CPSR,SPSR_irq10011管理R0~R7,SP_svc,LR_svc,PC,CPSR,SPSR_svcR0~R12,R13_svc,R14_svc,PC,CPSR,SPSR_svc10111中止R0~R7,SP_abt,LR_abt,PC,CPSR,SPSR_abtR0~R12,R13_abt,R14_abt,PC,CPSR,SPSR_abt11011未定義R0~R7,SP_und,LR_und,PC,CPSR,SPSR_undR0~R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統R0~R7,SP,LR,PC,CPSRR0~R14,PC,CPSRCPSR模式位設置表84ppt課件M[4:0]模式可見的Thumb狀態寄存器可見的ARM狀態寄3.8程序狀態寄存器保留位CPSR中的保留位被保留將來使用。為了提高程序的可移植性,當改變CPSR標志和控制位時,請不要改變這些保留位。另外,請確保程序的運行不受保留位的值影響,因為將來的處理器可能會將這些位設置為1或者0。85ppt課件3.8程序狀態寄存器保留位CPSR中的保第3章目錄1.簡介2.ARM7TDMI3.ARM7TDMI的模塊和內部框圖4.體系結構直接支持的數據類型5.處理器狀態6.處理器模式7.內部寄存器8.程序狀態寄存器9.異常10.復位11.存儲器及存儲器映射I/O86ppt課件第3章目錄1.簡介9.異常86ppt課件3.9異常簡介只要正常的程序流被暫時中止,處理器就進入異常模式。例如響應一個來自外設的中斷。在處理異常之前,ARM7TDMI內核保存當前的處理器狀態(CPSR->SPSR),這樣當處理程序結束時可以恢復執行原來的程序(SPSR->CPSR)。如果同時發生兩個或更多異常,那么將按照固定的順序來處理異常,詳見“異常優先級”部分。87ppt課件3.9異常簡介只要正常的程序流被暫時中止異常入口/出口匯總異常類型返回指令之前的狀態備注ARMR14_xThumbR14_xBLMOVPC,R14PC+4PC+2此處PC為BL,SWI,為定義的指令取指或預取指中止指令的地址軟件中斷SWIMOVSPC,R14_svcPC+4PC+2未定義的指令MOVSPC,R14_undPC+4PC+2預取指中止SUBSPC,R14_abt,#4PC+4PC+4快中斷SUBSPC,R14_fiq,#4PC+4PC+4此處PC為由于FIQ或IRQ占先而沒有被執行的指令的地址中斷SUBSPC,R14_irq,#4PC+4PC+4數據中止SUBSPC,R14_abt,#8PC+8PC+8此處PC為產生數據中止的裝載或保存指令的地址。
復位無——復位時保存在R14_svc中的值不可預知。
注意:“MOVSPC,R14_svc”是指在管理模式執行MOVSPC,R14指令?!癕OVSPC,R14_und”、“SUBSPC,R14_abt,#4”等指令也是類似的。88ppt課件異常入口/出口匯總異常類型返回指令之前的狀態備注ARMR13.9異常異常的入口和出口處理如果異常處理程序已經把返回地址拷貝到堆棧,那么可以使用一條多寄存器傳送指令來恢復用戶寄存器并實現返回。SUBLR,LR,#4 ;計算返回地址STMFDSP!,{R0-R3,LR} ;保存使用到的寄存器...LDMFDSP!,{R0-R3,PC}^ ;中斷返回中斷處理代碼的開始部分和退出部分89ppt課件3.9異常異常的入口和出口處理如果異常處理程序如果異常處理程序已經把返回地址拷貝到堆棧,那么可以使用一條多寄存器傳送指令來恢復用戶寄存器并實現返回。中斷處理代碼的開始部分和退出部分3.9異常異常的入口和出口處理SUBLR,LR,#4 ;計算返回地址STMFDSP!,{R0-R3,LR} ;保存使用到的寄存器...LDMFDSP!,{R0-R3,PC}^ ;中斷返回注意:中斷返回指令的寄存器列表(其中必須包括PC)后的“^”符號表示這是一條特殊形式的指令。這條指令在從存儲器中裝載PC的同時(PC是最后恢復的),CPSR也得到恢復。這里使用的堆棧指針SP(R13)是屬于異常模式的寄存器,每個異常模式有自己的堆棧指針。這個堆棧指針應必須在系統啟動時初始化。90ppt課件如果異常處理程序已經把返回地址拷貝到堆棧,那么可以3.9異常進入異常
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 1073-2017特色鄉村旅游園區(村)服務質量導則
- DB31/T 1057-2017在用工業鍋爐安全、節能和環保管理基本要求
- CBWQA/T 0002-2013螺旋空氣分離器
- 足部按摩與調節血壓考核試卷
- 資產轉讓補充協議
- 物流企業智能分揀中心租賃與運營支持協議
- 網絡配偶忠誠協議及社交賬號監管執行合同
- 2025年中國辦公室儲物柜行業市場前景預測及投資價值評估分析報告
- 電池梯次利用與環保產業鏈協同發展合作協議
- 資產評估機構與金融機構股權合作投資合同
- 經營崗位筆試題目及答案
- 農行反洗錢與制裁合規知識競賽考試題庫大全-上下
- DGTJ08-202-2020鉆孔灌注樁施工規程 上海市
- 作風建設學習教育讀書班交流發言提綱
- 2025年社會工作者職業水平考試中級實務模擬試卷:社會工作專業能力與團隊協作能力試題
- 2025年《AI人工智能知識競賽》題庫及答案解析
- 全國公開課一等獎人教版小學數學五年級下冊《數學廣角-找次品》課件
- 2022年高中物理同步講義(選修性必修3)第11講-熱力學第一定律(原卷版)
- 電工電焊工安全培訓
- 2025年上半年浙江杭州市屬事業單位統一招聘工作人員371人易考易錯模擬試題(共500題)試卷后附參考答案
- 2025年中鹽京津冀鹽業限責任公司校園招聘管理單位筆試遴選500模擬題附帶答案詳解
評論
0/150
提交評論