2 1-arm7體系結構-內部寄存器_第1頁
2 1-arm7體系結構-內部寄存器_第2頁
2 1-arm7體系結構-內部寄存器_第3頁
2 1-arm7體系結構-內部寄存器_第4頁
2 1-arm7體系結構-內部寄存器_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2.1 ARM7(ARM7TDMI)處理器內核體系結構1. ARM7內核體系結構2. 三級流水線3. 處理器工作模式4. 處理器狀態(tài)5. ARM7處理器工作模式6. ARM7內部寄存器7. ARM7運行狀態(tài)標志寄存器CPSR1.ARM7內核體系結構ARM處理器為精簡指令集(RISC)計算機中央處理器(CPU)。RISC: RISC CPU結構簡單,使得ARM內核非常小, 功耗非常低,所以幾乎壟斷了類似手機的嵌入式應用領域.CISC: PC兼容機中的x86系列CPU是復雜指令集(CISC)計算機CPU,指令復雜,硬件結構復雜,功耗高.“ARM核”并不是芯片;ARM核與其它部件如RAM、ROM、片

2、內外設組合在一起才能構成現實的“片上計算機系統(tǒng)”(SOC)芯片。MemoryMemoryMicro- processorMixed Signal/AnalogStandard CellsMemoryI/O Cells高性能CPU/MCU(ARMMIPS/PowerPC/8051等) IP(知識庫)是SoC設計的一個元件ARM7SOC芯片片上計算機系統(tǒng)總線結構ARM處理器內核特點:大的、統(tǒng)一的寄存器文件;只有裝載/保存指令可以對存儲器操作,其他指令能不直接對存儲器進行操作; 簡單的尋址方式;統(tǒng)一固定長度的指令域,簡化了指令的譯碼。每條數據處理指令都可以對算術邏輯單元和移位器進行控制;地址自動增加

3、和減少尋址模式,優(yōu)化程序循環(huán);多寄存器裝載和存儲指令實現最大數據吞吐量;所有指令可帶條件執(zhí)行, 代碼執(zhí)行效率高。ARM7處理器是ARM通用32位微處理器的成員之一, 壟斷了早期數字移動電話終端70%市場份額,其出色性能表現在: 高的指令吞吐量; 出色的實時中斷響應; 小的、高性價比的處理器宏單元。ARM7TDMInM4:0 nMREQ SEQ LOCKA31:0MCLKnWAIT時鐘ISYNC BUSENBIGENDD31:0存儲器接口配置DIN31:0 DOUT31:0nENOUTnRWnIRQnFIQ中斷MAS1:0nRESETnTRANS ABORTnOPC nCPI CPACPBAPE

4、存儲器管理總線控制DBE協(xié)處理器接口VDDVSS電源內核信號ARM7TDMI內核控制信號 ARM7TDMI地址總線ARM7TDMI內核數據總線TAP控制器JTAG 接口方框圖Embedded ICE邏輯BUSSplitterARM7TDMIABEA31:0IncremeP CBIGEND MCLK nWAITnRW MAS1:0ISYNC nIRQ nFIQ nRESET ABORT nTRANSnMREQ SEQ LOCK nM4:0nOPC nCPI CPA CPBP32 位 ALUDBE內核D31:0寫數據寄存器讀數據寄存器解碼站指令解壓縮寄存器 BankABu sBBu s桶移位器乘法

5、器指令解碼及控制 邏輯A L UBu s地址寄存器地址自增器ntereC UpdatARM7TDMIJTAG 和非 AMBA 信號AMBA總線接口 帶Cache的ARM7TDMIARM720T同ARM710T,但支持WinCE ARM740T 8K 統(tǒng)一的 cache 內存管理單元 寫緩沖ARM710T 8K 統(tǒng)一的 cache 完整的內存管理單元(MMU),支持虛擬地址和存儲器保護 寫緩沖地址地址數據ARM7xxTCacheAMBA接口寫緩沖數據寫數據讀MMU控制邏輯CP15ARM7TDMI內核ARM7 CPU核 內部結構A31:0控制總線DBG輸入/出nRESETnIRQ/nFIQ nRD

