嵌入式系統(tǒng)(第3章 ARM尋址方式與指令系統(tǒng) )_第1頁
嵌入式系統(tǒng)(第3章 ARM尋址方式與指令系統(tǒng) )_第2頁
嵌入式系統(tǒng)(第3章 ARM尋址方式與指令系統(tǒng) )_第3頁
嵌入式系統(tǒng)(第3章 ARM尋址方式與指令系統(tǒng) )_第4頁
嵌入式系統(tǒng)(第3章 ARM尋址方式與指令系統(tǒng) )_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 第第3章章 ARM尋址方式與指令系統(tǒng)尋址方式與指令系統(tǒng) ARMARM編程模型編程模型 ARMARM指令格式和尋址方式指令格式和尋址方式 ARMARM指令集指令集 ThumbThumb指令集指令集 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 機(jī)器指令、偽指令和宏指令機(jī)器指令、偽指令和宏指令 機(jī)器指令:機(jī)器指令:能被處理器直接執(zhí)行,而偽指令宏和能被處理器直接執(zhí)行,而偽指令宏和宏指令不能。宏指令不能。機(jī)器指令包括機(jī)器指令包括ARM指令集和指令集和Thumb指令集指令集 ; 偽指令:偽指令:在源程序匯編期間,由匯編編譯器處理。

2、在源程序匯編期間,由匯編編譯器處理。其作用是為匯編程序完成準(zhǔn)備工作;其作用是為匯編程序完成準(zhǔn)備工作; 宏指令:宏指令:在程序中用于調(diào)用宏,宏是一段獨(dú)立的在程序中用于調(diào)用宏,宏是一段獨(dú)立的程序代碼;在程序匯編時(shí),對宏調(diào)用進(jìn)行展開,程序代碼;在程序匯編時(shí),對宏調(diào)用進(jìn)行展開,用宏體代替宏指令。用宏體代替宏指令。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) ARM處理器模式處理器模式 ARM微處理器支持微處理器支持7種工作模式:種工作模式:用戶模式、系統(tǒng)用戶模式、系統(tǒng)模式、快速中斷模式、外部中斷模式、管理模式、模式、快速中斷模式、外部中斷模式、管理模式、中止模式、未定義指令模式。中止模式

3、、未定義指令模式。 除除用戶模式用戶模式之外的其余之外的其余6種稱為非用戶模式,或種稱為非用戶模式,或特特權(quán)模式權(quán)模式。 在特權(quán)模式中,除在特權(quán)模式中,除系統(tǒng)模式系統(tǒng)模式之外的其余之外的其余5種稱為種稱為異異常模式常模式。 處理器的各種工作模式由當(dāng)前程序狀態(tài)寄存器處理器的各種工作模式由當(dāng)前程序狀態(tài)寄存器CPSR的低的低5位位M4:0決定。決定。 工作模式切換:工作模式切換:(1)發(fā)生異常,處理器自動(dòng)改變)發(fā)生異常,處理器自動(dòng)改變CPSR中中M4:0的值,的值,進(jìn)入相應(yīng)的工作模式;進(jìn)入相應(yīng)的工作模式;(2)處理器處于特權(quán)模式時(shí),用指令向)處理器處于特權(quán)模式時(shí),用指令向CPSR的的M4:0字段寫入

4、特定的值,進(jìn)入相應(yīng)的工作模式。字段寫入特定的值,進(jìn)入相應(yīng)的工作模式。 用戶模式時(shí),不能改變工作模式,除非發(fā)生異常。用戶模式時(shí),不能改變工作模式,除非發(fā)生異常。 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) ARM處理器處理器7種工作模式種工作模式處理器模式處理器模式說明說明備注備注M4:0用戶用戶 (usr)正常程序執(zhí)行模式正常程序執(zhí)行模式不能直接切換到其它不能直接切換到其它模式模式10000系統(tǒng)系統(tǒng) (sys)運(yùn)行操作系統(tǒng)的特運(yùn)行操作系統(tǒng)的特權(quán)任務(wù)權(quán)任務(wù)與用戶模式類似,但與用戶模式類似,但具有可以直接切換到具有可以直接切換到其它模式等特權(quán)其它模式等特權(quán)10001快速中斷快速中斷

