版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章ARM處理器編程模型與指令系統(tǒng)第四章ARM處理器編程模型與指令系統(tǒng)
體系結(jié)構(gòu)直接支持的數(shù)據(jù)類型ARM處理器支持下列數(shù)據(jù)類型:字節(jié)8位半字16位(必須分配為占用兩個(gè)字節(jié))字32位(必須分配為占用4各字節(jié))1112342字節(jié)半字字4.1ARM微處理器的工作狀態(tài)4.1ARM微處理器的工作狀態(tài)從編程的角度看,ARM微處理器的工作狀態(tài)一般有兩種,并可在兩種狀態(tài)之間切換:ARM狀態(tài):此時(shí)處理器執(zhí)行32位的字對(duì)齊的ARM指令Thumb狀態(tài):此時(shí)處理器執(zhí)行16位的、半字對(duì)齊的Thumb指令4.1ARM微處理器的工作狀態(tài)處理器狀態(tài)使用BX指令將ARM7TDMI內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換,程序如下所示。;從Arm狀態(tài)切換到Thumb狀態(tài)LDRR0,=Lable+1BXR0;從Thumb狀態(tài)切換到ARM狀態(tài)LDRR0,=LableBXR0地址最低位為1,表示切換到Thumb狀態(tài)地址最低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標(biāo)號(hào)處理器模式說(shuō)明備注用戶(usr)正常程序執(zhí)行模式不能直接切換到其它模式系統(tǒng)(sys)運(yùn)行操作系統(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)有大用處未定義(und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式處理器7種模式4.2ARM微處理器的運(yùn)行模式特權(quán)模式(PrivilegedModes)處理器模式說(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)有大用處未定義(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)系統(tǒng)(sys)4.2ARM微處理器的運(yùn)行模式異常模式(ExceptionModes)處理器模式說(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)有大用處未定義(und)支持硬件協(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)不可靠。4.2ARM微處理器的運(yùn)行模式用戶和系統(tǒng)模式處理器模式說(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)有大用處未定義(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)4.2ARM微處理器的運(yùn)行模式4.3ARM體系結(jié)構(gòu)的存儲(chǔ)器格式ARM體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù)大端格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)則存放在高地址中。
4.3ARM體系結(jié)構(gòu)的存儲(chǔ)器格式ARM體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù)小端格式:與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。4.4寄存器組織4.4.1ARM狀態(tài)下的寄存器組織通用寄存器:通用寄存器包括R0~R15,可以分為三類:未分組寄存器R0~R7分組寄存器R8~R14程序計(jì)數(shù)器PC(R15)寄存器類別寄存器在匯編中的名稱各模式下實(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*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狀態(tài)寄存器R16(CPSR)CPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tà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)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)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_fiqR8R7R6R5R4R3R2R1R0所有的37個(gè)寄存器,分成兩大類:31個(gè)通用32位寄存器;6個(gè)狀態(tài)寄存器。ARM狀態(tà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)R15狀態(tài)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無(wú)CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)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狀態(tài)各模式下可以訪問(wèn)的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq一般的通用寄存器R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0在匯編語(yǔ)言中寄存器R0~R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會(huì)被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0其中R0~R7為未分組的寄存器,也就是說(shuō)對(duì)于任何處理器模式,這些寄存器都對(duì)應(yīng)于相同的32位物理寄存器。一般的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R14為分組寄存器。它們所對(duì)應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器一般的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8寄存器R8~R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。一般的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器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_abtR13_svcR13一般的通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq堆棧指針寄存器R13(SP)寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒(méi)有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。寄存器類別寄存器在匯編中的名稱各模式下實(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)寄存器CPSRCPSRSPSR無(wú)SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq鏈接寄存器R14(LR)R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對(duì)應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。4.4寄存器組織4.4.1ARM狀態(tài)下的寄存器組織狀態(tài)寄存器
當(dāng)前程序狀態(tài)寄存器(CurrentProgramStatusRegister,CPSR)備份的程序狀態(tài)寄存器(SavedProgramStatusRegister,SPSR)4.4寄存器組織程序狀態(tài)寄存器CPSR格式NZCV——IM0M1M2M3M4TF—...313029282726876543210條件代碼標(biāo)志保留控制位溢出標(biāo)志oVerflow進(jìn)位或借位擴(kuò)展Carry零Zero負(fù)或小于NegativeIRQ禁止InterruptFIQ禁止Fast狀態(tài)位Thumb模式位ModeNZCVIM0M1M2M3M4TF程序狀態(tài)寄保存存器SPSR格式每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存寄存器(SPSR),它用于保存在異常發(fā)生之前的CPSR。CPSR和SPSR通過(guò)特殊指令(MRS、MSR)進(jìn)行訪問(wèn)。NZCV——IM0M1M2M3M4TF—...3130292827268765432104.4寄存器組織Lable程序A程序BR14R14(LR)寄存器與子程序調(diào)用BLLable地址A???MOVPC,LRR14(地址A)Lable……1.程序A執(zhí)行過(guò)程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;4.4寄存器組織R14寄存器注意要點(diǎn)當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。4.4寄存器組織R14寄存器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB...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,返回之前被中斷的程序;未被破壞R14_irq4.4寄存器組織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處理程序中打開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入棧),或者切換到其它處理器模式下。4.4寄存器組織4.4寄存器組織4.4.2Thumb狀態(tài)下的寄存器組織Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)子集,程序可以直接訪問(wèn)8個(gè)通用寄存器(R7~R0)、程序計(jì)數(shù)器(PC)、堆棧指針(SP)、連接寄存器(LR)和CPSR。Thumb狀態(tài)寄存器在Arm狀態(tài)寄存器上的映射R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R0
堆棧指針(R13)
連接寄存器(R14)
程序計(jì)數(shù)器(R15)
低寄存器高寄存器4.4寄存器組織Thumb狀態(tài)下的寄存器組織與ARM狀態(tài)下的寄存器組織的關(guān)系:Thumb狀態(tài)下和ARM狀態(tài)下的R0~R7是相同的;Thumb狀態(tài)下的SP對(duì)應(yīng)于ARM狀態(tài)下的R13;Thumb狀態(tài)下的LR對(duì)應(yīng)于ARM狀態(tài)下的R14;Thumb狀態(tài)下的程序計(jì)數(shù)器對(duì)應(yīng)于ARM狀態(tài)下R15;Thumb狀態(tài)下和ARM狀態(tài)下的CPSR和所有的SPSR是相同的Thumb狀態(tài)下的寄存器組織4.5ARM的異常當(dāng)正常的程序執(zhí)行流程發(fā)生暫時(shí)的停止時(shí),稱之為異常。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留處理器允許多個(gè)異常同時(shí)發(fā)生,它們將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處理異常與中斷的概念并不完全等同4.5ARM的異常4.5.1ARM體系結(jié)構(gòu)所支持的異常類型在ARM體系結(jié)構(gòu)中,異常中斷用來(lái)處理軟件中斷、未定義指令陷阱(不是真正的“意外”事件)、系統(tǒng)復(fù)位功能(在邏輯上發(fā)生在程序執(zhí)行前而不是程序執(zhí)行中)和外部事件。這些“不正?!笔录急粍潥w“異常”,因?yàn)樵谔幚砥鞯目刂茩C(jī)制中,它們都使用同樣的流程進(jìn)行異常處理。4.5ARM的異常ARM異常按引起異常事件的不同可分為以下3類:指令執(zhí)行引起的直接異常指令執(zhí)行引起的間接異常外部產(chǎn)生的與指令流無(wú)關(guān)的異常異常類型具體含義復(fù)位(RESET)當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行。未定義指令(UDEF)當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常??墒褂迷摦惓C(jī)制進(jìn)行軟件仿真。軟件中斷(SWI)該異常由執(zhí)行SWI指令產(chǎn)生,可用于用戶模式下的程序調(diào)用特權(quán)操作指令。可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用。指令預(yù)取中止(PABT)若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出中止信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。數(shù)據(jù)中止(DABT)若處理器數(shù)據(jù)訪問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。外部中斷請(qǐng)求(IRQ)當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I位為0時(shí),產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)??焖僦袛嗾?qǐng)求(FIQ)當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。ARM體系結(jié)構(gòu)所支持的異常異常向量(ExceptionVectors)地址異常進(jìn)入模式0x0000,0000復(fù)位管理模式0x0000,0004未定義指令未定義模式0x0000,0008軟件中斷管理模式0x0000,000C中止(預(yù)取指令)中止模式0x0000,0010中止(數(shù)據(jù))中止模式0x0000,0014保留保留0x0000,0018IRQIRQ0x0000,001CFIQFIQ4.5ARM的異常4.5.3對(duì)異常的響應(yīng)ARM微處理器對(duì)異常的響應(yīng)過(guò)程如下:1、將下一條指令的地址存入相應(yīng)的連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開始執(zhí)行;2、將CPSR復(fù)制到相應(yīng)的SPSR中;3、設(shè)置當(dāng)前狀態(tài)寄存器CPSR中的相應(yīng)位;4、給程序計(jì)數(shù)器(PC)強(qiáng)制賦值,使程序從相應(yīng)的異常向量地址開始執(zhí)行中斷處理程序;程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示進(jìn)入異常過(guò)程1.程序在系統(tǒng)模式下運(yùn)行用戶程序,假定當(dāng)前處理器狀態(tài)為Thumb狀態(tài)、允許IRQ中斷;2.用戶程序運(yùn)行時(shí)發(fā)生IRQ中斷,硬件完成以下動(dòng)作:LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV置位I位(禁止IRQ中斷)清零T位(進(jìn)入ARM狀態(tài))設(shè)置MOD位,切換處理器模式至IRQ模式將下一條指令的地址存入IRQ模式的LR寄存器將CPSR寄存器內(nèi)容存入IRQ模式的SPSR寄存器將跳轉(zhuǎn)地址存入PC,實(shí)現(xiàn)跳轉(zhuǎn)IRQ0?1...????BackAddrJumpAddrJumpSYS1?0...????“?”表示對(duì)該位不關(guān)心4.5ARM的異常4.5.4從異常返回ARM微處理器會(huì)執(zhí)行以下操作從異常返回:1、所有修改過(guò)的用戶寄存器必須從處理程序的保護(hù)堆棧中恢復(fù)(出棧);2、將連接寄存器LR的值減去相應(yīng)的偏移量送到PC中;3、將SPSR_mode寄存器內(nèi)容復(fù)制回CPSR中,使得CPSR從相應(yīng)的SPSR中恢復(fù),即恢復(fù)被中斷的程序工作狀態(tài);4、若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除。4.5ARM的異常4.5.4從異常返回為確保指令總是按正確的操作模式讀取,以保證存儲(chǔ)器保護(hù)方案不被繞過(guò),還有更加微妙的困難。因此,ARM提供了2種返回處理機(jī)制第一種機(jī)制:返回地址保存在R14;第二種機(jī)制:異常處理程序把返回地址拷貝到堆棧(在這種情況下,SPSR也和PC一樣必須保存),可使用一條多寄存器傳送指令來(lái)恢復(fù)用戶寄存器,并實(shí)現(xiàn)返回:在異常處理結(jié)束后,異常處理程序完成以下動(dòng)作:程序AIRQ服務(wù)程序系統(tǒng)模式IRQ模式程序寄存器組圖示退出異常過(guò)程LR_sysSPSR_irqLR_irqLRPCCPSRSPSRSYS1?0...????MODTFI...NZCV將SPSR寄存器的值復(fù)制回CPSR寄存器;將LR寄存的值減去一個(gè)常量后復(fù)制到PC寄存器,跳轉(zhuǎn)到被中斷的用戶程序。IRQ0?1...????BackAddrJumpAddrreturnSYS1?0...????SYS1?0...????BackAddr-4Jump“?”表示對(duì)該位不關(guān)心4.5ARM的異常4.5.5各類異常的具體描述1未定義指令異常(UndefinedInstruction)2軟件中斷異常(SoftwareInterrupt)3中止異常(Abort)4快速中斷請(qǐng)求異常(FastInterruptRequest,F(xiàn)IQ)5外部中斷請(qǐng)求異常(InterruptRequest,IRQ)4.5ARM的異常4.5.6異常的進(jìn)入/退出異常類型返回指令以前的狀態(tài)注意ARMR14_xThumbR14_xBLMOVPC,R14PC+4PC+21UDEFMOVSPC,R14_undPC+4PC+21SWIMOVSPC,R14_svcPC+4PC+21PABTSUBSPC,R14_abt,#4PC+4PC+41DABTSUBSPC,R14_abt,#8PC+8PC+83FIQSUBSPC,R14_fiq,#4PC+4PC+42IRQSUBSPC,R14_irq,#4PC+4PC+42RESETNA--44.5ARM的異常4.5.7異常優(yōu)先級(jí)(ExceptionPriorities)異常類型優(yōu)先級(jí)復(fù)位1(最高優(yōu)先級(jí))數(shù)據(jù)中止2FIQ3IRQ4預(yù)取中止5未定義指令6SWI7(最低優(yōu)先級(jí))優(yōu)先級(jí)降低4.6ARM微處理器的指令系統(tǒng)基礎(chǔ)4.6.1指令長(zhǎng)度及數(shù)據(jù)類ARM微處理器的指令長(zhǎng)度可以是32位(在ARM狀態(tài)下),也可以為16位(在Thumb狀態(tài)下)。ARM微處理器中支持字節(jié)(8位)、半字(16位)、字(32位)三種數(shù)據(jù)類型,其中,字需要4字節(jié)對(duì)齊(地址的低兩位為0)、半字需要2字節(jié)對(duì)齊(地址的最低位為0)。4.6ARM微處理器的指令系統(tǒng)基礎(chǔ)4.6.2ARM微處理器的指令的分類與格式指令分類簡(jiǎn)述ARM微處理器指令集是加載/存儲(chǔ)型的;ARM微處理器的指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器處理指令、Load/Store指令、協(xié)處理器指令和異常產(chǎn)生指令六大類;4.6ARM微處理器的指令系統(tǒng)基礎(chǔ)4.6.2ARM微處理器的指令的分類與格式指令格式
ARM指令使用的基本格式:<opcode>{<cond>}{S}<Rd>,<Rn>{,<operand2>}4.6ARM微處理器的指令系統(tǒng)基礎(chǔ)4.6.2ARM微處理器的指令的分類與格式指令格式使用舉例:
LDRR0,[R1] BEQDATAEVENADDSR2,R1,#1SUBNESR2,R1,#0x20指令的條件域條件碼助記符后綴標(biāo)志含義0000EQZ置位相等0001NEZ清零不相等0010CSC置位無(wú)符號(hào)數(shù)大于或等于0011CCC清零無(wú)符號(hào)數(shù)小于0100MIN置位負(fù)數(shù)0101PLN清零正數(shù)或零0110VSV置位溢出0111VCV清零未溢出1000HIC置位Z清零無(wú)符號(hào)數(shù)大于1001LSC清零Z置位無(wú)符號(hào)數(shù)小于或等于1010GEN等于V帶符號(hào)數(shù)大于或等于1011LTN不等于V帶符號(hào)數(shù)小于1100GTZ清零且(N等于V)帶符號(hào)數(shù)大于1101LEZ置位或(N不等于V)帶符號(hào)數(shù)小于或等于1110AL忽略無(wú)條件執(zhí)行4.7ARM指令的尋址方式立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說(shuō),數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù)(這樣的數(shù)稱為立即數(shù))。立即尋址指令舉例如下:SUBSR0,R0,#1;R0減1,結(jié)果放入R0,并且;影響標(biāo)志位MOV R0,#0xFF00;將立即數(shù)0xFF000裝入;R0寄存器0x55R0MOVR0,#0xFF00程序存儲(chǔ)尋址方式分類——立即尋址MOVR0,#0xFF000xFF00從代碼中獲得數(shù)據(jù)4.7ARM指令的尋址方式操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號(hào),指令執(zhí)行時(shí)直接取出寄存器值來(lái)操作。寄存器尋址指令舉例如下:MOVR1,R2 ;將R2的值存入R1SUBR0,R1,R2;將R1的值減去R2;的值,結(jié)果保存到R00xAA0x55R2R1尋址方式分類——寄存器尋址MOVR1,R20xAA4.7ARM指令的尋址方式寄存器間接尋址指令中的地址碼給出的是一個(gè)通用寄存器的編號(hào),所需的操作數(shù)保存在寄存器指定地址的存儲(chǔ)單元中,即寄存器為操作數(shù)的地址指針。寄存器間接尋址指令舉例如下:LDR R1,[R2] ;將R2指向的存儲(chǔ)單元的數(shù)據(jù)讀出 ;保存在R1中SWP R1,R1,[R2];將寄存器R1的值和R2指定的存儲(chǔ) ;單元的內(nèi)容交換0x55R0R20x400000000xAA0x40000000尋址方式分類——寄存器間接尋址LDRR0,[R2]0xAA4.7ARM指令的尋址方式基址尋址就是將基址寄存器的內(nèi)容與指令中給出的偏移量(<4K)相加/減,形成操作數(shù)的有效地址。基址尋址用于訪問(wèn)基址附近的存儲(chǔ)單元,常用于查表、數(shù)組操作、功能部件寄存器訪問(wèn)等。寄存器間接尋址是偏移量為0的基址加偏移尋址?;穼ぶ分噶钆e例如下(前索引尋址):LDR R2,[R3,#0x0C];讀取R3+0x0C地址上的存儲(chǔ)單;元的內(nèi)容,放入R2STR R1,[R0,#-4]!;先R0=R0-4,然后把R0的值寄;存到保存到R1指定的存儲(chǔ)單元尋址方式分類——基址尋址0x55R2R30x400000000xAA0x4000000CLDRR2,[R3,#0x0C]0xAA將R3+0x0C作為地址裝載數(shù)據(jù)4.7ARM指令的尋址方式變址尋址方式可分為:前變址模式
LDRR0,[R1,#4];R0←[R1+4]自動(dòng)變址模式
LDRR0,[R1,#4]??;R0←[R1+4]、R1←R1+4
后變址模式LDRR0,[R1],#4;R0←[R1]、R1←R1+4偏移地址LDRR0,[R1,R2];R0←[R1+R2]LDRR0,[R1,R2,LSL#2];R0←[R1+R2*4]4.7ARM指令的尋址方式多寄存器尋址一次可傳送幾個(gè)寄存器值,允許一條指令傳送16個(gè)寄存器的任何子集或所有寄存器。多寄存器尋址指令舉例如下:LDMIAR1!,{R2-R7,R12};將R1指向的單元中的;數(shù)據(jù)讀出到R2~R7、R12中(R1自動(dòng)加4)STMIAR0!,{R2-R7,R12};將寄存器R2~R7、;R12的值保存到R0指向的存儲(chǔ);單元中 ;(R0自動(dòng)加4)0x40000000R1R20x??0x010x400000000x??R3R40x??R60x??0x020x030x040x400000040x400000080x4000000C存儲(chǔ)器尋址方式分類——多寄存器尋址LDMIAR1!,{R2-R4,R6}0x010x020x030x040x400000104.7ARM指令的尋址方式堆棧是一個(gè)按特定順序進(jìn)行存取的存儲(chǔ)區(qū),操作順序?yàn)椤昂筮M(jìn)先出”。堆棧尋址是隱含的,它使用一個(gè)專門的寄存器(堆棧指針)指向一塊存儲(chǔ)區(qū)域(堆棧),指針?biāo)赶虻拇鎯?chǔ)單元即是堆棧的棧頂。存儲(chǔ)器堆??煞譃閮煞N:向上生長(zhǎng):向高地址方向生長(zhǎng),稱為遞增堆棧向下生長(zhǎng):向低地址方向生長(zhǎng),稱為遞減堆棧尋址方式分類——堆棧尋址4.7ARM指令的尋址方式尋址方式分類——堆棧尋址棧底棧頂棧區(qū)SP堆棧存儲(chǔ)區(qū)棧頂棧底棧區(qū)SP向下增長(zhǎng)向上增長(zhǎng)0x123456780x12345678堆棧壓棧堆棧壓棧4.7ARM指令的尋址方式棧頂SP棧頂SP棧底空堆棧棧底滿堆棧堆棧指針指向最后壓入的堆棧的有效數(shù)據(jù)項(xiàng),稱為滿堆棧;堆棧指針指向下一個(gè)待壓入數(shù)據(jù)的空位置,稱為空堆棧。尋址方式分類——堆棧尋址0x123456780x12345678棧頂SP0x12345678棧頂SP壓棧壓棧4.7ARM指令的尋址方式所以可以組合出四種類型的堆棧方式:滿遞增:堆棧向上增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址。指令如LDMFA、STMFA等;空遞增:堆棧向上增長(zhǎng),堆棧指針指向堆棧上的第一個(gè)空位置。指令如LDMEA、STMEA等;滿遞減:堆棧向下增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。指令如LDMFD、STMFD等;空遞減:堆棧向下增長(zhǎng),堆棧指針向堆棧下的第一個(gè)空位置。指令如LDMED、STMED等。尋址方式分類——堆棧尋址4.7ARM指令的尋址方式在ARM指令中,堆棧尋址也是通過(guò)Load/Store指令來(lái)實(shí)現(xiàn)的,例如:STMFDSP!{R1-R7,LR};將R1~R7,LR入棧LDMFDSP!{R1-R7,LR};數(shù)據(jù)出棧,放入R1~R7,LR寄存器在Thumb指令中,堆棧尋址通過(guò)PUSH/POP指令來(lái)實(shí)現(xiàn),例如:PUSH{R1-R7,LR};將R1~R7,LR入棧POP{R1-R7,PC};數(shù)據(jù)出棧,放入R1~R7,PC寄存器尋址方式分類——堆棧尋址4.7ARM指令的尋址方式相對(duì)尋址是基址尋址的一種變通。由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對(duì)尋址指令舉例如下: BL SUBR1 ;調(diào)用到SUBR1子程序 ...SUBR1 ...尋址方式分類——相對(duì)尋址4.8ARM指令集;文件名:TEST1.S
;功能:實(shí)現(xiàn)兩個(gè)寄存器相加;說(shuō)明:使用ARMulate軟件仿真調(diào)試 AREA Example1,CODE,READONLY ;聲明代碼段Example1
ENTRY ;標(biāo)識(shí)程序入口 CODE32 ;聲明32位ARM指令START MOV R0,#0 ;設(shè)置參數(shù) MOV R1,#10LOOP BL ADD_SUB ;調(diào)用子程序ADD_SUB
B LOOP ;跳轉(zhuǎn)到LOOPADD_SUB
ADDS R0,R0,R1 ;R0=R0+R1 MOV PC,LR ;子程序返回 END ;文件結(jié)束
使用“;”進(jìn)行注釋標(biāo)號(hào)頂格寫實(shí)際代碼段聲明文件結(jié)束簡(jiǎn)單的ARM程序4.8ARM指令集ARM指令集總體分為六大類:數(shù)據(jù)處理指令;程序狀態(tài)寄存器訪問(wèn)指令;Load/Store指令;跳轉(zhuǎn)指令(轉(zhuǎn)移指令);異常中斷指令;協(xié)處理器指令。4.8ARM指令集4.8.1數(shù)據(jù)處理指令數(shù)據(jù)傳送指令用于在寄存器和存儲(chǔ)器之間進(jìn)行數(shù)據(jù)的雙向傳輸。算術(shù)邏輯運(yùn)算指令完成常用的算術(shù)與邏輯的運(yùn)算,該類指令不但將運(yùn)算結(jié)果保存在目的寄存器中,同時(shí)更新CPSR中的相應(yīng)條件標(biāo)志位。比較指令不保存運(yùn)算結(jié)果,只更新CPSR中相應(yīng)的條件標(biāo)志位。4.8ARM指令集數(shù)據(jù)處理指令包括:SUB:減法指令SBC:帶借位減法指令RSB:逆向減法指令RSC:帶借位逆向減法指令A(yù)ND:邏輯與指令ORR:邏輯或指令EOR:邏輯異或指令BIC:位清除指令MOV:數(shù)據(jù)傳送指令MVN:數(shù)據(jù)取反傳送指令CMP:比較指令CMN:反值比較指令TST:位測(cè)試指令TEQ:相等測(cè)試指令A(yù)DD:加法指令A(yù)DC:帶進(jìn)位加法指令4.8ARM指令集4.8.2乘法指令與乘加指令A(yù)RM微處理器支持的乘法指令與乘加指令共有6條,可分為運(yùn)算結(jié)果為32位和運(yùn)算結(jié)果為64位兩類,與前面的數(shù)據(jù)處理指令不同,指令中的所有操作數(shù)、目的寄存器必須為通用寄存器,不能對(duì)操作數(shù)使用立即數(shù)或被移位的寄存器,同時(shí),目的寄存器和操作數(shù)1必須是不同的寄存器。4.8ARM指令集乘法指令與乘加指令共有以下6條:MUL:32位乘法指令;MLA:32位乘加指令;SMULL:64位有符號(hào)數(shù)乘法指令;SMLAL:
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 半導(dǎo)體封裝設(shè)計(jì)行業(yè)營(yíng)銷策略方案
- 商品和服務(wù)的質(zhì)量控制行業(yè)相關(guān)項(xiàng)目經(jīng)營(yíng)管理報(bào)告
- 性別平等心理咨詢熱線服務(wù)行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 助產(chǎn)士服務(wù)行業(yè)營(yíng)銷策略方案
- 寄宿學(xué)校教育服務(wù)行業(yè)營(yíng)銷策略方案
- 氣量計(jì)計(jì)量?jī)x器產(chǎn)品供應(yīng)鏈分析
- 聲音傳送裝置用話筒挑桿產(chǎn)品供應(yīng)鏈分析
- 科學(xué)用棱鏡細(xì)分市場(chǎng)深度研究報(bào)告
- 蛋糕鏟細(xì)分市場(chǎng)深度研究報(bào)告
- 托管網(wǎng)站行業(yè)營(yíng)銷策略方案
- 第一單元 史前時(shí)期:原始社會(huì)與中華文明的起源(復(fù)習(xí)課件)
- 廣東省深圳市2023-2024學(xué)年高一上學(xué)期語(yǔ)文期中試卷(含答案)
- 學(xué)校采購(gòu)課程合同范本
- 2024年公安基礎(chǔ)知識(shí)考試題庫(kù)及答案
- 第21課《小圣施威降大圣》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì) 統(tǒng)編版語(yǔ)文七年級(jí)上冊(cè)-1
- 酒廠合作戰(zhàn)略協(xié)議書范本
- 2024年學(xué)憲法、講憲法題庫(kù)及答案
- 2023年上半年教師資格證《初中音樂(lè)》真題及答案
- (初級(jí))航空油料飛機(jī)加油員(五級(jí))理論考試題庫(kù)(含答案)
- 新蘇教版3三年級(jí)數(shù)學(xué)上冊(cè)(表格式)教案【全冊(cè)】
- 2024年上海市松江區(qū)高考語(yǔ)文一模試卷
評(píng)論
0/150
提交評(píng)論