6、nWR時鐘CLK32位ALUDO31:0DI31:0D31:0寫數據寄存器指令管線讀數據寄存器Thumb指令譯碼器寄存器組31*32位寄存器(6個狀態(tài)寄存器)指令譯碼和控制邏輯掃描調試控制地址寄存器桶形移位器乘法器地址增加器主存儲器及片上IO外設2.三級流水線ARM7處理器使用流水線來增加處理器指令流的速度。這樣可使幾個操作同時進行,并使處理和存儲器系統(tǒng)連續(xù)操作,ARM7TDMI的流水線分3級:取指譯碼執(zhí)行ARM核能提供: 0.9MIPS/MHz的指令執(zhí)行速度,至少是復雜指令集CPU的3倍。正常操作過程中,任一時刻有下面三個工位在工作:(1) 執(zhí)行一條指令;(2) 對下一條指令進行譯碼;(3)

7、 將第三條指令從存儲器中取出。三描述線工位設當前時刻,程序計數器PC=8008(PC)= 8008C指令取指從存儲器中取出C指令(PC-4)= 8004B指令譯碼對B指令進行譯碼(PC-8) = 8000A指令執(zhí)行執(zhí)行A指令 CLK-1 CLK CLK+1 CLK+2 CLK+3 8000 指令A 800 8008 指令C取指譯碼執(zhí)行 800c 指令D 8010 指令EARM 32位指令 三級流水線示意圖8014指令存儲器指令F取指譯碼取指執(zhí)行譯碼取指4 指令B取指譯碼執(zhí)行執(zhí)行譯碼執(zhí)行時鐘節(jié)拍ARM7TDMI指令流水線 為增加處理器指令流的速度,ARM7 系列使用3級流水線。允許多個操作同時處

8、理,而非順序執(zhí)行。PC指向正被取指的指令,而非正在執(zhí)行的指令。ARMThumb從存儲器中讀取指令PCPCPC - 42PC-解碼指令中用到的寄存器寄存器讀(從寄存器Bank)移位及ALU操作寄存器寫(到寄存器Bank )PC - 8PC - 4ExecuteDecodeFetch。ARM7TDMI指令流水線周期123456操作ADD SUB MOV AND ORR EOR CMPRSB 最佳流水線該例中用6個時鐘周期執(zhí)行了6條指令所有的操作都在寄存器中(單周期執(zhí)行) 指令周期數 (CPI) = 1FetchDecodeExecuteFetchDecodeExecuteFetchDecodeEx

9、ecuteFetchDecodeExecute FetchDecodeExecute FetchDecodeExecuteFetchDecodeFetch3.存儲器訪問1)ARM7TDMI處理器使用了馮諾依曼結構,指令和數據共用一條32位總線。計算機結構說明:“馮諾依曼” 結構:把代碼作為一種特殊的數據來操作, 指令總線和數據總線及其存儲區(qū)域是統(tǒng)一的;“哈佛”結構:指令總線和數據總線及其存儲區(qū)是分開、獨立的。 地址 馮諾依曼結構數據CPU PC主存儲器MOVr8,#8地址數據存儲器數據CPU PC地址程序存儲器MOV指令r8,#8哈佛結構2)只有“裝載LDR、存儲STR、交換SWAP”三種指令

10、可以對存儲器中的數據進行訪問。3)支持3種數據存儲格式:0x8008*字節(jié)(半字(8位16位32位)字(word)intunigned int0x8004字(半字(half word)short intunsigned short int0x8002例:字節(jié)(byte)charunsigned char0x8000LDRSTRH SWAPBR0,R1;R2,R1;R0,R1;1121234WB3WB2WB1WB0HB1HB0BYTE(字節(jié))4.處理器狀態(tài)1) ARM7TDMI處理器結構包含兩套指令集:一套32位ARM指令集一套16位Thumb指令集2) ARM7TDMI處理器有兩種操作狀態(tài):A

11、RM狀態(tài):32位,執(zhí)行字(32b)方式ARM指令Thumb狀態(tài):16位,執(zhí)行半字(16b)方式Thumb指令3) 兩種操作狀態(tài)可通過“BX” 指令相互切換。使用”BX”指令 切換 工作狀態(tài)的例程:注意:兩個狀態(tài)之間的切換不影響處理器的 工作模式和 寄存器內容地址最低位為0,表示切換到ARM狀態(tài)地址最低位為1,表示切換到Thumb狀態(tài)跳轉地址標號;從Arm狀態(tài)切換到Thumb狀態(tài)CODE32L32 LDRR0,=L16+1 BXR0;從Thumb狀態(tài)切換到ARM狀態(tài)CODE16L16 LDRR0,=L32BXR0啟動調試器演示狀態(tài)切換代碼程序5.ARM7處理器工作模式ARM體系結構支持7種處理器