5、 (fiq)支持高速數(shù)據(jù)傳輸支持高速數(shù)據(jù)傳輸及通道處理及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入異常響應(yīng)時(shí)進(jìn)入此模式此模式10010外部中斷外部中斷 (irq)用于通用中斷處理用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入異常響應(yīng)時(shí)進(jìn)入此模式此模式10011管理管理 (svc)操作系統(tǒng)保護(hù)模式操作系統(tǒng)保護(hù)模式系統(tǒng)復(fù)位和軟件中斷系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式響應(yīng)時(shí)進(jìn)入此模式10111中止中止 (abt)用于支持虛擬內(nèi)存用于支持虛擬內(nèi)存和和/或存儲器保護(hù)或存儲器保護(hù)在在ARM7TDMI沒有沒有大用處大用處11011未定義未定義 (und)支持硬件協(xié)處理器支持硬件協(xié)處理器的軟件仿真的軟件仿真未定義指令異常響應(yīng)未定義指

6、令異常響應(yīng)時(shí)進(jìn)入此模式時(shí)進(jìn)入此模式11111計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 特權(quán)模式特權(quán)模式處理器模式處理器模式說明說明備注備注 用戶用戶 (usr)正常程序工作模式正常程序工作模式不能直接切換到其它模式不能直接切換到其它模式 系統(tǒng)系統(tǒng) (sys)用于支持操作系統(tǒng)的特用于支持操作系統(tǒng)的特權(quán)任務(wù)等權(quán)任務(wù)等與用戶模式類似,但具有可以與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)直接切換到其它模式等特權(quán) 快中斷快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通支持高速數(shù)據(jù)傳輸及通道處理道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式異常響應(yīng)時(shí)進(jìn)入此模式 中斷中斷 (irq)用于通用中斷處理用于通

7、用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式異常響應(yīng)時(shí)進(jìn)入此模式 管理管理 (svc)操作系統(tǒng)保護(hù)代碼操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式入此模式 中止中止 (abt)用于支持虛擬內(nèi)存和用于支持虛擬內(nèi)存和/或或存儲器保護(hù)存儲器保護(hù)在在ARM7TDMI沒有大用處沒有大用處 未定義未定義 (und)支持硬件協(xié)處理器的軟支持硬件協(xié)處理器的軟件仿真件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此未定義指令異常響應(yīng)時(shí)進(jìn)入此模式模式 除用戶模式外,其它模式均為除用戶模式外,其它模式均為特權(quán)模式特權(quán)模式。ARMARM內(nèi)部寄存器和一些內(nèi)部寄存器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許(或片內(nèi)外設(shè)在硬件

8、設(shè)計(jì)上只允許(或者可選為只允許)特權(quán)模式下訪問。者可選為只允許)特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切理器模式,而用戶模式不能直接切換到別的模式。換到別的模式。 未定義未定義 (und) 中止中止 (abt) 管理管理 (svc) 外部中斷外部中斷 (irq) 快速中斷快速中斷 (fiq) 系統(tǒng)系統(tǒng) (sys)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 異常模式異常模式處理器模式處理器模式說明說明備注備注 用戶用戶 (usr)正常程序工作模式正常程序工作模式不能直接切換到其它模式不能直接切換到其它模式 系統(tǒng)系統(tǒng)

9、 (sys)用于支持操作系統(tǒng)的特用于支持操作系統(tǒng)的特權(quán)任務(wù)等權(quán)任務(wù)等與用戶模式類似,但具有可以與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)直接切換到其它模式等特權(quán) 快中斷快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通支持高速數(shù)據(jù)傳輸及通道處理道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式異常響應(yīng)時(shí)進(jìn)入此模式 中斷中斷 (irq)用于通用中斷處理用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式異常響應(yīng)時(shí)進(jìn)入此模式 管理管理 (svc)操作系統(tǒng)保護(hù)代碼操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式入此模式 中止中止 (abt)用于支持虛擬內(nèi)存和用于支持虛擬內(nèi)存和/或或存儲器保護(hù)存儲器保護(hù)在

10、在ARM7TDMI沒有大用處沒有大用處 未定義未定義 (und)支持硬件協(xié)處理器的軟支持硬件協(xié)處理器的軟件仿真件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此未定義指令異常響應(yīng)時(shí)進(jìn)入此模式模式 未定義未定義 (und) 中止中止 (abt) 管理管理 (svc) 外部中斷外部中斷 (irq) 快速中斷快速中斷 (fiq) 這五種模式稱為這五種模式稱為異常模式異常模式。它。它們除了可以通過程序切換進(jìn)入外,們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立模式。每種異常模式都有一些獨(dú)立

11、的寄存器,以避免異常退出時(shí)用戶的寄存器,以避免異常退出時(shí)用戶模式的狀態(tài)不可靠。模式的狀態(tài)不可靠。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 用戶和系統(tǒng)模式用戶和系統(tǒng)模式處理器模式處理器模式說明說明備注備注 用戶用戶 (usr)正常程序工作模式正常程序工作模式不能直接切換到其它模式不能直接切換到其它模式 系統(tǒng)系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)用于支持操作系統(tǒng)的特權(quán)任務(wù)等任務(wù)等與用戶模式類似,但具有可以直與用戶模式類似,但具有可以直接切換到其它模式等特權(quán)接切換到其它模式等特權(quán) 快速中斷快速中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道支持高速數(shù)據(jù)傳輸及通道處理處理FIQ異常響應(yīng)時(shí)進(jìn)入此

