第3章 ARM編程模型_第1頁(yè)
第3章 ARM編程模型_第2頁(yè)
第3章 ARM編程模型_第3頁(yè)
第3章 ARM編程模型_第4頁(yè)
第3章 ARM編程模型_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三章 ARM 編程模型ARMARM編程模型編程模型目標(biāo)學(xué)員:嵌入式初級(jí)開(kāi)發(fā)者課程時(shí)長(zhǎng):3學(xué)時(shí),135分鐘本章目錄本章目錄ARMARM數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 ARMARM處理器工作模式處理器工作模式 ARMARM寄存器組織寄存器組織 異常中斷處理異常中斷處理 課程目標(biāo)課程目標(biāo)理解理解ARMARM微處理器的工作狀態(tài);微處理器的工作狀態(tài);掌握掌握ARMARM體系結(jié)構(gòu)的存儲(chǔ)器格式;體系結(jié)構(gòu)的存儲(chǔ)器格式;掌握掌握ARMARM微處理器的工作模式;微處理器的工作模式;掌握掌握ARMARM體系結(jié)構(gòu)的寄存器組織;體系結(jié)構(gòu)的寄存器組織;掌握掌握ARMARM微處理器的異常狀態(tài);微處理器的異常狀態(tài);了解影響流水線性能的因

2、素;了解影響流水線性能的因素;理解理解ARMARM在線仿真調(diào)試主要的幾種方法;在線仿真調(diào)試主要的幾種方法;重點(diǎn)難點(diǎn)重點(diǎn)難點(diǎn) ARMARM兩種存儲(chǔ)器格式間的差別兩種存儲(chǔ)器格式間的差別ARMARM處理器的工作模式處理器的工作模式ARMARM體系結(jié)構(gòu)的寄存器組織體系結(jié)構(gòu)的寄存器組織CPSRCPSR及及SPSRSPSR各標(biāo)志位的含義各標(biāo)志位的含義ARMARM體系結(jié)構(gòu)中體系結(jié)構(gòu)中7 7種異常處理種異常處理中斷異常處理的實(shí)現(xiàn)中斷異常處理的實(shí)現(xiàn)課程目錄課程目錄ARMARM數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 ARMARM處理器工作模式處理器工作模式 ARMARM寄存器組織寄存器組織 異常中斷處理異常中斷處理 ARMARM的基本

3、數(shù)據(jù)類(lèi)型的基本數(shù)據(jù)類(lèi)型 ARMARM采用的是采用的是3232位架構(gòu),位架構(gòu),ARMARM約定基本數(shù)據(jù)類(lèi)型有以下約定基本數(shù)據(jù)類(lèi)型有以下3 3種種: :Byte:字節(jié),:字節(jié),8bit;Halfword :半字,:半字,16bit (半字必須于(半字必須于2字節(jié)邊界對(duì)齊);字節(jié)邊界對(duì)齊);Word:字,:字,32bit(字必須于(字必須于4字節(jié)邊界對(duì)齊)。字節(jié)邊界對(duì)齊)。存儲(chǔ)器模式存儲(chǔ)器模式 大端模式大端模式字?jǐn)?shù)據(jù)的高位字節(jié)存儲(chǔ)在低地址中字?jǐn)?shù)據(jù)的高位字節(jié)存儲(chǔ)在低地址中字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中3124 2316 158 70字地址字地址11109887654432

4、100 低地址低地址 高地址高地址3124 2316 158 70 字地址字地址89101184567401230 低地址低地址 高地址高地址 小端模式小端模式 低地址中存放字?jǐn)?shù)據(jù)的低字節(jié)低地址中存放字?jǐn)?shù)據(jù)的低字節(jié) 高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)高地址中存放字?jǐn)?shù)據(jù)的高字節(jié)示例示例A. A. 小端存儲(chǔ)法小端存儲(chǔ)法(0 x01234567)(0 x01234567)地址地址0 x80000 x80000 x80010 x80010 x80020 x80020 x80030 x8003數(shù)據(jù)(數(shù)據(jù)(1616進(jìn)制進(jìn)制表示)表示)0 x670 x670 x450 x450 x230 x230 x010 x01