12、模式:系統(tǒng)模式,用戶模式管理模式、快中斷模式、中斷模式中止模式未定義模式7中工作模式可以更好的支持操作系統(tǒng),提高工作效率;ARM7TDMI完全支持這七種模式。處理器模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)與用戶模式類似,但具有可以直接切換到其它模式等快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式中斷(irq)用于通用中斷處理IRQ異常響應時進入此模式管理(svc)操作系統(tǒng)保護代碼系統(tǒng)復位和軟件中斷響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿

13、真未定義指令異常響應時進入此模式用理(svc)操斷(irq)用中斷(fiq)通支統(tǒng)(sys)用模式處理器模式說明備注(usr)用戶正常程序工作模式不能直接切換到其它模式與用戶模式類似,但具有可于支持操作系統(tǒng)的系統(tǒng)(sys)系任務1.除等用戶模式外式;(fiq)快中斷持高速2.數AR據M傳內輸部及寄存FI器Q異和常一響些應時片進內入外此設模在式快(irq)中斷道硬處理件設計上(可選)只允許模式下訪(svc)管理IRQ異常響應時進入此模式中于問通用;中斷處理3.作系模式可以系自統(tǒng)由復的位和切軟換件到中其斷他響應各時進入此模式(abt)中止管種統(tǒng)處保理器代模碼式;護4.用戶模式不能直接切換到其他模式