12、模式異常響應(yīng)時(shí)進(jìn)入此模式 外部中斷外部中斷 (irq)用于通用中斷處理用于通用中斷處理IRQ異常響應(yīng)時(shí)進(jìn)入此模式異常響應(yīng)時(shí)進(jìn)入此模式 管理管理 (svc)操作系統(tǒng)保護(hù)代碼操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式此模式 中止中止 (abt)用于支持虛擬內(nèi)存和用于支持虛擬內(nèi)存和/或存或存儲器保護(hù)儲器保護(hù)在在ARM7TDMI沒有大用處沒有大用處 未定義未定義 (und)支持硬件協(xié)處理器的軟件支持硬件協(xié)處理器的軟件仿真仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模未定義指令異常響應(yīng)時(shí)進(jìn)入此模式式 這兩種模式都不能由異常進(jìn)入,這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的寄存

13、器組。而且它們使用完全相同的寄存器組。 系統(tǒng)模式是特權(quán)模式,不受用戶系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的寄存器就比較方便,而問用戶模式的寄存器就比較方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。這個(gè)模式訪問一些受控的資源。 系統(tǒng)系統(tǒng) (sys) 用戶用戶 (usr)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 處理器的工作狀態(tài)處理器的工作狀態(tài) 從編程的角度講,從編程的角度講,ARM處理器工作在兩種狀態(tài):處理器工作在兩種狀態(tài):ARM狀態(tài)或狀態(tài)或Thumb狀態(tài)。狀

14、態(tài)。(1)ARM狀態(tài):狀態(tài):處理器執(zhí)行處理器執(zhí)行32位的位的ARM指令集時(shí),指令集時(shí),工作在這種狀態(tài)。工作在這種狀態(tài)。(2)Thumb狀態(tài):狀態(tài):處理器執(zhí)行處理器執(zhí)行16位的位的thumb指令集指令集時(shí),工作在這種狀態(tài)。時(shí),工作在這種狀態(tài)。 狀態(tài)切換:狀態(tài)切換:通過跳轉(zhuǎn)指令實(shí)現(xiàn)。通過跳轉(zhuǎn)指令實(shí)現(xiàn)。 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) ARM的寄存器組織的寄存器組織37個(gè)寄存器:個(gè)寄存器:31個(gè)個(gè)通用寄存器,包括程序計(jì)數(shù)器通用寄存器,包括程序計(jì)數(shù)器PC; 6個(gè)個(gè)狀態(tài)寄存器。狀態(tài)寄存器。寄存器均為寄存器均為32位位,分成,分成7組組,各工作模式擁有自己的寄存器,各工作模式擁

15、有自己的寄存器組,只能訪問自己的寄存器組。組,只能訪問自己的寄存器組。有些寄存器是重疊的,有些是工作模式特有的。有些寄存器是重疊的,有些是工作模式特有的。在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄在不同的工作模式和處理器狀態(tài)下,程序員可以訪問的寄存器不盡相同。存器不盡相同。 不分組不分組8個(gè)個(gè)分組分組22個(gè)個(gè)PC 1個(gè)個(gè)2組組10個(gè)個(gè)6組組12個(gè)個(gè)狀態(tài)狀態(tài)6個(gè)個(gè)通用通用31個(gè)個(gè)CPSRCPSRCPSRCPSRCPSRSPSRSPSRSPSRSPSRSPSRSPLRPC計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) ARM狀態(tài)各模式下的寄存器狀態(tài)各模式下的寄存器寄存器寄存器類

16、別類別寄存器在匯編寄存器在匯編中的名稱中的名稱各模式下實(shí)際訪問的寄存器各模式下實(shí)際訪問的寄存器用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義外部中斷外部中斷快速中斷快速中斷通用寄存通用寄存器和程序器和程序計(jì)數(shù)器計(jì)數(shù)器R1(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

17、_irq *R13_fiq *R14(LR)R14R14_svc *R14_abt *R14_und *R14_irq *R14_fiq *R15(PC)R15狀態(tài)狀態(tài)寄存器寄存器R16(CPSR)CPSRSPSR無無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) ARM寄存器分類寄存器分類寄存器寄存器類別類別寄存器在匯編寄存器在匯編中的名稱中的名稱各模式下實(shí)際訪問的寄存器各模式下實(shí)際訪問的寄存器用戶用戶系統(tǒng)系統(tǒng)管理管理中止中止未定義未定義外部中斷外部中斷快速中斷快速中斷通用寄通用寄存器和存器和程序計(jì)程