5、數(shù)據(jù)(二進(jìn)制數(shù)據(jù)(二進(jìn)制表示)表示)0110011101100111010001010100010100100011001000110000000100000001B. B. 大端存儲(chǔ)法大端存儲(chǔ)法地址地址0 x80000 x80000 x80010 x80010 x80020 x80020 x80030 x8003數(shù)據(jù)(數(shù)據(jù)(1616進(jìn)制表進(jìn)制表示)示)0 x010 x010 x230 x230 x450 x450 x670 x67數(shù)據(jù)(二進(jìn)制表數(shù)據(jù)(二進(jìn)制表示)示)0000000100000001001000110010001101000101010001010110011101100111

6、本環(huán)節(jié)主要學(xué)習(xí)本環(huán)節(jié)主要學(xué)習(xí)ARMARM采用的是采用的是3232位架構(gòu)約定的基本位架構(gòu)約定的基本數(shù)據(jù)類(lèi)型,及存儲(chǔ)器大數(shù)據(jù)類(lèi)型,及存儲(chǔ)器大/ /小端兩種模式。小端兩種模式。 課程目錄課程目錄ARMARM數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 ARMARM處理器工作模式處理器工作模式 ARMARM寄存器組織寄存器組織 異常中斷處理異常中斷處理 處理器模式說(shuō)明備注 用戶 (usr)正常程序執(zhí)行模式不能直接切換到其它模式 系統(tǒng) (sys)運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán) 快中斷(fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處理IRQ異常響

7、應(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)入此模式處理器工作模式處理器工作模式(1)(1)ARMARM處理器有處理器有7 7種工作模式種工作模式處理器工作模式處理器工作模式(2)(2)特權(quán)模式特權(quán)模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處

8、理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)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq)

9、 系統(tǒng) (sys)處理器工作模式處理器工作模式(3)(3)用戶和系統(tǒng)模式用戶和系統(tǒng)模式處理器模式說(shuō)明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類(lèi)似,但具有可以直接切換到其它模式等特權(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í)

10、進(jìn)入此模式 這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問(wèn)用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問(wèn)一些受控的資源。 系統(tǒng) (sys)用戶 (usr)本環(huán)節(jié)主要學(xué)習(xí)本環(huán)節(jié)主要學(xué)習(xí)ARMARM處理器共有處理器共有7 7種工作模式種工作模式, ,及各及各種模式各自的特點(diǎn)種模式各自的特點(diǎn) 。課程目錄課程目錄ARMARM數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 ARMARM處理器工作模式處理器工作模式 ARMARM寄存器組織寄存器組織 異常中斷處理異常中斷處理 寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用