14、,未定義(und)于支持虛擬內存和/中止(abt)進在入A模DM式I沒。有大用處或存可儲器通保過護SWI指令支持硬件協(xié)處理器的軟件仿真未定義指令異常響應時進入此模式(und)未定義系統(tǒng)(sys)用戶(usr)用戶和系統(tǒng)模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式用于支1.持這操兩作系種統(tǒng)模的是任程序與用正戶常模式工類作似,模但式具有,可都以直不接切(sys)系統(tǒng)務能等 由異常進入,使 用換完到全其它相模同式等存器組。2.系統(tǒng)模式是模式;支持高3速.用數據戶傳模輸及式通是道處受限模式;快中斷(fiq)FIQ異常響應時進入此模式理4.操作系統(tǒng)在系統(tǒng)模式下訪問用戶模式(

15、irq)用的于通寄用存中斷器處比理 較方便 ;IRQ異常響應時進入此模式中斷5.操作系統(tǒng)的系任統(tǒng)務復位可和以軟件使中用斷響系應統(tǒng)時進模入此模(svc)管理操作系統(tǒng)保護代碼式訪問一些受控的資式源;用于支持虛擬內存和/或存儲器保護中止(abt)在ARM7TDMI沒有大用處支持硬件協(xié)處理器的軟件仿真未定義(und)未定義指令異常響應時進入此模式系統(tǒng)(sys)用戶(usr)用戶和系統(tǒng)模式處理器模式說明備注用戶(usr)正常程序工作模式不能直接切換到其它模式系統(tǒng)(sys)用于支持操作系統(tǒng)的任務等與用戶模式類似,但具有可以直接切換到其它模式等快中斷(fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此

16、模式中斷(irq)用于通這用中五斷種處理工作模式稱I常響應模時式進入,此即模式管理(svc)正常程序流程斷后操作式系,統(tǒng)保所護有代碼異常模式的一種工作模都系是統(tǒng)軟模件式中斷。響應時進入此模式中止(abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應時進入此模式6. 內部寄存器在ARM7TDMI處理器內部有37個用戶可見的寄存器。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器也不盡相同。右圖是在調試軟件AXD1.2上打開的(Views)寄存器窗口。ARM狀態(tài)各模式下的寄存器寄存器類別寄存器在匯編中的名稱各模式下實

17、際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數器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

18、PSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0ARM狀態(tài)各模式下的寄存器各模式下實際訪問的寄存器寄存器類別寄存器在匯編中的名稱用戶系統(tǒng)管理中止未定義中斷快中斷R0(a1)R0R1(a2)R

19、1R2R2(a3)R3R3(a4)R4R4(v1)R5R5(v2)共37個R寄6(v3存)器,分為兩大類:R6通用寄R7存器3和1個R通7(v用4)32位寄存器;程序計R8R8_fiqR8(v5)數器R9R9_fiq6個R狀9(S態(tài)B,v寄6)存器。R10R10_fiqR10(SL,v7)R11R11_fiqR11(FP,v8)R12R12_fiqR12(IP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR13(SP)R14R14_svcR14_abtR14_undR14_irqR14_fiqR14(LR)R15R15(PC)CPSRCPSR狀態(tài)寄存器SPSR_

20、abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqSPSR無無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4

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

22、qR9(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_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR1

23、0R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0一般的通用寄存器各模式下實際訪問的寄存器寄存器類別寄存器在匯編中的名稱用戶系統(tǒng)管理中止未定義中斷快中斷R0R0(a1)R1R1(a2)R2R2(a3)寄存器R3(Ra4)0R13:R31.是R保4(v1存)數據或地址值的R4R5完全通R5(用v2) 的寄存器;R6通用寄2.通R6用(v3的)寄存器,不會被R7R7(v4)存器和程序體計系結R8(構v5) 作為特殊用途,R8R8_fiq數器3.可R9(以SB,v作6)為指令的源操作R9R9_fiq或目R1的0(S操L,v7作)數。R10R10_fiqR11R11_fiqR11(FP

24、,v8)R12R12_fiqR12(IP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR13(SP)R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15CPSRCPSR狀態(tài)寄存器SPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0一般的通用

25、寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷存器R0通用存寄器空存器和程序計數器R0(a1)R0R1(a2)R11R.2R(a03)R7:未分組的寄R2;R3(a4)R32R.4對(v1)于任何處理器模式,R4RR75使(v2)用同一32位物理寄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_fiq

26、R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8一般的通用寄存器各模式下實際訪問的寄存器寄存器類別寄存器在匯編中的名稱用戶系統(tǒng)管理中止未定義中斷快中斷R0(a1)R0R1(a2)

27、R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6通用寄存寄器和存器RR7(8v4)R14為分組寄R7程序計R8R8_fiqR8(v5)存器。不同處理器模式對應數器R9R9_fiqR9(SB,v6)不同物理寄存器空間。R10R10_fiqR10(SL,v7)R11R11_fiqR11(FP,v8)R12R12_fiqR12(IP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR13(SP)R14R14_svcR14_abtR14_undR14_irqR14_fiqR14(LR)R15(PC)R15CPSRCPSR狀態(tài)寄存器SPSR

28、無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8一般的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶寄存器系統(tǒng)R8管R理12有兩中止個分未組定的義物理中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)寄存器。R1R2(a3)一個用于除FIQ模式R2之外的所有寄R3(a4)存器模式,另一個用于R3 FIQ模式。R4(v1)發(fā)生FIQ中斷后,可R4以加速FIQ的R5(v2)處理速度。R5R6(v3)R6R7(v4)R7R8(v5)R8R8_f

29、iqR9(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_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abt

30、R13_svcR13一般的通用寄存器各模式下實際訪問的寄存器寄存器類別寄存器在匯編中的名稱用戶系統(tǒng)管理中止未定義中斷快中斷R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6通用寄存器和程序計數器R7(v4)寄存器R13、R1R47 分別有6個分組R8(v5)R8的物理寄存器R。9R8_fiqR9(SB,v6)R9_fiq一個用于用R戶10 和系統(tǒng)模式,其余R10(SL,v7)R10_fiq5個分別用于5R種11 異常模式。R11(FP,v8)R11_fiqR12(IP)R12R12_fiqR13R13_svcR13_abtR13_u

31、ndR13_irqR13_fiqR13(SP)R14R14_svcR14_abtR14_undR14_irqR14_fiqR14(LR)R15(PC)R15CPSRCPSR狀態(tài)寄存器SPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)慣上都這樣使用;寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)1.寄存器R13常作R5 為堆棧指針SP;R6(v3)2.在ARM指令集R6當中,沒

32、有以特殊方R7(v4)式使用R13的指令R或7其它功能,只是習R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(SL,v7)3.在ThumbR指10 令集中存在使用R13的R10_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_

33、fiq鏈接寄存器R14(LR)各模式下實際訪問的寄存器寄存器類別寄存器在匯編中的名稱用戶系統(tǒng)管理中止未定義中斷快中斷R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R14為鏈接寄存器(R4LR),在結構上有兩R5(v2)R5個特殊功能:R6(v3)R6在每種模式下,R1R47版本用于保存子程序通用寄存器和程序計數器R7(v4)返回地址;R8(v5)R8R8_fiq當發(fā)生異常時,R9將R14對應的異常模式R版9_fiqR9(SB,v6)R10(SL,v7)常返回R1地0R10_fiq本設置址。R11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR

34、13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15CPSRCPSR狀態(tài)寄存器SPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14R14寄存器與子程序調用操作流程1. 程序A執(zhí)行過程中調用程序B;2. 程序跳轉至標號Lable,執(zhí)行程序B。同時硬件將“BL Lable”指令的下一條指令所在地址存入R14;3. 程序B執(zhí)行最后,將R14寄存器的內容放入PC,返回程序A;程序A程序BLable地址AR14(地址

35、A)?MOVPC,LRBLLable?R14寄存器與異常發(fā)生異常發(fā)生時,程序要跳轉至異常服務程序,對返回地址由硬件完成備份工作。不同中斷異常壓入地址偏移不盡相同, 地址要作適當修改, 才能返回到中斷下一條指令。R14寄存器注意要點當發(fā)生異常嵌套時,這些異常之間可能會發(fā)生沖突。例:如果用戶在用戶模式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶模式寄存器不會被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。R14_irqR14寄存器注意要點用戶模式下的程序IRQ模式下的程序A3. I

36、RQ服務程2.發(fā)生IRQ中斷,序A執(zhí)行完畢,硬件將某個地將R14_irq寄存址存入IRQ模式1器.執(zhí)的行內用容戶減模去式下的R14_irq寄下某的個程常序量;后存地址A存器,用戶模入PC,返回之式下的R14沒有前被中斷的程被破壞;序;未被破壞地址AR14areturnAB.XR14_irq地址AreturnR14寄存器注意要點用戶模式下的程序IRQ模式下的程序AIRQ模式下的程序B3. IRQ服務程256.發(fā)在硬生件程I序RQB返中返回斷回,4序. A如執(zhí)果行在完IR 畢Q,到硬地址件解保序將決A某存辦,個在法然地是后確保R14將處理R1程4_序irq中寄打存R址在對1返存4應_回入版irqI

37、到本寄RQ用在存模戶發(fā)器式生中斷器開1.執(zhí)I的R行Q內用中容戶斷減模,去式并中下模時式,的不原R下再1來被4保_保中存irq存斷任寄何有意某下且再的次程發(fā)序生后;I存RQ地址A地址B的存值器程返(,序回將用地R1戶,址4入模發(fā)將棧),或入中斷PC,或返者回調之被式生切錯覆下?lián)Q誤蓋的到R,其1造將4它沒成不處有理器模式前用被子中程斷序的;程被錯能正誤;確壞;返回;序;未被破壞被破壞地址BR14areturnaAB.Xreturn的A嵌套B義的.者X下。程序計數器R15(PC)寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R

38、0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)寄存器R15為程序計R數7 器(PC),它指向R8(v5)正在取指的地址。R可8以認為它是一個通用R寄8_fiqR9(SB,v6)存器,但是對于它R的9使用有許多與指令相R關9_fiqR10(SL,v7)的限制或特殊情況R1。0如果R15使用的方式R超10_fiqR11(FP,v8)出了這些限制,那R1么1結果將是不可預測的R1。1_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R1

39、4_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq讀R15的限制正常讀取R15的值 = 處理器正在取指的地址即當前正在執(zhí)行指令的地址加上8個字節(jié)(三級流水,超前兩條ARM指令)。ARM指令是以字為單位,R15寄存器的最低兩位總是為0。地址程序代碼流水線狀態(tài)8000LDRR0,PC正在執(zhí)行8004?正在譯碼8008?正在取指1程序狀態(tài)寄存器CPSR寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程

40、序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)寄存器CPSR為程序R狀7態(tài)寄存器,在異常R8(v5)模式中,另外一個R寄8存器“程序狀態(tài)保存R寄8_fiqR9(SB,v6)存器(SPSR)”可R9以被訪問。每種異常都R有9_fiqR10(SL,v7)R1R10_fiqR11(FP,v8)自己的SPSR,在因R常而進入異常R1時1_fiqR12(IP)它保存CPSR的當前R12值,異常退出時可通過R12_fiqR13(SP)它恢R1復3CPSR。R13詳_sv細c描R13述_ab參t看R133_u.n3d小R節(jié)13_。irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqThumb狀態(tài)寄存器Thumb狀態(tài)寄存器集是ARM狀態(tài)集的子集程序員可以直接訪問的寄存器為: 8個通用寄存器R0R7; 程序計數器(PC); 堆棧指針(SP); 鏈接寄存器(LR); 有條件訪問程序狀態(tài)寄存器( CPSR)。Thumb狀態(tài)各模式下的寄存器注意:括號

溫馨提示

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

評論

0/150

提交評論