18、序計(jì)數(shù)器數(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)寄狀態(tài)寄存器存器CPSRCPSRSPSR無無SPSR_abtSPSR_abt S

19、PSR_undSPSR_irqSPSR_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_svcCPSRR15R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R03737個(gè)寄存器分成兩大類:個(gè)寄存器分成兩大類:3131個(gè)通用個(gè)通用3232位寄存器;位寄存器;6 6個(gè)狀態(tài)寄存器。個(gè)狀態(tài)寄存器。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林

20、大學(xué) ARM狀態(tài)各模式下可以訪問的寄存器狀態(tài)各模式下可以訪問的寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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_s

21、vcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)系統(tǒng)SPSR_svcCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6

22、R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷快中斷計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 一般的通用寄存器一般的通用寄存器 寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器

23、用戶系統(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無SPS

24、R_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編語言中寄存器R0R13為保存數(shù)據(jù)或地址值的通用寄存器。它們是完全通用的寄存器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用寄存器的指令。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) R0R7通用寄存器通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通

25、用寄存器和程序計(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無SPSR_svcSPSR_abtSPSR

26、_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的寄存器,也就是說對于任何處理器模式,這些寄存器都對應(yīng)于相同的32位物理寄存器。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) R8R14通用寄存器通用寄存器寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)

27、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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14_

28、fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R14為分組寄存器。它們所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用寄存器的指令都允許使用分組寄存器計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) R8R12的兩個(gè)分組的兩個(gè)分組寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2

29、(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_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR

30、12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 寄存器R8R12有兩個(gè)分組的物理寄存器。一個(gè)用于除FIQ模式之外的所有寄存器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) R13、R14的的6個(gè)分組個(gè)分組寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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,

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

32、14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 堆棧指針寄存器堆棧指針寄存器R13(SP)寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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

33、)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_fiq 寄存器R13常作為堆棧指針(SP)。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 鏈接寄存器鏈接寄存器R14(LR)

34、寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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(

35、PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_svcSPSR_abtSPSR_undSPSR_irqSPSR_fiq R14為鏈接寄存器(LR),在結(jié)構(gòu)上有兩個(gè)特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對應(yīng)的異常模式版本設(shè)置為異常返回地址(有些異常有一個(gè)小的固定偏移量)。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) R14(LR)的作用)的作用作用:作用:保存返回地址保存返回地址例如:例如:1.程序程序A執(zhí)行過程中調(diào)用程序執(zhí)行過程中調(diào)用程序B;2.程序跳轉(zhuǎn)至標(biāo)號程序跳轉(zhuǎn)至標(biāo)號Lable,執(zhí)行程序,執(zhí)行程序B。同時(shí)硬件將。

36、同時(shí)硬件將“BL Lable”指令的下一條指令所在地址存入指令的下一條指令所在地址存入R14(LR););3.程序程序B執(zhí)行最后,將執(zhí)行最后,將R14寄存器的內(nèi)容放入寄存器的內(nèi)容放入PC,返回程序,返回程序A;Lable程序A程序BR14BL Lable地址A?MOV PC,LRR14(地址A)Lable?計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 程序計(jì)數(shù)器程序計(jì)數(shù)器R15(PC)寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2

37、)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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器寄存器R15R15為為程序計(jì)數(shù)器程序計(jì)數(shù)器(PCPC),它指向

38、正在?。?,它指向正在取指的地址。可以認(rèn)為它是一個(gè)通用寄存器,但是對指的地址??梢哉J(rèn)為它是一個(gè)通用寄存器,但是對于它的使用有許多與指令相關(guān)的限制或特殊情況。于它的使用有許多與指令相關(guān)的限制或特殊情況。 正常操作時(shí),從正常操作時(shí),從R15R15讀取的值是處理器正在取指讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上的地址,即當(dāng)前正在執(zhí)行指令的地址加上8 8個(gè)字節(jié)個(gè)字節(jié)(兩條(兩條ARMARM指令的長度)。由于指令的長度)。由于ARMARM指令總是以字為指令總是以字為單位,所以單位,所以R15R15寄存器的最低兩位總是為寄存器的最低兩位總是為0 0。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)

