版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1第七章 ARM微處理器編程模型4學(xué)時(shí)第七章 ARM微處理器編程模型7.1 ARM 內(nèi)核體系結(jié)構(gòu)(了解)ARM 體系結(jié)構(gòu)版本ARM 內(nèi)核簡(jiǎn)介7.2 ARM 編程模型(理解)處理器工作狀態(tài)處理器運(yùn)行模式寄存器組織數(shù)據(jù)類型和儲(chǔ)存格式異常237.1 ARM內(nèi)核體系結(jié)構(gòu)ARM是Advanced RISC Machines的縮寫,該企業(yè)設(shè)計(jì)了大量高性能、廉價(jià)、耗能低的RISC (精簡(jiǎn)指令集)處理器ARM公司的特點(diǎn)是只設(shè)計(jì)芯片,而不生產(chǎn)。它將技術(shù)授權(quán)給世界上許多著名的半導(dǎo)體、軟件和OEM廠商,并提供服務(wù)將技術(shù)授權(quán)給其它芯片廠商形成各具特色的ARM芯片4ARM處理器的應(yīng)用工業(yè)控制領(lǐng)域:過(guò)程控制、電力控制、數(shù)
2、控機(jī)床無(wú)線通訊領(lǐng)域:目前已有超過(guò)85%的無(wú)線通訊設(shè)備采用了ARM 技術(shù)網(wǎng)絡(luò)應(yīng)用: ADSL 、路由器、交換機(jī)、VoIP消費(fèi)類電子產(chǎn)品:數(shù)字音頻播放器、數(shù)字機(jī)頂盒和游戲機(jī)成像和安全產(chǎn)品:語(yǔ)音及視頻處理、數(shù)碼相機(jī)、打印機(jī)、手機(jī)中的32位SIM 智能卡也采用了ARM 技術(shù)到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75以上的市場(chǎng)份額全球80%的GSM/3G手機(jī)、99%的CDMA手機(jī)以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計(jì)算”相關(guān)的所有領(lǐng)域皆為其所主宰5ARM體系結(jié)構(gòu)的特點(diǎn)RISC芯片,其簡(jiǎn)單的結(jié)構(gòu)使ARM內(nèi)核非常小、功耗低、成本低、性能高統(tǒng)一和固定長(zhǎng)度的
3、指令域,簡(jiǎn)化了指令的譯碼,便于指令流水線設(shè)計(jì)裝載/保存結(jié)構(gòu),數(shù)據(jù)處理操作只針對(duì)寄存器的內(nèi)容,而不直接對(duì)存儲(chǔ)器進(jìn)行操作支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件每條數(shù)據(jù)處理指令都對(duì)算術(shù)邏輯單元和移位器控制,實(shí)現(xiàn)了ALU和移位器的最大利用尋址方式靈活簡(jiǎn)單,執(zhí)行效率高地址自動(dòng)增/減尋址模式,優(yōu)化程序循環(huán)多寄存器裝載和存儲(chǔ)指令實(shí)現(xiàn)最大數(shù)據(jù)吞吐量所有指令的條件執(zhí)行實(shí)現(xiàn)最快速的代碼執(zhí)行ARM處理器內(nèi)核流水線工作流程67ARM體系結(jié)構(gòu)ARM架構(gòu)自誕生至今,已發(fā)展并定義了七種不同的版本,從V1到V7版架構(gòu)V1版架構(gòu)該版架構(gòu)只在原型機(jī)ARM1中出現(xiàn)過(guò),其基本性能有:基本的數(shù)
4、據(jù)處理指令(無(wú)乘法)字節(jié)、半字和字的LOAD/STORE指令轉(zhuǎn)移指令,包括子程序調(diào)用及鏈接指令軟件中斷指令尋址空間:64MB(26根地址線)8ARM體系結(jié)構(gòu)V2版架構(gòu),現(xiàn)在已經(jīng)廢棄不再使用該版架構(gòu)對(duì)V1版進(jìn)行了擴(kuò)展,增加了以下功能:乘法和乘加指令支持協(xié)處理器操作指令快速中斷模式SWP/SWPB基本存儲(chǔ)器與寄存器交換指令尋址空間:64M字節(jié)V3版架構(gòu),目前已廢棄不用尋址范圍擴(kuò)展到32位快速中斷模式中具有的兩個(gè)以上的分組寄存器;具有原子性加載/存儲(chǔ)指令SWP和SWPB比V2增加了當(dāng)前程序狀態(tài)寄存器CPSR和程序狀態(tài)保存寄存器SPSR以便于異常的處理比V2增加了中止和未定義二種處理器模式增加了從異常
5、處理返回的指令功能及MSR/MRS指令9ARM體系結(jié)構(gòu)V4版架構(gòu)V4版架構(gòu)是目前應(yīng)用最廣的ARM體系結(jié)構(gòu),對(duì)V3版架構(gòu)進(jìn)行了進(jìn)一步擴(kuò)充,使ARM使用更加靈活A(yù)RM7、ARM8、ARM9和StrongARM都采用該版架構(gòu)有符號(hào)、無(wú)符號(hào)的半字和有符號(hào)字節(jié)的Load/Store指令增加了16位Thumb指令集完善了軟件中斷SWI指令的功能增加了處理器的特權(quán)模式10ARM體系結(jié)構(gòu)V5版架構(gòu)在V4版基本上增加了一些新的指令,ARM10和Scale都采用該版架構(gòu)。新增功能有:改進(jìn)了ARM/Thumb狀態(tài)之間的切換效率;E-增強(qiáng)型DSP指令集,包括全部算法操作和16位乘法操作;J-支持新的JAVA,提供字節(jié)
6、代碼執(zhí)行的硬件和優(yōu)化軟件加速功能帶有鏈接和交換的BLX指令計(jì)數(shù)前導(dǎo)零CLZ指令軟件斷點(diǎn)指令增加了信號(hào)處理指令為協(xié)處理器增加更多可選擇的指令11ARM體系結(jié)構(gòu)V6版架構(gòu)2001年發(fā)布,ARM11處理器中采用此架構(gòu)。此架構(gòu)在V5版的基礎(chǔ)上增加了以下功能:增加了 SIMD功能擴(kuò)展,提高了嵌入式應(yīng)用系統(tǒng)的音、視頻處理能力改進(jìn)了內(nèi)存管理改進(jìn)了混合端與不對(duì)齊數(shù)據(jù)支持,使得小端系統(tǒng)支持大端數(shù)據(jù)V7版架構(gòu)2005年發(fā)布,采用Thumb-2技術(shù)。M系列傳統(tǒng)單片機(jī)市場(chǎng)A系列高端應(yīng)用處理器市場(chǎng)Cortex-A8TM處理器采用的就是V7版的結(jié)構(gòu)R系列實(shí)時(shí)性控制ARM處理器核與體系結(jié)構(gòu)的對(duì)應(yīng)關(guān)系核體 系 結(jié) 構(gòu)ARM1
7、ARMv1ARM2ARMv2ARM2aS,ARM3ARMv2aARM6,ARM600,ARM610,ARM7,ARM700,ARM710ARMv3Strong ARM,ARM8,ARM810ARMv4ARM7TDMI,ARM710T,ARM720T,ARM740T,ARM9TDMI,ARM920T,ARM940TARMv4TARM9E-S,ARM10TDMI,ARM1020EARMv5TEARM1136J(F)-S,ARM1176JZ(F)-S,ARM11MPCARMv6ARM1156T2(F)-SARMv6T2ARM Cortex-M,ARM Cortex-R,ARM Cortex-AARM
8、v712ARM處理器(核)命名規(guī)則ARMxyzTDMIEJF-Sx系列號(hào) y存儲(chǔ)管理/保護(hù)單元zCacheTThumb指令集DJTAG調(diào)試器M快速乘法器I嵌入式跟蹤宏單元E增強(qiáng)DSP指令JJazelle技術(shù)F向量浮點(diǎn)單元S可綜合的內(nèi)核ARM7TDMI-SARM926EJ-SARM966ESARM1022E2:帶MMU4:帶MPU6:無(wú)MMU和MPU0:標(biāo)準(zhǔn)cache2:小cache6:可變cache13ARM芯片、內(nèi)核和CPU的關(guān)系A(chǔ)RM CPU數(shù)據(jù)通路ARM CPU控制邏輯ARM 內(nèi)核ARM CPUARM 芯片ARM 內(nèi)核15ARM處理器核簡(jiǎn)介ARM公司開(kāi)發(fā)了很多系列的ARM處理器核,目前最
9、新的系列已經(jīng)是ARM11,而ARM6核以及更早的系列已經(jīng)很罕見(jiàn)了。目前應(yīng)用比較廣泛的系列是:ARM7ARM9ARM9EARM10SecurCoreXscaleARM11Cortex項(xiàng)目ARM7ARM9ARM10ARM11流水線3568典型頻率(MHz)80150260335功耗(mW/MHz)0.060.19(+cache)0.5(+cache)0.4(+cache)性能MIPS*/MHz0.971.11.31.2架構(gòu)馮諾伊曼哈佛哈佛哈佛1617ARM系列微處理器核特點(diǎn)ARM7ARM7TDMI:整數(shù)處理核ARM7TDMI 處理器的可綜合版本; ARM720T:帶MMU的處理器核心,支持操作系統(tǒng)
10、;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級(jí)流水線,提供Java加速指令,沒(méi)有存儲(chǔ)器保護(hù)。ARM9ARM920T:帶有獨(dú)立的16KB 數(shù)據(jù)和指令Cache;ARM922T:帶有獨(dú)立的8位KB 數(shù)據(jù)和指令Cache;ARM940T包括更小數(shù)據(jù)和指令Cache和一個(gè)MPU基于ARM9TDMI ,帶16位的Thumb指令集,增強(qiáng)代碼密度最多到35%;在0.13m工藝下最高性能可達(dá)到300MIPS(Dhr
11、ystone 2.1測(cè)試標(biāo)準(zhǔn))集成了數(shù)據(jù)和指令Cache;32位AMBA總線接口的MMU支持;可在0.18m、 0.15m和0.13m工藝的硅芯片上實(shí)現(xiàn)。ARM處理器核簡(jiǎn)介18ARM9EARM926EJ-S:Jazelle 技術(shù),有MMU,可配置的數(shù)據(jù)和指令Cache,TCM接口;ARM946E-S:可配置的數(shù)據(jù)和指令Cache及TCM;ARM966E-S:針對(duì)要求高性能和低功耗的可預(yù)測(cè)的指令執(zhí)行時(shí)間的硬實(shí)時(shí)應(yīng)用設(shè)計(jì) ARM968E-S:最小、功耗最小的ARM9E系列處理器,針對(duì)嵌入式實(shí)時(shí)應(yīng)用設(shè)計(jì);ARM9E是針對(duì)微控制器、DSP和Java的單處理器解決方案; ARMJazelle技術(shù)提供 8
12、倍的 Java 加速性能 (ARM926EJ-S) ;5-級(jí)整數(shù)流水線; 在0.13m工藝下最高性能可達(dá)到300MIPS(Dhrystone 2.1測(cè)試標(biāo)準(zhǔn));可選擇的向量浮點(diǎn)單元VFP9 協(xié)處理器指令優(yōu)秀海浮點(diǎn)性能,對(duì)于3D圖形加速和實(shí)時(shí)控制可達(dá)到215MFLOPS。高性能的AHB總線,帶MMU可在0.18m, 0.15m, 0.13m工藝的硅芯片上實(shí)現(xiàn)。 ARM10EARM1020E:帶DSP指令集,在片調(diào)試功能,獨(dú)立的32KB數(shù)據(jù)和指令Cache,MMU支持;ARM1022E:與ARM1020E相同,只是獨(dú)立的數(shù)據(jù)和指令Cache變?yōu)?6KB;ARM1026EJ-S:同時(shí)具有MPU和MM
13、U,可綜合版本; 帶分支預(yù)測(cè)的6級(jí)整數(shù)流水線;在0.13m工藝下最高性能可達(dá)到430MIPS(Dhrystone 2.1測(cè)試標(biāo)準(zhǔn));對(duì)于3D圖形運(yùn)算和實(shí)時(shí)控制采用VFP協(xié)處理器,浮點(diǎn)運(yùn)算性能最高可達(dá)650MFLOPS;雙64位AMBA總線接口和64位內(nèi)部總路線接口;優(yōu)化的緩存結(jié)構(gòu)提高了處理器訪問(wèn)低速存儲(chǔ)器的性能;可在0.18m, 0.15m, 0.13m工藝的硅芯片上實(shí)現(xiàn)ARM處理器核簡(jiǎn)介19ARM11ARM11 MPCore:可綜合的多處理器核,1至4個(gè)處理器可配置;ARM1136J(F)-S:可配置的數(shù)據(jù)和指令Cache,可提供1.9位的MPEG4編碼加速功能;ARM1156T2(F)-S
14、:帶集成浮點(diǎn)協(xié)處理器,帶內(nèi)存保護(hù)單元MPU;ARM1176JZ(F)-S:帶針對(duì)CPU和系統(tǒng)安全架構(gòu)擴(kuò)展的TrustZone技術(shù)。增強(qiáng)的Thumb、Jazelle、DSP擴(kuò)展支持; 帶片上和系統(tǒng)安全TrustZone 技術(shù)支持 ;在0.13m工藝下最高可達(dá)到550MHz;MPCore在0.13m工藝下最高性能可達(dá)到740MIPS(Dhrystone 2.1測(cè)試標(biāo)準(zhǔn));支持多媒體指令SIMD;采用三種電源模式:全速/待命/休眠集成DMA的TCM低功耗、高性能。 SecurCoreSC100:第一個(gè)32位安全處理器;、SC110:在SC100上增加密鑰協(xié)處理器;SC200:帶Jazelle技術(shù)的高
15、級(jí)安全處理器;SC210:在SC200上增加密鑰協(xié)處理器SecurCore是專門為智能卡、安全I(xiàn)C提供的32位安全處理器, 為電子商務(wù)、銀行、網(wǎng)絡(luò)、移動(dòng)多媒體、公共交通提供安全解決方案;體積小、功耗低,代碼壓縮密度高;為快速增長(zhǎng)的Java卡平臺(tái)提供Java加速功能;ARM處理器核簡(jiǎn)介20CortexCortex-A:面向應(yīng)用的微處理器,針對(duì)復(fù)雜操作系統(tǒng)和應(yīng)用程序設(shè)計(jì);Cortex-R:針對(duì)實(shí)時(shí)系統(tǒng)的嵌入式處理器;Cortex-M:針對(duì)成本敏感應(yīng)用優(yōu)化的深度嵌入式處理器;2004年發(fā)布,提供增強(qiáng)的媒體和數(shù)字處理能力,增加了系統(tǒng)性能;支持ARM、Thumb、Thumb-2指令集;Thumb-2指令
16、集提供了更高的代碼存儲(chǔ)密度,進(jìn)一步降低成本;Intel系列StrongARM:ARMv4體系XScale:ARMv5TE體系,增加MMX指令StrongARM主要應(yīng)用于手持設(shè)備和PDA,5級(jí)流水線,具有獨(dú)立的數(shù)據(jù)和指令Cache,不支持Thumb指令集,目前已停產(chǎn);XScale是目前Intel公司主推的高性能嵌入式處理器,分通用處理器、網(wǎng)絡(luò)處理器和I/O處理器三類。其中通用處理器有PXA25x、PXA26x、PXA27x三個(gè)系列,被廣泛應(yīng)用于智能手機(jī)、PDA領(lǐng)域。ARM處理器核簡(jiǎn)介21ARM體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型ARM體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型字節(jié):8位半字:16位(必須分配為占用2個(gè)字節(jié)
17、)字:32位(必須分配為占用4個(gè)字節(jié))注意:1)半字存儲(chǔ)單元地址最低位為0 2)字存儲(chǔ)單元地址最低兩位為0N位無(wú)符號(hào)數(shù):二進(jìn)制格式表示范圍為02N-1的非負(fù)整數(shù);N位有符號(hào)數(shù)時(shí),N位數(shù)據(jù)值使用2的補(bǔ)碼格式表示范圍為-2N-1+2N-1-1的整數(shù)111234222所有數(shù)據(jù)處理操作,例如ADD,都以字為單位;裝載和保存指令可以對(duì)字節(jié)、半字和字進(jìn)行操作,當(dāng)裝載字節(jié)或半字時(shí)自動(dòng)實(shí)現(xiàn)零擴(kuò)展或符號(hào)擴(kuò)展;ARM指令的長(zhǎng)度剛好是1個(gè)字(分配為占用4個(gè)字節(jié)),Thumb指令的長(zhǎng)度剛好是半字(占用2個(gè)字節(jié))ARM處理器操作ARM處理器的工作狀態(tài)ARM狀態(tài) 執(zhí)行32位字方式的ARM指令Thumb狀態(tài) 執(zhí)行16位半字
18、方式的Thumb指令Jazelle狀態(tài) 執(zhí)行可變長(zhǎng)的、以字節(jié)為單位的 Jazelle(Java)指令注意:1. 處理器復(fù)位后處于ARM狀態(tài);2.處理器異常處理時(shí)進(jìn)入ARM狀態(tài);3.若處理器在Thumb狀態(tài)進(jìn)入異常,則異常返回仍然自動(dòng)轉(zhuǎn)換到Thumb狀態(tài);4.狀態(tài)切換不影響工作模式及寄存器內(nèi)容。23ARM處理器工作狀態(tài)的切換 使用跳轉(zhuǎn)指令BX可將處理器內(nèi)核在ARM狀態(tài)和Thumb狀態(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) 地址最
19、低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標(biāo)號(hào),最低2bit為02425處理器工作狀態(tài)切換進(jìn)入Thumb狀態(tài)處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ、FIQ、Undef、Abort 和 SWI)返回時(shí),自動(dòng)轉(zhuǎn)換到Thumb狀態(tài)進(jìn)入ARM狀態(tài)處理器進(jìn)行異常處理(IRQ、FIQ、Undef、Abort 和SWI ) 時(shí),把程序計(jì)數(shù)器PC放入異常模式鏈接寄存器中。從異常 向量地址開(kāi)始執(zhí)行可以進(jìn)入ARM狀態(tài)。ARM微處理器支持7種運(yùn)行模式 用戶模式(usr): ARM處理器正常的程序執(zhí)行狀態(tài) 快速中斷模式(fiq): 用于高速數(shù)據(jù)傳輸或通道處理 外部中斷模式(irq): 用于通用的中斷處理 管
20、理模式(svc): 操作系統(tǒng)使用的保護(hù)模式 數(shù)據(jù)訪問(wèn)中止模式(abt): 當(dāng)數(shù)據(jù)或指令預(yù)取中止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)及存儲(chǔ)保護(hù)。 系統(tǒng)模式(sys): 運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)。 未定義指令中止模式(und):當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式,可用于支持硬件協(xié)處理器的軟件仿真。ARM微處理器的運(yùn)行模式可以通過(guò)軟件改變,也可以通過(guò)外部中斷或異常處理改變。大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問(wèn)的2627處理器模式特權(quán)模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)
21、等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問(wèn)。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式
22、。 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統(tǒng) (sys)28處理器模式異常模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處 未定義 (un
23、d)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 這五種模式稱為異常模式。它們除了可以通過(guò)程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。29處理器模式用戶和系統(tǒng)模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ
24、異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲(chǔ)器保護(hù)在ARM7TDMI沒(méi)有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問(wèn)用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問(wèn)一些受控的資源。 系統(tǒng) (sys) 用戶 (usr)30ARM狀態(tài)下寄存器通用寄存器(32位) 3
25、1個(gè)寄存器(32位) 37個(gè)狀態(tài)寄存器(32位) 6個(gè)通用寄存器(R0R15)通用寄存器不分組寄存器(R0R7)分組寄存器(R8R14)程序計(jì)數(shù)器PC(R15)31寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器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 *R1
26、3(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無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器32寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(
27、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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR
28、_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個(gè)寄存器,分成兩大類:31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。33寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(
29、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無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1
30、R0用戶無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4
31、R3R2R1R0快中斷ARM狀態(tài)各模式下可以訪問(wèn)的寄存器34寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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_svcR1
32、4_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編語(yǔ)言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。35寄存器類別寄存器在匯編中的名稱各模式下實(shí)際
33、訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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)寄存器CPSRCPSRSP
34、SR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的寄存器,也就是說(shuō)對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。注意:在中斷或異常處理中進(jìn)行模式切換時(shí),由于不同的運(yùn)行模式時(shí)都使用相同的物理寄存器,可能會(huì)破壞寄存器中的數(shù)據(jù)36寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存
35、器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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無(wú)SP
36、SR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器37寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(
37、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無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一
38、般的通用寄存器R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。38寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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_f
39、iqR11(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無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器 寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_f
40、iqR13_irqR13_undR13_abtR13_svcR1339寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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_
41、svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP) 寄存器R13常作為堆棧指針(SP)。在ARM指令集中,沒(méi)有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。40寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5
42、R6(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無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR) R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能
43、:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。41Lable程序A程序BR14內(nèi)部寄存器R14(LR)寄存器與子程序調(diào)用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A執(zhí)行過(guò)程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BL Lable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;42內(nèi)部寄存器R14寄存器與異常發(fā)生異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對(duì)返回地址的
44、處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移R14寄存器注意要點(diǎn)當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋43內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_ir
45、q寄存器,用戶模式下的R14沒(méi)有被破壞;3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞R14_irq44內(nèi)部寄存器R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq寄存器,用戶模式下的R14沒(méi)有被破壞;3. IRQ服務(wù)程序A執(zhí)行完畢,將R14_irq寄存器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ處理
46、程序中打開(kāi)IRQ中斷,并且再次發(fā)生IRQ中斷;5. 硬件將返回地址保存在R14_irq寄存器中,原來(lái)保存的返回地址將被覆蓋,造成錯(cuò)誤;R14_irq 被破壞6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnreturn 解決辦法是確保R14的對(duì)應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值(將R14入棧),或者切換到其它處理器模式下。45寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6
47、(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無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計(jì)數(shù)器R15(PC) 寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址
48、??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的R15(PC)寄存器的讀操作ARM指令以字為單位,因此R15的最低兩位總是為0;R15的值是處理器正在取指的指令地址。因?yàn)橛辛魉€,它與當(dāng)前正在執(zhí)行指令的地址之間存在一個(gè)偏移(對(duì)于確定的ARM芯片該值為常量)。當(dāng)使用指令STR/STM保存R15時(shí),不同芯片中(可能是三級(jí)流水的ARM7或五級(jí)流水的ARM9)PC偏移量可能是8或16,因此需事先計(jì)算出該芯片的PC偏移量。MOV R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線、ARM狀態(tài)下指令地址程
49、序代碼SUB R1,PC,#4 ;將正在譯碼的指令的地址保存在R1中STR PC,R0 ;保存當(dāng)前PC值=正在執(zhí)行的指令的地址+偏移量LDR R0,R0 ;然后重裝SUB R0,R0,R1 ;計(jì)算偏移量是同一條指令46寫入R15 的值被當(dāng)作指令地址,程序?qū)倪@個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行無(wú)條件跳轉(zhuǎn));由于ARM指令以字為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在V3及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫入R15的值)和0 xFFFFFFFC相與得到;在V4及以上版本中,寫入R15的值的最低兩位如果不為0,結(jié)果將
50、不可預(yù)測(cè)。R15(PC)寄存器的寫操作4748內(nèi)部寄存器ARM狀態(tài)和Thumb狀態(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狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)在Thumb狀態(tài)中,高寄存器(R8R15)不是標(biāo)準(zhǔn)寄存器集的一部分,但可以使用MOV、CMP和ADD指令對(duì)高寄存器操作49Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆
51、棧指針(R13) 連接寄存器(R14) 程序計(jì)數(shù)器(R15) 低寄存器高寄存器50寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(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)R
52、14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序狀態(tài)寄存器CPSR 寄存器CPSR為程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“程序狀態(tài)保存寄存器(SPSR)”可以被訪問(wèn)。每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過(guò)它恢復(fù)CPSR51NZCVIM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0程序狀態(tài)寄存器條件代碼標(biāo)志保留控制位溢出標(biāo)志 o
53、Verflow進(jìn)位或借位擴(kuò)展 Carry零 Zero負(fù)或小于 NegativeIRQ禁止 InterruptFIQ禁止 Fast狀態(tài)位 Thumb模式位 ModeNZCVIM0M1M2M3M4TFCPSR寄存器的格式每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器(SPSR),它用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR通過(guò)特殊指令(MRS、MSR)進(jìn)行訪問(wèn)。52程序狀態(tài)寄存器條件代碼標(biāo)志大多數(shù)“數(shù)值處理指令”可以選擇是否影響條件代碼標(biāo)志位。通常如果指令帶S后綴,則該指令的執(zhí)行會(huì)影響條件代碼標(biāo)志;但有一些指令的執(zhí)行總是會(huì)影響條件代碼標(biāo)志N、 Z、 C和V位都是條件代碼標(biāo)志。算術(shù)操作、邏輯操作
54、、MSR或者LDM指令可以對(duì)這些位進(jìn)行設(shè)置。所有ARM指令都可按條件來(lái)執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行。53程序狀態(tài)寄存器條件代碼標(biāo)志N 運(yùn)算結(jié)果的最高位反映在該標(biāo)志位。對(duì)于有符號(hào)二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí)N=1,結(jié)果為正數(shù)或零時(shí)N=0;Z 指令結(jié)果為0時(shí)Z=1(通常表示比較結(jié)果“相等”),否則Z=0;C 當(dāng)進(jìn)行加法運(yùn)算(包括CMN指令),并且最高位產(chǎn)生進(jìn)位時(shí)C=1,否則C=0。當(dāng)進(jìn)行減法運(yùn)算(包括CMP 指令),并且最高位產(chǎn)生借位時(shí)C=0,否則C=1。對(duì)于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變; V當(dāng)進(jìn)行加法/減法運(yùn)算,并且發(fā)生有符號(hào)溢出時(shí)
55、V=1,否則V=0,其它指令V通常不變。54程序狀態(tài)寄存器控制位CPSR的最低8位為控制位,當(dāng)發(fā)生異常時(shí),這些位被硬件改變。當(dāng)處理器處于一個(gè)特權(quán)模式時(shí),可用軟件操作這些位中斷禁止位包括I和F位:當(dāng)I位置位時(shí),IRQ中斷被禁止;當(dāng)F位置位時(shí),F(xiàn)IQ中斷被禁止。T位反映了正在操作的狀態(tài):當(dāng)T位為1時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)T位清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行模式位包括M4、M3、M2、M1和M0,這些位決定處理器的操作模式55M4:0模式可見(jiàn)的Thumb狀態(tài)寄存器可見(jiàn)的ARM狀態(tài)寄存器10000用戶R0R7,SP,LR,PC,CPSRR0R14,PC, CPSR 10001快中斷R0
56、R7,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_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
57、_abt,PC,CPSR, SPSR_abt 11011未定義R0R7,SP_und,LR_und,PC,CPSR, SPSR_und R0R12,R13_und,R14_und,PC,CPSR,SPSR_und11111系統(tǒng)R0R7,SP,LR,PC,CPSR R0R14,PC, CPSR CPSR模式位設(shè)置表程序狀態(tài)寄存器異常exception異常指正常執(zhí)行的程序流因故被暫時(shí)中止;ARM支持7種異常類型、5種處理器異常工作模式若同時(shí)發(fā)生多個(gè)異常,將按優(yōu)先級(jí)順序處理;異常類型對(duì)應(yīng)異常模式優(yōu)先級(jí)復(fù)位Supervisor1(最高優(yōu)先級(jí))數(shù)據(jù)中止Abort2FIQFIQ3IRQIRQ4指令預(yù)取中止
58、Abort5未定義指令Undefined6SWISupervisor7(最低優(yōu)先級(jí))優(yōu)先級(jí)降低56復(fù)位異常Reset當(dāng)nRESET引腳信號(hào)變?yōu)榈碗娖綍r(shí),ARM立即停止執(zhí)行當(dāng)前指令,產(chǎn)生復(fù)位異常;當(dāng)nRESET變?yōu)楦唠娖胶?,ARM處理器執(zhí)行下列操作:1.強(qiáng)制CPSR中的M4:0變?yōu)閎10011,進(jìn)入管理模式;2.置位CPSR中的I和F位;3.清零CPSR中的T位;4.強(qiáng)制PC從地址0 x00開(kāi)始取第一條指令;5.返回到ARM狀態(tài)并恢復(fù)執(zhí)行;57即禁止中斷、快中斷即ARM狀態(tài)中止異常Abort中止異常包括指令預(yù)取中止和數(shù)據(jù)中止;中止異常表示對(duì)存儲(chǔ)器的訪問(wèn)失敗,這種機(jī)制實(shí)際保證了虛擬存儲(chǔ)技術(shù)的實(shí)現(xiàn)。
59、預(yù)取中止時(shí),ARM將預(yù)取的指令標(biāo)記為無(wú)效,但在指令到達(dá)流水線的執(zhí)行階段時(shí)才進(jìn)入異常。如果指令在流水線中因?yàn)榘l(fā)生分支而沒(méi)有被執(zhí)行,中止將不會(huì)發(fā)生。在處理中止的原因之后,處理程序執(zhí)行下面的指令恢復(fù)PC和CPSR并重試被中止的指令: SUBS PC,R14_abt,#4數(shù)據(jù)中止時(shí),數(shù)據(jù)訪問(wèn)被記為無(wú)效,中止程序應(yīng)根據(jù)中止原因作出處理,使數(shù)據(jù)可以被訪問(wèn)5859數(shù)據(jù)中止當(dāng)發(fā)生數(shù)據(jù)中止后,根據(jù)產(chǎn)生數(shù)據(jù)中止的指令類型作出不同的處理:數(shù)據(jù)轉(zhuǎn)移指令(LDR、STR)回寫到被修改的基址寄存器。中止處理程序必須注意這一點(diǎn)交換指令(SWP)中止好像沒(méi)有被執(zhí)行過(guò)一樣(中止必須發(fā)生在SWP指令進(jìn)行讀訪問(wèn)時(shí))在修復(fù)產(chǎn)生中止的
60、原因后,不管處于哪種處理器操作狀態(tài),處理程序都必須執(zhí)行下面的返回指令,重試被中止的指令 : SUBS PC,R14_abt,#8中斷異常(IRQ、FIQ)中斷請(qǐng)求(IRQ)是一個(gè)由nIRQ引腳信號(hào)低電平所產(chǎn)生的普通中斷(nIRQ是內(nèi)核信號(hào),對(duì)用戶不可見(jiàn))。IRQ的優(yōu)先級(jí)低于FIQ,對(duì)于FIQ異常它是被屏蔽的。在一個(gè)特權(quán)模式中可通過(guò)置位CPSR中的I 位來(lái)禁止IRQ。快速中斷請(qǐng)求(FIQ)適用于對(duì)一個(gè)突發(fā)事件的快速響應(yīng)。ARM狀態(tài)中FIQ模式多設(shè)置了7個(gè)分組寄存器(R8_fiqR14_fiq)可加速上下文切換的速度。在一個(gè)特權(quán)模式中可通過(guò)置位CPSR中的F位來(lái)禁止FIQ異常。60快速中斷請(qǐng)求快速
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 4701.10-2025鈦鐵硫含量的測(cè)定紅外線吸收法和燃燒中和滴定法
- 2025年大學(xué)三年級(jí)(行政管理)辦公事務(wù)處理基礎(chǔ)測(cè)試題及答案
- 2025年高職粉末冶金技術(shù)(粉末冶金工藝)試題及答案
- 2025年大學(xué)移動(dòng)應(yīng)用開(kāi)發(fā)(開(kāi)發(fā)研究實(shí)務(wù))試題及答案
- 2025年大學(xué)(金融學(xué))國(guó)際金融期末測(cè)試題及答案
- 2025年高職冷鏈物流技術(shù)與管理(冷鏈質(zhì)量控制)試題及答案
- 2025年高職(郵輪乘務(wù)管理)郵輪服務(wù)試題及答案
- 2025年大學(xué)三年級(jí)(高分子材料與工程)塑料成型工藝試題及答案
- 2025年大學(xué)大四(護(hù)理學(xué))護(hù)理研究綜合測(cè)試題及答案
- 2025年中職化工(化工原料識(shí)別)試題及答案
- PICC置管新技術(shù)及維護(hù)新進(jìn)展
- 七年級(jí)上冊(cè)道德與法治第1-4單元共4個(gè)單元復(fù)習(xí)教學(xué)設(shè)計(jì)
- 個(gè)人分紅收款收據(jù)
- 人教版數(shù)學(xué)五年級(jí)上冊(cè)《多邊形的面積》單元作業(yè)設(shè)計(jì)()
- 腎素血管緊張素系統(tǒng)藥理
- 海南省職校技能大賽(植物病蟲害防治賽項(xiàng))參考試題庫(kù)(含答案)
- 銀屑病慢病管理
- 成人失禁相關(guān)性皮炎的預(yù)防與護(hù)理-護(hù)理團(tuán)標(biāo)
- 克拉瑪依市克拉瑪依區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)強(qiáng)化卷(含答案)
- 新時(shí)代五育融合的路徑與方式
- 2023年江蘇省普通高中學(xué)業(yè)水平合格性考試數(shù)學(xué)真題試卷含詳解
評(píng)論
0/150
提交評(píng)論