11、戶系統(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 *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

12、(PC)R15狀態(tài)寄存器R16(CPSR)CPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARMARM狀態(tài)各模式下的寄存器狀態(tài)各模式下的寄存器寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(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_f

13、iqR13(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_fiqARMARM狀態(tài)各模式下的寄存器狀態(tài)各模式下的寄存器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR

14、13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個(gè)寄存器,分成兩大類(lèi):31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(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(

15、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ú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶用戶無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11

16、R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷快中斷A

17、RMARM狀態(tài)各模式下可以訪問(wèn)的寄存器狀態(tài)各模式下可以訪問(wèn)的寄存器寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(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_sv

18、cR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編語(yǔ)言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類(lèi)別寄存器在匯編中

19、的名稱各模式下實(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_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器C

20、PSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的寄存器,也就是說(shuō)對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(

21、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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一

22、般的通用寄存器一般的通用寄存器R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v

23、2)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器一般的通用寄存器R12_fiqR12R11_fiqR

24、11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(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(I

25、P)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一般的通用寄存器一般的通用寄存器 寄存器R13、R14分別有6個(gè)分組的物理寄存器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13

26、_abtR13_svcR13寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(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_svcR14_abtR14_undR14_

27、irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器堆棧指針寄存器R13R13(SPSP) 寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒(méi)有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類(lèi)別寄存器在匯編中的名稱各模式下實(shí)際訪問(wèn)的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7

28、(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鏈接寄存器鏈接寄存器R14R14(LRLR) R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能

29、:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。Lable程序A程序BR14R14R14(LRLR)寄存器與子程序調(diào)用)寄存器與子程序調(diào)用 R14R14(LRLR)寄存器與子程序調(diào)用)寄存器與子程序調(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;寄存器

30、類(lèi)別寄存器在匯編中的名稱各模式下實(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_svcR14_abtR14_undR14_irqR14_fiqR15(PC)

31、R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq程序計(jì)數(shù)器程序計(jì)數(shù)器R15R15(PCPC) 寄存器R15為程序計(jì)數(shù)器(PC),它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對(duì)于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測(cè)的。程序狀態(tài)寄存器程序狀態(tài)寄存器 - 1- 1ARM7TDMI ARM7TDMI 包含當(dāng)前程序狀態(tài)寄存器包含當(dāng)前程序狀態(tài)寄存器 (CPSR), (CPSR), 加上加上5 5個(gè)程序狀態(tài)個(gè)程序狀態(tài)保存寄存器保存寄存器SPSRSPSR,當(dāng)異常發(fā)生

32、時(shí),用于保存,當(dāng)異常發(fā)生時(shí),用于保存CPSRCPSR的狀態(tài)的狀態(tài) 這些寄存器的功能是這些寄存器的功能是:保存保存ALU當(dāng)前操作信息當(dāng)前操作信息控制允許和禁止中斷控制允許和禁止中斷設(shè)置處理器操作模式設(shè)置處理器操作模式程序狀態(tài)寄存器程序狀態(tài)寄存器 - 2- 2uN, Z, C and V 條件碼標(biāo)志u可以在處理器中作為數(shù)學(xué)和邏輯操作改變u可以被所有的指令測(cè)試,以決定指令是否被執(zhí)行uN : Negative. Z : Zero. C : Carry. V : oVerflowuI and F 位是中斷禁止位uM0, M1, M2, M3 and M4 位是模式位程序狀態(tài)寄存器程序狀態(tài)寄存器 條件位:

33、條件位: N = 1-N = 1-結(jié)果為負(fù)結(jié)果為負(fù),0-,0-結(jié)果為正或結(jié)果為正或0 0 Z = 1-Z = 1-結(jié)果為結(jié)果為0,0-0,0-結(jié)果不為結(jié)果不為0 0 C =1-C =1-進(jìn)位,進(jìn)位,0-0-借位借位 V =1-V =1-結(jié)果溢出,結(jié)果溢出,0 0結(jié)果沒(méi)溢出結(jié)果沒(méi)溢出Q Q 位:位: 僅僅ARM 5TE/JARM 5TE/J架構(gòu)支持架構(gòu)支持 指示增強(qiáng)型指示增強(qiáng)型DSPDSP指令是否溢出指令是否溢出J J 位位 僅僅ARM 5TE/JARM 5TE/J架構(gòu)支持架構(gòu)支持 J = 1: J = 1: 處理器處于處理器處于JazelleJazelle狀態(tài)狀態(tài)中斷禁止位:中斷禁止位: I

34、= 1: I = 1: 禁止禁止 IRQ.IRQ. F = 1: F = 1: 禁止禁止 FIQ.FIQ.T BitT Bit 僅僅ARM xTARM xT架構(gòu)支持架構(gòu)支持 T = 0: T = 0: 處理器處于處理器處于 ARM ARM 狀態(tài)狀態(tài) T = 1: T = 1: 處理器處于處理器處于 Thumb Thumb 狀態(tài)狀態(tài)ModeMode位位( (處理器模式位處理器模式位):): 0b100000b10000UserUser 0b100010b10001FIQFIQ 0b100100b10010IRQIRQ 0b100110b10011SupervisorSupervisor 0b10

35、1110b10111AbortAbort 0b110110b11011UndefinedUndefined 0b111110b11111SystemSystem2731N Z C V Q2867I F T mode1623 815 54024fsxc U n d e f i n e dJ程序狀態(tài)寄存器程序狀態(tài)寄存器PSRPSR的模式位的模式位本環(huán)節(jié)主要學(xué)習(xí)本環(huán)節(jié)主要學(xué)習(xí)ARMARM寄存器組織寄存器組織,ARM,ARM處理器共有處理器共有7 7種不同的處理器模式,在每一種處理器模式中種不同的處理器模式,在每一種處理器模式中有一組相應(yīng)的寄存器組有一組相應(yīng)的寄存器組, ,各類(lèi)寄存器的功能特點(diǎn)各類(lèi)寄存

36、器的功能特點(diǎn), ,當(dāng)前程序狀態(tài)寄存器當(dāng)前程序狀態(tài)寄存器CPSRCPSR(Current Program Current Program Status RegisterStatus Register)各個(gè)標(biāo)志位所代表的功能)各個(gè)標(biāo)志位所代表的功能, , 每一種處理器模式下都有相應(yīng)的備份程序狀態(tài)寄每一種處理器模式下都有相應(yīng)的備份程序狀態(tài)寄存器存器SPSR,SPSR,做為備份做為備份CPSRCPSR 課程目錄課程目錄ARMARM數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型 ARMARM處理器工作模式處理器工作模式 ARMARM寄存器組織寄存器組織 異常中斷處理異常中斷處理 異常中斷處理異常中斷處理 異?;蛑袛嗍怯脩舫绦蛑凶罨?/p>

37、的一種執(zhí)行流程或形態(tài)。異?;蛑袛嗍怯脩舫绦蛑凶罨镜囊环N執(zhí)行流程或形態(tài)。 ARM一共有一共有7種類(lèi)型的異常,按優(yōu)先級(jí)從高到低的排列如下:種類(lèi)型的異常,按優(yōu)先級(jí)從高到低的排列如下:復(fù)位異常(Reset)數(shù)據(jù)異常(Data Abort)快速中斷異常(FIQ)外部中斷異常(IRQ)預(yù)取異常(Prefetch Abort)軟件中斷(SWI)和未定義指令異常(Undefined instruction) ARMARM的的7 7種異常種異常 異常類(lèi)型異常類(lèi)型處理器模式處理器模式執(zhí)行低地址執(zhí)行低地址執(zhí)行高地址執(zhí)行高地址復(fù)位異常(復(fù)位異常(ResetReset)特權(quán)模式特權(quán)模式0 x000000000 x00

38、0000000 xFFFF00000 xFFFF0000未定義指令異(未定義指令異(Undefined Undefined interruptinterrupt)未定義指令中止模式未定義指令中止模式0 x000000040 x000000040 xFFFF00040 xFFFF0004軟中斷異常(軟中斷異常(Software Software AbortAbort)特權(quán)模式特權(quán)模式0 x000000080 x000000080 xFFFF00080 xFFFF0008預(yù)取異常(預(yù)取異常(Prefetch Prefetch AbortAbort)數(shù)據(jù)訪問(wèn)中止模式數(shù)據(jù)訪問(wèn)中止模式0 x000000

39、0C0 x0000000C0 xFFFF000C0 xFFFF000C數(shù)據(jù)異常(數(shù)據(jù)異常(Data AbortData Abort)數(shù)據(jù)訪問(wèn)中止模式數(shù)據(jù)訪問(wèn)中止模式0 x000000100 x000000100 xFFFF00100 xFFFF0010外部中斷請(qǐng)求外部中斷請(qǐng)求IRQIRQ外部中斷請(qǐng)求模式外部中斷請(qǐng)求模式0 x000000180 x000000180 xFFFF00180 xFFFF0018快速外部中斷請(qǐng)求快速外部中斷請(qǐng)求FIQFIQ快速中斷請(qǐng)求模式快速中斷請(qǐng)求模式0 x0000001C0 x0000001C0 xFFFF001C0 xFFFF001C異常發(fā)生操作偽指令異常發(fā)生操

40、作偽指令 R14_ = return linkR14_ = return linkSPSR_ = CPSRSPSR_ = CPSRCPSR4:0 = exception mode numberCPSR4:0 = exception mode numberCPSR5 = 0 /CPSR5 = 0 /* *進(jìn)入進(jìn)入ARMARM狀態(tài)狀態(tài)* */ /If = = reset or FIQ thenIf = = reset or FIQ then CPSR6 = 1 / CPSR6 = 1 /* *屏蔽快速中斷屏蔽快速中斷FIQFIQ* */ /CPSR7 CPSR7 1 /1 /* *屏蔽外部中斷屏蔽

41、外部中斷IRQIRQ* */ /PC = exception vector addressPC = exception vector address當(dāng)異常發(fā)生時(shí),分組寄存器當(dāng)異常發(fā)生時(shí),分組寄存器r14r14和和SPSRSPSR用于保存處理器用于保存處理器狀態(tài)狀態(tài) 復(fù)位異常復(fù)位異常操作偽指令操作偽指令 R14_svc = UNPREDICTABLE valueR14_svc = UNPREDICTABLE valueSPSR_svc = UNPREDICTABLE valueSPSR_svc = UNPREDICTABLE valueCPSR4:0 = 0b10011 /CPSR4:0 = 0

42、b10011 /* *進(jìn)入特權(quán)模式進(jìn)入特權(quán)模式* */ /CPSR5 = 0 /CPSR5 = 0 /* *處理器進(jìn)入處理器進(jìn)入ARMARM狀態(tài)狀態(tài)* */ /CPSR6 = 1 /CPSR6 = 1 /* *禁止快速中斷禁止快速中斷* */ /CPSR7 = 1 /CPSR7 = 1 /* *禁止外設(shè)中斷禁止外設(shè)中斷* */ /If high vectors configured thenIf high vectors configured then PC = 0 xffff0000 PC = 0 xffff0000ElseElse PC = 0 x00000000 PC = 0 x0000

43、0000未定義指令異常未定義指令異常 當(dāng)當(dāng)ARMARM處理器執(zhí)行協(xié)處理器指令是,它必須等待任一外部處理器執(zhí)行協(xié)處理器指令是,它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒(méi)協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒(méi)有相應(yīng),則發(fā)生未定義指令異常。有相應(yīng),則發(fā)生未定義指令異常。未定義指令異??捎糜谠跊](méi)有物理協(xié)處理器的系統(tǒng)上,對(duì)協(xié)處理器進(jìn)行軟件仿真,或通過(guò)軟件仿真實(shí)現(xiàn)指令集擴(kuò)展。例如,在一個(gè)不包含浮點(diǎn)運(yùn)算的系統(tǒng)中,CPU遇到浮點(diǎn)預(yù)算指令時(shí),將發(fā)生未定義指令異常中斷,在該未定義指令異常中斷的處理程序中可以通過(guò)其它指令序列仿真浮點(diǎn)運(yùn)算指令。未定義未定義異常操作偽指令異常操作偽

44、指令 r14_und = address of next instruction after the r14_und = address of next instruction after the undefined instructionundefined instructionSPSR_und = CPSRSPSR_und = CPSRCPSR4:0 = 0b11011 /CPSR4:0 = 0b11011 /* *進(jìn)入未定義指令模式進(jìn)入未定義指令模式* */ /CPSR5 = 0 /CPSR5 = 0 /* *處理器進(jìn)入處理器進(jìn)入ARMARM狀態(tài)狀態(tài)* */ / /* *CPSR6CPS

45、R6保持不變保持不變* */ /CPSR7 = 1 /CPSR7 = 1 /* *禁止外設(shè)中斷禁止外設(shè)中斷* */ /If high vectors configured thenIf high vectors configured then PC = 0 xffff0004 PC = 0 xffff0004ElseElse PC = 0 x00000004 PC = 0 x00000004軟中斷異常軟中斷異常操作偽指令操作偽指令 r14_svc = address of next instruction after the SWI instructionSPSR_und = CPSRCPSR

46、4:0 = 0b10011 /*進(jìn)入特權(quán)模式進(jìn)入特權(quán)模式*/CPSR5 = 0 /*處理器進(jìn)入處理器進(jìn)入ARM狀態(tài)狀態(tài)*/*CPSR6保持不變保持不變*/CPSR7 = 1 /*禁止外設(shè)中斷禁止外設(shè)中斷*/If high vectors configured then PC = 0 xffff0008Else PC = 0 x00000008軟中斷異常發(fā)生時(shí),處理器進(jìn)入特權(quán)模式,執(zhí)行一些特權(quán)模式下軟中斷異常發(fā)生時(shí),處理器進(jìn)入特權(quán)模式,執(zhí)行一些特權(quán)模式下的操作系統(tǒng)功能。軟中斷異常發(fā)生時(shí),處理器執(zhí)行下面的偽操作。的操作系統(tǒng)功能。軟中斷異常發(fā)生時(shí),處理器執(zhí)行下面的偽操作。 預(yù)取指令異常預(yù)取指令異常

47、r14_svc = address of the aborted instruction + 4r14_svc = address of the aborted instruction + 4SPSR_und = CPSRSPSR_und = CPSRCPSR4:0 = 0b10111 /CPSR4:0 = 0b10111 /* *進(jìn)入特權(quán)模式進(jìn)入特權(quán)模式* */ /CPSR5 = 0 /CPSR5 = 0 /* *處理器進(jìn)入處理器進(jìn)入ARMARM狀態(tài)狀態(tài)* */ / /* *CPSR6CPSR6保持不變保持不變* */ /CPSR7 = 1 /CPSR7 = 1 /* *禁止外設(shè)中斷禁止外設(shè)

48、中斷* */ /If high vectors configured thenIf high vectors configured then PC = 0 xffff000C PC = 0 xffff000CElseElse PC = 0 x0000000C PC = 0 x0000000C預(yù)取指令異常使由系統(tǒng)存儲(chǔ)器報(bào)告的。當(dāng)處理器試圖去取一條被預(yù)取指令異常使由系統(tǒng)存儲(chǔ)器報(bào)告的。當(dāng)處理器試圖去取一條被標(biāo)記為預(yù)取無(wú)效的指令時(shí),發(fā)生預(yù)取異常標(biāo)記為預(yù)取無(wú)效的指令時(shí),發(fā)生預(yù)取異常 數(shù)據(jù)訪問(wèn)中止異常數(shù)據(jù)訪問(wèn)中止異常 r14_abt = address of the aborted instruction

49、 + 8r14_abt = address of the aborted instruction + 8SPSR_abt = CPSRSPSR_abt = CPSRCPSR4:0 = 0b10111CPSR4:0 = 0b10111CPSR5 = 0CPSR5 = 0/ /* *CPSR6CPSR6保持不變保持不變* */ /CPSR7 = 1 /CPSR7 = 1 /* *禁止外設(shè)中斷禁止外設(shè)中斷* */ /If high vectors configured thenIf high vectors configured then PC = 0 xffff000C10 PC = 0 xfff

50、f000C10ElseElse PC = 0 x00000010 PC = 0 x00000010數(shù)據(jù)訪問(wèn)中止異常是由存儲(chǔ)器發(fā)出數(shù)據(jù)中止信號(hào),它由存儲(chǔ)器訪問(wèn)指令數(shù)據(jù)訪問(wèn)中止異常是由存儲(chǔ)器發(fā)出數(shù)據(jù)中止信號(hào),它由存儲(chǔ)器訪問(wèn)指令(Load/StoreLoad/Store)產(chǎn)生。當(dāng)數(shù)據(jù)訪問(wèn)指令的目標(biāo)地址不存在,或者該地址)產(chǎn)生。當(dāng)數(shù)據(jù)訪問(wèn)指令的目標(biāo)地址不存在,或者該地址不允許當(dāng)前指令的訪問(wèn),處理器產(chǎn)生數(shù)據(jù)訪問(wèn)中止異常不允許當(dāng)前指令的訪問(wèn),處理器產(chǎn)生數(shù)據(jù)訪問(wèn)中止異常 外部中斷外部中斷IRQIRQ r14_irq = address of next instruction to be executed +

51、 4r14_irq = address of next instruction to be executed + 4SPSR_irq = CPSRSPSR_irq = CPSRCPSR4:0 = 0b10010 /CPSR4:0 = 0b10010 /* *進(jìn)入特權(quán)模式進(jìn)入特權(quán)模式* */ /CPSR5 = 0 /CPSR5 = 0 /* *處理器進(jìn)入處理器進(jìn)入ARMARM狀態(tài)狀態(tài)* */ / /* *CPSR6CPSR6保持不變保持不變* */ /CPSR7 = 1 /CPSR7 = 1 /* *禁止外設(shè)中斷禁止外設(shè)中斷* */ /If high vectors configured the

52、nIf high vectors configured then PC = 0 xffff0018 PC = 0 xffff0018ElseElse PC = 0 x00000018 PC = 0 x00000018當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且當(dāng)處理器的外部中斷請(qǐng)求引腳有效,而且CPSR寄存器的寄存器的I控制位被清除控制位被清除時(shí),處理器產(chǎn)生外部中斷時(shí),處理器產(chǎn)生外部中斷IRQ異常。系統(tǒng)中各外部設(shè)備通常通過(guò)該異常中異常。系統(tǒng)中各外部設(shè)備通常通過(guò)該異常中斷請(qǐng)求處理器服務(wù)斷請(qǐng)求處理器服務(wù) 異常優(yōu)先級(jí)異常優(yōu)先級(jí) 異常優(yōu)先級(jí)(1) Reset (highest priority)(2) Dat

53、a abort(3) FIQ(4) IRQ(5) Prefetch abort(6) 未定義指令, Software interrupt (最低優(yōu)先級(jí))例子例子: : 用戶模式到用戶模式到 FIQFIQ模式模式* *spsr_fiqcpsrr7r4r5r2r1r0r3r6r15 (pc)r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiqr14 (lr)r13 (sp)r12r10r11r9r8用戶模式用戶模式 CPSR CPSR 復(fù)制到復(fù)制到 FIQ FIQ 模式模式 SPSRSPSRcpsrr15 (pc)r14 (lr)r13 (sp)r12r1

54、0r11r9r8r7r4r5r2r1r0r3r6r14_fiqr13_fiqr12_fiqr10_fiqr11_fiqr9_fiqr8_fiq返回一個(gè)從用戶模式計(jì)算的地址返回一個(gè)從用戶模式計(jì)算的地址,PC,PC值存儲(chǔ)值存儲(chǔ)在在FIQFIQ模式模式Registers in useRegisters in use異常異常用戶模式用戶模式FIQ 模式模式spsr_fiq47異常處理異常處理當(dāng)異常產(chǎn)生時(shí)當(dāng)異常產(chǎn)生時(shí), ARM core:, ARM core: 拷貝拷貝 CPSR CPSR 到到 SPSR_SPSR_ 設(shè)置適當(dāng)?shù)脑O(shè)置適當(dāng)?shù)?CPSR CPSR 位:位: 改變處理器狀態(tài)進(jìn)入改變處理器狀態(tài)進(jìn)入 ARM ARM 態(tài)態(tài) 設(shè)置

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論