39、院Z吉林大學(xué)吉林大學(xué) 程序狀態(tài)寄存器程序狀態(tài)寄存器CPSR寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(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

40、_abtR14_undR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 寄存器CPSR為當(dāng)前程序狀態(tài)寄存器,在異常模式中,另外一個(gè)寄存器“保存程序狀態(tài)寄存器(SPSR)”可以被訪問。 每種異常都有自己的SPSR,在進(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) Thumb寄存器在寄存器在ARM寄存器上的映射寄存器上的映射 R1 R2 R3 R4 R5 T humb R6 R7 ( C PSR ) ( S

41、PSR ) R1 R2 R3 R4 R5 A R M R6 R7 R8 ( C PSR ) ( SPSR ) R9 R10 R11 R12 R0 R0 狀態(tài) 狀態(tài) 堆棧指針(SP) 連接寄存器(LR) 程序計(jì)數(shù)器(PC) 當(dāng)前程序狀態(tài)寄存器 被保存程序狀態(tài)寄存器 堆棧指針(R13) 連接寄存器(R14) 程序計(jì)數(shù)器(R15) 當(dāng)前程序狀態(tài)寄存器 被保存程序狀態(tài)寄存器 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針 (R13) 連接寄存器 (R14) 程序計(jì)數(shù)器 (R15) 低寄存器高寄存器在在Thumb中,高寄中,高寄存器不是存器不是標(biāo)準(zhǔn)寄存標(biāo)準(zhǔn)寄

42、存器。匯編器。匯編語言程序語言程序員對它們員對它們的訪問受的訪問受到限制。到限制??梢允褂每梢允褂肕OV、CMP和和ADD指令指令對高寄存對高寄存器操作。器操作。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 狀態(tài)寄存器狀態(tài)寄存器 CPSR:當(dāng)前程序狀態(tài)寄存器,可以在任何工作模式下被訪問。當(dāng)前程序狀態(tài)寄存器,可以在任何工作模式下被訪問。SPSR:程序狀態(tài)保存寄存器,只有在異常模式下,才能被訪問;各異常模式擁程序狀態(tài)保存寄存器,只有在異常模式下,才能被訪問;各異常模式擁有自己的有自己的SPSR。發(fā)生異常時(shí),。發(fā)生異常時(shí),SPSR保存保存CPSR的值,格式同的值,格式同CPSR。狀態(tài)標(biāo)

43、志:狀態(tài)標(biāo)志:5個(gè),個(gè),N符號位,符號位,Z零標(biāo)志,零標(biāo)志,C進(jìn)位,進(jìn)位,V溢出位,溢出位,Q DSP運(yùn)算溢出位。運(yùn)算溢出位。控制標(biāo)志:控制標(biāo)志:4個(gè),個(gè),I中斷允許,中斷允許,F(xiàn)快速中斷允許,快速中斷允許,T狀態(tài)選擇,狀態(tài)選擇,M4:0 處理器工作處理器工作模式模式 NNZ ZC CV V I IM0M0M1M1M2M2M3M3M4M4T TF F. . . . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 031 30 29 28 27 26 8 7 6 5 4 3 2 1 0條件代碼標(biāo)志條件代碼標(biāo)志保留保留控制位控制位溢出標(biāo)志溢出標(biāo)志 oVerflow進(jìn)位或借位擴(kuò)

44、展進(jìn)位或借位擴(kuò)展 Carry零零 Zero負(fù)或小于負(fù)或小于 NegativeI IRQ禁止禁止 InterruptFIQ禁止禁止 Fast狀態(tài)位狀態(tài)位 Thumb模式位模式位 ModeNNZ ZC CV VI IM0M0M1M1M2M2M3M3M4M4T TF FQQ計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 條件標(biāo)志位條件標(biāo)志位 標(biāo)志位標(biāo)志位含含 義義N當(dāng)兩個(gè)補(bǔ)碼表示的帶符號數(shù)運(yùn)算時(shí),當(dāng)兩個(gè)補(bǔ)碼表示的帶符號數(shù)運(yùn)算時(shí),N=1 表示運(yùn)算的結(jié)果為負(fù)數(shù);表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0 表示運(yùn)算的結(jié)果為正數(shù)或零;表示運(yùn)算的結(jié)果為正數(shù)或零;ZZ=1 表示運(yùn)算的結(jié)果為零;表示運(yùn)算的結(jié)果為零;

45、Z=0表示運(yùn)算的結(jié)果不為零;表示運(yùn)算的結(jié)果不為零;C有有3種情況會改變種情況會改變C的值:的值:加法運(yùn)算(包括比較指令加法運(yùn)算(包括比較指令CMN):當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無符號數(shù)):當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無符號數(shù)上溢出),上溢出),C=1,否則,否則C=0。減法運(yùn)算(包括比較指令減法運(yùn)算(包括比較指令CMP):當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無符號數(shù)下溢):當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無符號數(shù)下溢出),出),C=0,否則,否則C=1。對于包含移位操作的非加對于包含移位操作的非加/減運(yùn)算指令,減運(yùn)算指令,C為移出值的最后一位。為移出值的最后一位。V對于加對于加/減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制的補(bǔ)碼表

