版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、 ARM體系構(gòu)造支持7種處置器方式,分別為:用戶方式、快中斷方式、中斷方式、管理方式、中止方式、未定義方式和系統(tǒng)方式,如下表所示。這樣的益處是可以更好的支持操作系統(tǒng)并提高任務(wù)效率。ARM7TDMI完全支持這七種方式。2.5 處置器方式處理器模式說明備注 用戶 (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)時進入此
2、模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式處理器模式說明備注 用戶 (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)存和/或存儲器保護在ARM7TDMI沒有
3、大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時進入此模式 除用戶方式外,其它方式均為特權(quán)方式。ARM內(nèi)部存放器如CPSR)和一些片內(nèi)外設(shè)在硬件設(shè)計上只允許或者可選為只允許特權(quán)方式下訪問。此外,特權(quán)方式可以自在的切換處置器方式,而用戶方式不能自在切換到別的方式。 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統(tǒng) (sys)2.5.1 特權(quán)方式它們之間的區(qū)別在于有些操作只能在特權(quán)方式下才被允許,如直接改動方式和中斷使能等;系統(tǒng)方式實踐上相當(dāng)于用戶方式的特權(quán)方式 處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切
4、換到其它模式 系統(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)時進入此模式 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 這五種方式稱為異常方式。它們除了可以經(jīng)過程
5、序切換進入外,也可以由特定的異常進入。當(dāng)特定的異常出現(xiàn)時,處置器進入相應(yīng)的異常方式。每種異常方式都有一些獨立的存放器,以防止異常退出時用戶方式的形狀不可靠。2.5.2 異常方式當(dāng)特定的異常出現(xiàn)的時候,程序就會進入到相應(yīng)的異常方式中 。不同的方式 對應(yīng)于運用程序的 不同的階段:比如正常運轉(zhuǎn),中斷等處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應(yīng)時進入此模式
6、管理 (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ù)可以運用這個方式訪問一些受控的資源,而不用擔(dān)憂異常出現(xiàn)時義務(wù)形狀變得不可靠。 系統(tǒng) (sys) 用戶 (usr)2.5.3 用戶和系統(tǒng)方式 在ARM7TDMI處置器內(nèi)部有37個用戶可見的存放器。 在不
7、同的任務(wù)方式和處置器形狀下,程序員可以訪問的存放器也不盡一樣。2.6 ARM形狀下內(nèi)部存放器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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
8、(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_fiqR
9、12(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_fiq2.6.1 ARM形狀各方式下的存放器SPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR
10、13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0一切的37個存放器,分成兩大類:31個通用32位存放器;6個形狀存放器。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_
11、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無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12
12、R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷2.6.2 ARM形
13、狀各方式下可以訪問的存放器寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_i
14、rqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.6.3 普通的通用存放器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編言語中存放器R0R12為保管數(shù)據(jù)或地址值的通用存放器。它們是完全通用的存放器,不會被體系構(gòu)造作為特殊用途,并且可用于任何運用通用存放器的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中
15、止未定義中斷快中斷通用寄存器和程序計數(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無SPSR_svcSP
16、SR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的存放器,也就是說對于任何處置器方式,這些存放器都對應(yīng)于一樣的32位物理存放器。2.6.3 普通的通用存放器續(xù)寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4
17、(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14
18、_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R14為分組存放器。它們所對應(yīng)的物理存放器取決于當(dāng)前的處置器方式,幾乎一切允許運用通用存放器的指令都允許運用分組存放器2.6.3 普通的通用存放器續(xù)寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v
19、5)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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R12有兩個
20、分組的物理存放器。一個用于除FIQ方式之外的一切存放器方式,另一個用于FIQ方式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處置速度。2.6.3 普通的通用存放器續(xù)寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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
21、_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq 存放器R13、R14分別有6個分組的物理存放器。一個用于用戶和系統(tǒng)方式,其他5個分別用于5種異常方式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR132.6.3 普通的通用存放器續(xù)寄存器類別寄存器在匯編中
22、的名稱各模式下實際訪問的寄存器用戶系統(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)寄存器C
23、PSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.6.4 堆棧指針存放器R13SP 存放器R13常作為堆棧指針SP。在ARM指令集當(dāng)中,沒有以特殊方式運用R13的指令或其它功能,只是習(xí)慣上都這樣運用。但是在Thumb指令集中存在運用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_fi
24、qR10(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.6.5 鏈接存放器R14(LR) R14為鏈接存放器LR,在構(gòu)造上有兩個特殊功能:在每種方式下,方式本身的R14版本用于保管子程序前往地址;當(dāng)發(fā)生異常時,將R14對
25、應(yīng)的異常方式版本設(shè)置為異常前往地址有些異常有一個小的固定偏移量。Lable程序A程序BR142.6.6 R14存放器與子程序調(diào)用BL Lable地址A?MOV PC,LRR14(地址A)Lable?程序A執(zhí)行過程中調(diào)用程序B;操作流程 程序跳轉(zhuǎn)至標號Lable,執(zhí)行程序B。同時硬件將“BL Lable指令的下一條指令所在地址存入R14; 程序B執(zhí)行最后,將R14存放器的內(nèi)容放入PC,前往程序A; 異常發(fā)生時,程序要跳轉(zhuǎn)至異常效力程序,對前往地址的處置與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個小常量的偏移。2.6.7 R14存放器與異常發(fā)生 當(dāng)發(fā)生異常嵌套時,這些異常之間能夠會發(fā)
26、生沖突。例如:假設(shè)用戶在用戶方式下執(zhí)行程序時發(fā)生了IRQ中斷,用戶方式存放器不會被破壞。但是假設(shè)允許在IRQ方式下的中斷處置程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時,外部中斷處置程序保管在R14_irq中的任何值都將被嵌套中斷的前往地址所覆蓋。R14R14_irq用戶方式下的程序IRQ方式下的程序ALDRMOV PC,LRBNE.MOVMOV地址A地址A1.執(zhí)行用戶方式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ方式下的R14_irq存放器,用戶方式下的R14沒有被破壞;3. IRQ效力程序A執(zhí)行終了,將R14_irq存放器的內(nèi)容減去某個常量后存入PC,前往之前被中斷的程
27、序;未被破壞2.6.8 R14存放器留意要點R14R14_irq用戶方式下的程序IRQ方式下的程序AaB.XA地址A地址A1.執(zhí)行用戶方式下的程序;2.發(fā)生IRQ中斷,硬件將某個地址存入IRQ方式下的R14_irq存放器,用戶方式下的R14沒有被破壞;3. IRQ效力程序A執(zhí)行終了,將R14_irq存放器的內(nèi)容減去某個常量后存入PC,前往之前被中斷的程序;未被破壞IRQ方式下的程序BareturnB.XA地址B地址B4. 假設(shè)在IRQ處置程序中翻開IRQ中斷,并且再次發(fā)生IRQ中斷,或者調(diào)用子程序;5. 硬件將前往地址保管在R14_irq存放器中,原來保管的前往地址將被覆蓋,呵斥錯誤;被破壞6
28、. 在程序B前往到程序A,然后在前往到用戶方式下被中斷的程序時,發(fā)生錯誤,將不能正確前往;returnreturn 處理方法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時不再保管任何有意義的值將R14入棧,或者切換到其它處置器方式下。2.6.8 R14存放器留意要點續(xù)寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_fiqR
29、11(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.6.9 程序計數(shù)器R15(PC) 存放器R15為程序計數(shù)器PC,它指向正在取指的地址。可以以為它是一個通用存放器,但是對于它的運用有許多與指令相關(guān)的限制或特殊情況。假設(shè)R15運用的方式超出了這些限制,那么結(jié)果
30、將是不可預(yù)測的。 正常操作時,從R15讀取的值是處置器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個字節(jié)兩條ARM指令的長度。由于ARM指令總是以字為單位,所以R15存放器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線形狀地址程序代碼2.6.10 讀R15的限制寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統(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_
31、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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq2.6.11 程序形狀存放器CPSR 存放器CPSR為程序形狀存放器,在異常方式中,另外一個存放器“程序形狀保管存放器SPSR可以被訪問。每種異常都有本人的SPSR
32、,在由于異常事件而進入異常時它保管CPSR的當(dāng)前值,異常退出時可經(jīng)過它恢復(fù)CPSR。2.6.11 程序形狀存放器CPSR ARM7TDMI內(nèi)核包含1個CPSR和5個供異常處置程序運用的SPSR。CPSR反映了當(dāng)前處置器的形狀,其包含:4個條件代碼標志負(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 0條件代碼標志保管控制位溢出標志進位或借位擴展零負或小于零I
33、RQ制止FIQ制止形狀位方式位NZCVIM0M1M2M3M4TFCPSR存放器的格式2.6.11 程序形狀存放器CPSR條件標志保管ALU當(dāng)前操作信息中斷使能標志控制允許和制止中斷當(dāng)前處置器的方式設(shè)置處置器操作方式其它的一些形狀和控制標志 每個異常方式還帶有一個程序形狀保管存放器 SPSR,它用于保管在異常事件發(fā)生之前的CPSR。CPSR和SPSR經(jīng)過特殊指令進展訪問。留意:假設(shè)經(jīng)過程序修正CPSR存放器中的方式位進入異常方式,那么硬件將不會把CPSR保管至SPSR中。2.6.12 關(guān)于SPSR 大多數(shù)“數(shù)值處置指令可以選擇能否影響條件代碼標志位。通常假設(shè)指令帶S后綴,那么該指令的執(zhí)行會影響條
34、件代碼標志;但有一些指令的執(zhí)行總是會影響條件代碼標志(CMP指令,條件碼標志受影響)。 N、 Z、 C和V位都是條件代碼標志。經(jīng)過算術(shù)操作、邏輯操作、MSR或者LDM指令可以對這些位進展設(shè)置。一切ARM指令都可按條件來執(zhí)行,而Thumb指令中只需分支指令可按條件執(zhí)行。2.6.13 PSR中的條件代碼標志各標志位的含義如下:N 運算結(jié)果的最高位反映在該標志位。對于有符號二進制補碼,結(jié)果為負數(shù)時N=1,結(jié)果為正數(shù)或零時N=0;Z 指令結(jié)果為0時Z=1通常表示比較結(jié)果“相等,否那么Z=0;C 當(dāng)進展加法運算(包括CMN指令),并且最高位產(chǎn)生進位時C=1,否那么C=0。當(dāng)進展減法運算(包括CMP 指令
35、),并且最高位產(chǎn)生借位時C=0,否那么C=1。對于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變; V 當(dāng)進展加法/減法運算,并且發(fā)生有符號溢出時V=1,否那么V=0,其它指令V通常不變。 CPSR的最低8位為控制位,當(dāng)發(fā)生異常時,這些位被硬件改動。當(dāng)處置器處于一個特權(quán)方式時,可用軟件操作這些位。它們分別是:中斷制止位、 T位、方式位2.6.14 PSR中的控制位 中斷制止位包括I和F位:當(dāng)I位置位時,IRQ中斷被制止;當(dāng)F位置位時,F(xiàn)IQ中斷被制止。 T位反映了正在操作的形狀:當(dāng)T位置位時,處置器正在Thumb形狀下運轉(zhuǎn);當(dāng)T位清零時,處置器正在ARM形狀下運轉(zhuǎn)
36、。 方式位包括M4、M3、M2、M1和M0,這些位決議處置器的操作方式。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_fiq R0R12,R13_irq,R14_irq,PC,CPSR, SPSR_irq 10011管理R0R7,SP_svc,LR_svc,PC,
37、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_und11111系統(tǒng)R0R7,SP,LR,PC,CPSR R0R14,PC, CPSR 2.6.15 CPSR方式位設(shè)置表 CPSR中的保管位被保管未來運用。為了
38、提高程序的可移植性,當(dāng)改動CPSR標志和控制位時,請不要改動這些保管位。另外,請確保您程序的運轉(zhuǎn)不受保管位的值影響,由于未來的處置器能夠會將這些位設(shè)置為1或者0。 2.6.16 保管位ARM State 與Thumb State存放器關(guān)系與ARM形狀一樣,Thumb形狀也有快中斷FIRQ中斷IRQ管理svc中止Abort未定義Und等特權(quán)摸式,每一種方式都有一組SP、LR和SPSR存放器。2.7 異常只需正常的程序流被暫時中止,處置器就進入異常方式。例如呼應(yīng)一個來自外設(shè)的中斷。在處置異常之前,ARM7TDMI內(nèi)核保管當(dāng)前的處置器形狀,這樣當(dāng)處置程序終了時可以恢復(fù)執(zhí)行原來的程序。 假好像時發(fā)生兩
39、個或更多異常,那么將按照固定的順序來處置異常,詳見“異常優(yōu)先級部分。 異常類型FIQ :快速中斷懇求,CPSR:I=1特權(quán)方式下才干修正I、FIRQ(Interrupt ReQuest):外部中斷懇求,CPSR:F=0,系統(tǒng)的外設(shè)未定義指令:ARM處置器或協(xié)處置器遇到不能處置的指令預(yù)取中止:預(yù)取指令地址不存在,并執(zhí)行該預(yù)取的指令的時候數(shù)據(jù)中止:數(shù)據(jù)訪問指令的地址不存在復(fù)位:處置器復(fù)位電平有效軟件中斷Software interrupt:執(zhí)行SWI指令產(chǎn)生,可用于用戶方式下的程序調(diào)用特權(quán)操作指令,可運用該異常機制實現(xiàn)系統(tǒng)功能調(diào)用經(jīng)過軟件中斷產(chǎn)生進展管理員方式中獲得通常要求特殊的管理功能,如操作系
40、統(tǒng)支持未定義的指令陷井當(dāng)ARM接遭到一條不能處置的指令,ARM把這條指令提供應(yīng)任何一個協(xié)處置器執(zhí)行假設(shè)協(xié)處置器可以執(zhí)行這條指令但此時協(xié)處置器忙,ARM將等待直到協(xié)處置器預(yù)備好或中斷發(fā)生假設(shè)沒有協(xié)處置器處置這條指令,那么ARM將處置未定義的指令陷井 當(dāng)多個異常同時發(fā)生時,一個固定的優(yōu)先級系統(tǒng)決議它們被處置的順序:異常類型優(yōu)先級復(fù)位1(最高優(yōu)先級)數(shù)據(jù)中止2FIQ3IRQ4預(yù)取中止5未定義指令6SWI7(最低優(yōu)先級)優(yōu)先級降低2.7.9 異常優(yōu)先級 當(dāng)多個異常同時發(fā)生時,一個固定的優(yōu)先級系統(tǒng)決議它們被處置的順序:異常類型優(yōu)先級復(fù)位1(最高優(yōu)先級)數(shù)據(jù)中止2FIQ3IRQ4預(yù)取中止5未定義指令6SW
41、I7(最低優(yōu)先級)異常向量start0 x00 bReset_Handler Undefined_Handler0 x004 bUndefined_HandlerSWI_Handler bSWI_HandlerPrefetch_Handler bPrefetch_HandlerAbort_Handler bAbort_HandlerIRQ_Handler bIRQ_HandlerFIQ_Handler0 x1C b FIQ_HandlerReset_Handler 2.7.1 異常入口/出口匯總異?;蛉肟诜祷刂噶钪暗臓顟B(tài)備注ARM R14_xThumb R14_xBLMOV PC,R14PC
42、+4PC+2 此處PC為BL,SWI,未定義的指令取指或預(yù)取指中止指令的物理地址SWIMOVS PC,R14_svcPC+4PC+2未定義的指令MOVS PC,R14_undPC+4PC+2預(yù)取指中止SUBS PC,R14_abt,#4PC+4PC+4快中斷SUBS PC,R14_fiq,#4PC+4PC+4此處PC為由于FIQ或IRQ占先而沒有被執(zhí)行的指令的物理地址中斷SUBS PC,R14_irq,#4PC+4PC+4數(shù)據(jù)中止SUBS PC,R14_abt,#8PC+8PC+8此處PC為產(chǎn)生數(shù)據(jù)中止的裝載或保存指令的物理地址。 復(fù)位無復(fù)位時保存在R14_svc中的值不可預(yù)知。 留意:該表中
43、“之前的形狀列是硬件固定的,無法改動?!扒巴噶盍惺擒浖幊掏瓿傻?,人為控制的,可以改動。 假設(shè)異常處置程序曾經(jīng)把前往地址拷貝到堆棧,那么可以運用一條多存放器傳送指令來恢復(fù)用戶存放器并實現(xiàn)前往。;開場SUB LR,LR,#4;計算前往地址STMFD SP!,R0-R3,LR;保管運用到的存放器. . .;此處省略中斷效力程序;退出LDMFD SP!,R0-R3,PC;中斷前往以中斷異常為例,中斷處置代碼的開場部分和退出部分2.7.2 異常入口和出口處置PC恢復(fù)的同時CPSR也恢復(fù)在異常發(fā)生后,ARM7TDMI內(nèi)核會作以下任務(wù): 在適當(dāng)?shù)腖R中保管下一條指令的地址,當(dāng)異常入口來自:ARM形狀,那
44、么ARM7TDMI將當(dāng)前指令地址加4或加8復(fù)制取決于異常的類型到LR中;Thumb形狀,那么ARM7TDMI將當(dāng)前指令地址加4或加8 取決于異常的類型復(fù)制到LR中;異常處置器程序不用確定形狀。 將CPSR復(fù)制到適當(dāng)?shù)腟PSR中; 將CPSR方式位強迫設(shè)置為與異常類型相對應(yīng)的值; 強迫PC從相關(guān)的異常向量處取指。2.7.3 進入異常 ARM7TDMI內(nèi)核在中斷異常時置位中斷制止標志,這樣可以防止不受控制的異常嵌套。假設(shè)復(fù)位或呼應(yīng)FIQ中斷,還制止FIQ中斷注:異??偸窃贏RM形狀中進展處置。當(dāng)處置器處于Thumb形狀時發(fā)生了異常,在異常向量地址裝入PC時,會自動切換到ARM形狀。進入異常的操作R
45、14_=Return LinkSPSR_=CPSRCPSR4:0=Exception Mode NumberCPSR5=0 ;當(dāng)運轉(zhuǎn)于ARM形狀時IF=Reset or FIQ then ;當(dāng)呼應(yīng)FIQ異常時,制止新的FIQ異常CPSR6=1;/ * 制止快速中斷 ,否那么CPSR6不變 */CPSR7=1;/ * 制止正常中斷 * /PC=Exception Vector AddressR14-svc = address of next instruntion after the SWI instruction+2/+4R14-und = address of next instructio
46、n after the undefined instruction +2/+4R14-abt=address of the aborted instruction +4 預(yù)取中止R14-abt=address of the aborted instruction +8數(shù)據(jù)中止R14-irq=address of next instruction executed +4R14-fir=address of next instruction to be executed +4 當(dāng)異常終了時,用戶異常處置程序必需:1. 將LR中的值減去偏移量后存入PC,偏移量根據(jù)異常的類型而有所不同;2. 將SPS
47、R的值復(fù)制回CPSR;注:恢復(fù)CPSR的動作會將T、F和I位自動恢復(fù)為異常發(fā)生前的值。 “復(fù)位異常中斷處置程序,不需求前往。2.7.4 退出異常MOVS pc, lr 或 SUBS pc, lr, #4 或LDMFD sp!, pc這幾條指令都是普通的數(shù)據(jù)處置指令,特殊之處就是把PC 存放器作為了目的存放器,并且?guī)Я颂厥獾暮缶Y“S或“,在特權(quán)方式下,“S或“的作用就是使指令在執(zhí)行時,同時完成從SPSR 到CPSR 的拷貝,到達恢復(fù)形狀存放器的目的。程序AIRQ效力程序系統(tǒng)方式IRQ方式程序存放器組2.7.5 圖示進入異常過程1. 程序在系統(tǒng)方式下運轉(zhuǎn)用戶程序,假定當(dāng)前處置器形狀為Thumb形狀、允許IRQ中斷;2. 用戶程序運轉(zhuǎn)時發(fā)生IRQ中斷,硬件完成以下動作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0. . .?MODTFI. . .NZCV置位I位制止IRQ中斷清零T位進入ARM形狀設(shè)置MOD位,切換處置器方式至IRQ方式將下一條指令的地址存入IRQ方式的LR存放器將CPSR存放器內(nèi)容存入IRQ方式的SPSR存
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安全生產(chǎn)事故報告制度
- 員工手冊規(guī)范含公司文化與規(guī)章制度
- 企業(yè)會議管理制度標準化文件及執(zhí)行流程模板
- 制造業(yè)財務(wù)管理制度完整匯編
- 我國中小企業(yè)信貸風(fēng)險法律控制路徑探究:基于實踐與制度的雙重視角
- 個人績效考核工作方案
- 奉獻教育實施方案
- 數(shù)字化賦能文旅:沉浸式體驗設(shè)計與場景構(gòu)建方案研究
- 基于生物技術(shù)的環(huán)保治理創(chuàng)新方案與應(yīng)用研究
- GB/T 46901-2025數(shù)據(jù)安全技術(shù)基于個人請求的個人信息轉(zhuǎn)移要求
- 要素式民事起訴狀(房屋租賃合同糾紛)
- 急性呼吸窘迫綜合征病例討論
- DB11∕T 510-2024 公共建筑節(jié)能工程施工質(zhì)量驗收規(guī)程
- 英語滬教版5年級下冊
- T/CPFIA 0005-2022含聚合態(tài)磷復(fù)合肥料
- GB/T 43590.507-2025激光顯示器件第5-7部分:激光掃描顯示在散斑影響下的圖像質(zhì)量測試方法
- QGDW12505-2025電化學(xué)儲能電站安全風(fēng)險評估規(guī)范
- 顧客特殊要求培訓(xùn)課件
- 幼兒園助教培訓(xùn):AI賦能教師教學(xué)能力提升
- 經(jīng)銷商會議總結(jié)模版
- 兩癌預(yù)防知識講座
評論
0/150
提交評論