46、示的帶減法運(yùn)算指令,當(dāng)操作數(shù)和運(yùn)算結(jié)果為二進(jìn)制的補(bǔ)碼表示的帶符號數(shù)時(shí),符號數(shù)時(shí),V=1表示符號位溢出。表示符號位溢出。Q在在ARM v5及以上版本的及以上版本的E系列處理器中,用系列處理器中,用Q標(biāo)志位指示增強(qiáng)的標(biāo)志位指示增強(qiáng)的DSP運(yùn)運(yùn)算指令是否發(fā)生了溢出。算指令是否發(fā)生了溢出。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 控制位控制位 標(biāo)志位標(biāo)志位含義含義II1,表示禁止,表示禁止IRQ中斷;否則,表示允許中斷;否則,表示允許IRQ中斷中斷FF1,表示禁止,表示禁止FIQ中斷;否則,表示允許中斷;否則,表示允許FIQ中斷中斷T對于對于ARM v4以上版本的以上版本的T系列處理

47、器,系列處理器,T0,表示執(zhí)行,表示執(zhí)行ARM指令,否則,表示執(zhí)行指令,否則,表示執(zhí)行Thumb指令;指令;對于對于ARM v5以上版本的非以上版本的非T系列處理器,系列處理器,T0,表示指令,表示指令A(yù)RM指令,否則,表示強(qiáng)制下一條執(zhí)行的指指令,否則,表示強(qiáng)制下一條執(zhí)行的指令產(chǎn)生未定義指令中斷。令產(chǎn)生未定義指令中斷。M4:0M4:0處理器工作模式處理器工作模式可訪問的寄存器可訪問的寄存器10000用戶模式用戶模式PC,R0R14,CPSR10001快速中斷模式快速中斷模式PC,R0R7,R8_fiqR14_fiq,CPSR,SPSR_fiq10010外部中斷模式外部中斷模式PC,R0R12,

48、R13_irqR14_irq,CPSR,SPSR_irq10011管理模式管理模式PC,R0R12,R13_svcR14_svc,CPSR,SPSR_svc10111中止模式中止模式PC,R0R12,R13_abtR14_abt,CPSR,SPSR_abt11011未定義指令模式未定義指令模式PC,R0R12,R13_undR14_und,CPSR,SPSR_und11111系統(tǒng)模式系統(tǒng)模式PC,R0R14,CPSR計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 異常中斷異常中斷 異常中斷:異常中斷:處理器由于外部或內(nèi)部的原因,停止處理器由于外部或內(nèi)部的原因,停止執(zhí)行當(dāng)前任務(wù),轉(zhuǎn)而

49、處理特定的事件,處理完后執(zhí)行當(dāng)前任務(wù),轉(zhuǎn)而處理特定的事件,處理完后返回原程序,繼續(xù)執(zhí)行。返回原程序,繼續(xù)執(zhí)行。 當(dāng)異常發(fā)生時(shí),處理器首先自動(dòng)保存當(dāng)前狀態(tài),當(dāng)異常發(fā)生時(shí),處理器首先自動(dòng)保存當(dāng)前狀態(tài),即返回地址存入寄存器即返回地址存入寄存器R14,當(dāng)前寄存器,當(dāng)前寄存器CPSR存存入入SPSR中,接著進(jìn)入相應(yīng)的工作模式,并執(zhí)行特中,接著進(jìn)入相應(yīng)的工作模式,并執(zhí)行特定地址的指令。定地址的指令。 ARM共有共有7種類型的異常,不同類型的異常將導(dǎo)種類型的異常,不同類型的異常將導(dǎo)致處理器進(jìn)入不同的工作模式,并執(zhí)行不同特定致處理器進(jìn)入不同的工作模式,并執(zhí)行不同特定地址的指令。地址的指令。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院

50、計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 7種類型異常中斷種類型異常中斷 復(fù)位:復(fù)位:復(fù)位異常時(shí),處理器立即停止當(dāng)前程序,進(jìn)復(fù)位異常時(shí),處理器立即停止當(dāng)前程序,進(jìn)入禁止中斷的管理模式,并從地址入禁止中斷的管理模式,并從地址0 x00000000處開處開始執(zhí)行。始執(zhí)行。 未定義指令:未定義指令:當(dāng)前指令未定義時(shí),便產(chǎn)生未定義指當(dāng)前指令未定義時(shí),便產(chǎn)生未定義指令中斷。令中斷。 軟件中斷:軟件中斷:用戶模式下使用指令用戶模式下使用指令SWI時(shí),處理器便時(shí),處理器便產(chǎn)生軟件中斷,進(jìn)入管理模式,以調(diào)用特權(quán)操作。產(chǎn)生軟件中斷,進(jìn)入管理模式,以調(diào)用特權(quán)操作。 指令預(yù)取中止:指令預(yù)取中止:預(yù)取指令的地址不存在,

51、或不允許預(yù)取指令的地址不存在,或不允許當(dāng)前指令訪問時(shí),存儲器會向處理器發(fā)出中止信號;當(dāng)前指令訪問時(shí),存儲器會向處理器發(fā)出中止信號;預(yù)取指令被執(zhí)行時(shí)才會產(chǎn)生該類異常。預(yù)取指令被執(zhí)行時(shí)才會產(chǎn)生該類異常。 數(shù)據(jù)訪問中止:數(shù)據(jù)訪問中止:數(shù)據(jù)訪問指令的地址不存在,或不數(shù)據(jù)訪問指令的地址不存在,或不允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)中止異常。允許當(dāng)前指令訪問時(shí),產(chǎn)生數(shù)據(jù)中止異常。 外部中斷請求:外部中斷請求:外部中斷請求引腳有效,且外部中斷請求引腳有效,且CPSR中的中的I位為位為0時(shí),產(chǎn)生時(shí),產(chǎn)生IRQ異常。異常。 快速中斷請求:快速中斷請求:快速中斷請求引腳有效,且快速中斷請求引腳有效,且CPSR中的中的F

52、位為位為0時(shí),產(chǎn)生時(shí),產(chǎn)生FIQ異常。異常。 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 異常向量異常向量地址地址異常類型異常類型進(jìn)入時(shí)的模進(jìn)入時(shí)的模式式進(jìn)入時(shí)進(jìn)入時(shí)I的狀態(tài)的狀態(tài)進(jìn)入時(shí)進(jìn)入時(shí)F的狀的狀態(tài)態(tài)0 x0000 0000復(fù)位復(fù)位管理管理禁止禁止禁止禁止0 x0000 0004未定義指令未定義指令未定義未定義IF0 x0000 0008軟件中斷軟件中斷(SWI)管理管理禁止禁止F0 x0000 000C預(yù)取中止預(yù)取中止(指指令令)中止中止IF0 x0000 0010數(shù)據(jù)中止數(shù)據(jù)中止中止中止IF0 x0000 0014保留保留保留保留0 x0000 0018IRQ外部中斷

53、外部中斷禁止禁止F0 x0000 001CFIQ快速中斷快速中斷禁止禁止禁止禁止計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 異常中斷的優(yōu)先級異常中斷的優(yōu)先級 異常類型異常類型優(yōu)先級優(yōu)先級復(fù)位復(fù)位1(最高優(yōu)先級)(最高優(yōu)先級)數(shù)據(jù)中止數(shù)據(jù)中止2FIQ3IRQ4預(yù)取中止預(yù)取中止5未定義指令未定義指令6SWI(最低優(yōu)先級)(最低優(yōu)先級)優(yōu)先級降低優(yōu)先級降低計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) 復(fù)位復(fù)位 當(dāng)當(dāng)nRESET信號由低變?yōu)楦唠娖綍r(shí),信號由低變?yōu)楦唠娖綍r(shí),ARM處理器執(zhí)處理器執(zhí)行下列操作:行下列操作:1.強(qiáng)制強(qiáng)制CPSR中的中的M4:0變?yōu)樽優(yōu)閎10011

54、(管理模式);(管理模式);2.置位置位CPSR中的中的I和和F位;位;3.清零清零CPSR中的中的T位;位;4.強(qiáng)制強(qiáng)制PC從地址從地址0 x00開始對下一條指令進(jìn)行取指;開始對下一條指令進(jìn)行取指;5.返回到返回到ARM狀態(tài)并恢復(fù)執(zhí)行狀態(tài)并恢復(fù)執(zhí)行 。計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) bootloader源代碼外部中斷處理實(shí)例源代碼外部中斷處理實(shí)例 從從0 x00000000開始設(shè)置以下指令。開始設(shè)置以下指令。 發(fā)生外部中斷請求,處理器自動(dòng)保存當(dāng)前狀態(tài)發(fā)生外部中斷請求,處理器自動(dòng)保存當(dāng)前狀態(tài)(PCR14,CPSRSPSR),進(jìn)入外部中斷模),進(jìn)入外部中斷模式,執(zhí)行地

55、址式,執(zhí)行地址0 x00000018處的指令。處的指令。 bSYS_RST_HANDLER;0 x00000000bUDF_INS_HANDLER;0 x00000004bSWI_SVC_HANDLER;0 x00000008bINS_ABT_HANDLER;0 x0000000cbDAT_ABT_HANDLER;0 x00000010b. ;bIRQ_SVC_HANDLER;0 x00000018bFIQ_SVC_HANDLER;0 x0000001c ROM空間空間計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) bootloader源代碼外部中斷處理實(shí)例源代碼外部中斷處理實(shí)例

56、在在IRQ_SVC_HANDLER中,處理器將通用寄存中,處理器將通用寄存器和返回地址壓入堆棧,接著跳轉(zhuǎn)到外部中斷請器和返回地址壓入堆棧,接著跳轉(zhuǎn)到外部中斷請求的中斷服務(wù)程序中。求的中斷服務(wù)程序中。 IRQ_SVC_Vector為外部中斷請求的中斷向量。為外部中斷請求的中斷向量。 IRQ_SVC_HANDLER處的代碼為:處的代碼為: IRQ_SVC_HANDLERsublr, lr, #4stmfd sp!, r0-r3, lrldrr0, =IRQ_SVC_Vectorldrpc, r0計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) bootloader源代碼外部中斷處理實(shí)例源

57、代碼外部中斷處理實(shí)例 中斷向量地址分配中斷向量地址分配 (內(nèi)存表數(shù)據(jù)結(jié)構(gòu)說明):(內(nèi)存表數(shù)據(jù)結(jié)構(gòu)說明): 中斷向量設(shè)置程序:中斷向量設(shè)置程序: MAP_ISR_STARTADDRESS ;為中斷向量分配地址空間為中斷向量分配地址空間 SYS_RST_VECTOR#4;此空間處為此空間處為RAM的地址的地址UDF_INS_VECTOR#4SWI_SVC_VECTOR#4INS_ABT_VECTOR#4DAT_ABT_VECTOR#4RESERVED_VECTOR #4IRQ_SVC_VECTOR#4FIQ_SVC_VECTOR#4ldrr0, IRQ_SVC_VECTOR ;IsrIRQ為中斷服

58、務(wù)程序的入口地址為中斷服務(wù)程序的入口地址ldrr1,=IsrIRQ;將其寫入中斷向量將其寫入中斷向量IRQ_SVC_VECTOR中中strr1,r0計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) bootloader源代碼外部中斷處理實(shí)例源代碼外部中斷處理實(shí)例在在7種異常中斷中,外部中斷請求較特殊,它包括種異常中斷中,外部中斷請求較特殊,它包括26種中斷。在非向量種中斷。在非向量IRQ中斷中斷模式下,這些中斷的中斷服務(wù)程序可通過模式下,這些中斷的中斷服務(wù)程序可通過IRQ的中斷服務(wù)程序間接進(jìn)入的中斷服務(wù)程序間接進(jìn)入 。IRQ中斷服務(wù)程序代碼如下:中斷服務(wù)程序代碼如下: IsrIRQs

59、ub sp,sp,#4stmfd sp!,r8-r9ldr r9,=I_ISPRldr r9,r9 ;讀出中斷寄存器讀出中斷寄存器I_ISPR的值,存入的值,存入R9中中mov r8,#0 x00movs r9,r9,lsr #1bcs %F1add r8,r8,#4;根據(jù)根據(jù)I_ISPR的值的值 b %B0;判斷該中斷在普通中斷向量表中的偏移量,存入判斷該中斷在普通中斷向量表中的偏移量,存入R81ldr r9,=HandleADC ;HandleADC為普通中斷向量表的起始地址,為普通中斷向量表的起始地址,add r9,r9,r8;起始地址起始地址+偏移地址實(shí)際的中斷向量地址偏移地址實(shí)際的中

60、斷向量地址ldr r9,r9;取出中斷向量的值,即服務(wù)程序的地址取出中斷向量的值,即服務(wù)程序的地址str r9,sp,#8ldmfd sp!,r8-r9,pc;跳轉(zhuǎn)到普通中斷服務(wù)程序,開始執(zhí)行跳轉(zhuǎn)到普通中斷服務(wù)程序,開始執(zhí)行 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院Z吉林大學(xué)吉林大學(xué) bootloader源代碼外部中斷處理實(shí)例源代碼外部中斷處理實(shí)例 外部中斷包括的外部中斷包括的26種普通中斷的向量空間分配種普通中斷的向量空間分配HandleADC # 4 ;為普通中斷向量分配空間為普通中斷向量分配空間 HandleRTC#4 HandleUTXD1 # 4 HandleUTXD0 # 4 .

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論