ARM微處理器體系結(jié)構(gòu)ppt課件_第1頁(yè)
ARM微處理器體系結(jié)構(gòu)ppt課件_第2頁(yè)
ARM微處理器體系結(jié)構(gòu)ppt課件_第3頁(yè)
ARM微處理器體系結(jié)構(gòu)ppt課件_第4頁(yè)
ARM微處理器體系結(jié)構(gòu)ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩60頁(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、2.2 ARM微處置器體系構(gòu)造2.2.1 數(shù)據(jù)類型2.2.2 ARM微處置器的任務(wù)形狀2.2.3 ARM體系構(gòu)造的存儲(chǔ)器格式2.2.4 理器方式2.2.5 存放器組織 1.ARM形狀下的存放器組織 2.Thumb形狀下的存放器組織2.2.6 異常.2.2 ARM微處置器體系構(gòu)造 2.2.1 數(shù)據(jù)類型 ARM處置器支持以下數(shù)據(jù)類型:字Word:字的長(zhǎng)度為32位,而在8位/16位處置器體系構(gòu)造中,字的長(zhǎng)度普通為16位,請(qǐng)留意區(qū)分。半字(Half-Word):半字的長(zhǎng)度為16位,與8位/16位處置器體系構(gòu)造中字的長(zhǎng)度一致。字節(jié)Byte:各種處置器體系構(gòu)造中,字節(jié)的長(zhǎng)度均為8位。 .2.2.2 ARM

2、微處置器的任務(wù)形狀 從編程的角度看,ARM微處置器的任務(wù)形狀普通有兩種,并可在兩種形狀之間切換:ARM形狀,此時(shí)處置器執(zhí)行32位的字對(duì)齊的ARM指令; Thumb形狀,此時(shí)處置器執(zhí)行16位的、半字對(duì)齊的Thumb指令。.ARM處置器在兩種任務(wù)形狀之間可以切換:進(jìn)入Thumb形狀。當(dāng)操作數(shù)存放器的形狀位(位0)為1時(shí),執(zhí)行BX指令進(jìn)入Thumb形狀。假設(shè)處置器在Thumb形狀進(jìn)入異常,那么當(dāng)異常處置(IRQ、FIQ、Undef、Abort 和 SWI)前往時(shí),自動(dòng)轉(zhuǎn)換到Thumb形狀。進(jìn)入ARM形狀。當(dāng)操作數(shù)存放器的形狀位(位0)為0時(shí),執(zhí)行BX指令進(jìn)入ARM形狀。處置器進(jìn)展異常處置(IRQ、F

3、IQ、Reset、Undef、Abort 和 SWI ARM形狀執(zhí)行)。在此情況下,把PC 放人異常方式鏈接存放器中。從異常向量地址開(kāi)場(chǎng)執(zhí)行也可以進(jìn)入ARM形狀。.2.2.3 ARM體系構(gòu)造的存儲(chǔ)器格式 ARM體系構(gòu)造將存儲(chǔ)器看作是從零地址開(kāi)場(chǎng)的字節(jié)的線性組合。從零字節(jié)到三字節(jié)放置第一個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),從第四個(gè)字節(jié)到第七個(gè)字節(jié)放置第二個(gè)存儲(chǔ)的字?jǐn)?shù)據(jù),依次陳列。作為32位的微處置器,ARM體系構(gòu)造所支持的最大尋址空間為4GB。ARM體系構(gòu)造可以用兩種方法存儲(chǔ)字?jǐn)?shù)據(jù),稱為大端格式和小端格式,詳細(xì)闡明如下。 . 大端格式:字?jǐn)?shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,而字?jǐn)?shù)據(jù)的低字節(jié)那么存放在高地址中。 字地址高地址

4、低地址以大端格式存儲(chǔ)字?jǐn)?shù)據(jù). 小端格式:與大端存儲(chǔ)格式相反,在小端存儲(chǔ)格式中,低地址中存放的是字?jǐn)?shù)據(jù)的低字節(jié),高地址存放的是字?jǐn)?shù)據(jù)的高字節(jié)。以小端格式存儲(chǔ)字?jǐn)?shù)據(jù)高地址低地址字地址.2.2.4 理器方式 ARM微處置器支持7種運(yùn)轉(zhuǎn)方式,分別為: 用戶方式(usr):ARM處置器正常的程序執(zhí)行形狀??焖僦袛喾绞?fiq):用于高速數(shù)據(jù)傳輸或通道處置。 外部中斷方式irq:用于通用的中斷處置。 管理方式svc:操作系統(tǒng)運(yùn)用的維護(hù)方式,系統(tǒng)復(fù)位后的缺省方式。1.指令終止方式(abt):指令預(yù)取終止時(shí)進(jìn)入該方式。 2.數(shù)據(jù)訪問(wèn)終止方式(abt):當(dāng)數(shù)據(jù)訪問(wèn)終止時(shí)進(jìn)入該 方式,可用于虛擬存儲(chǔ)及存儲(chǔ)維護(hù)。

5、指令未定義方式(und):支持硬件協(xié)處置器指令的軟件 仿真系統(tǒng)方式(sys):運(yùn)轉(zhuǎn)具有特權(quán)的操作系統(tǒng)義務(wù)。 .ARM微處置器的運(yùn)轉(zhuǎn)方式可以經(jīng)過(guò)軟件改動(dòng),也可以經(jīng)過(guò)外部中斷或異常處置改動(dòng)。大多數(shù)的運(yùn)用程序運(yùn)轉(zhuǎn)在用戶方式下,當(dāng)處置器運(yùn)轉(zhuǎn)在用戶方式下時(shí),某些被維護(hù)的系統(tǒng)資源是不能被訪問(wèn)的。除用戶方式以外,其他的一切6種方式稱為非用戶方式或特權(quán)方式(Privileged Modes);其中除去用戶方式和系統(tǒng)方式以外的5種又稱為異常方式(Exception Modes),常用于處置中斷或異常,以及需求訪問(wèn)受維護(hù)的系統(tǒng)資源等情況。.處置器啟動(dòng)時(shí)的方式轉(zhuǎn)換圖超級(jí)方式Supervisor)多種特權(quán)方式變化用戶

6、程序的運(yùn)轉(zhuǎn)方式復(fù)位后的缺省方式主要完成各方式的堆棧設(shè)置,留意不要進(jìn)入用戶方式普通為用戶方式User處置器方式.2.2.5 存放器組織如圖 2-4 所示,ARM微處置器共有37個(gè)32位存放器,其中31個(gè)為通用存放器,6個(gè)為形狀存放器。但是這些存放器不能被同時(shí)訪問(wèn),詳細(xì)哪些存放器是可編程訪問(wèn)的,取決于微處置器的任務(wù)形狀及詳細(xì)的運(yùn)轉(zhuǎn)方式。但在任何時(shí)候,通用存放器R0R14、程序計(jì)數(shù)器PC、一個(gè)或兩個(gè)形狀存放器都是可訪問(wèn)的。 .1. ARM形狀下的存放器組織(1) 通用存放器 (2) 存放器R16 .(1) 通用存放器通用存放器包括R0R15,可以分為3類:未分組存放器R0R7分組存放器R8R14程序

7、計(jì)數(shù)器PC(R15) 未分組存放器R0R7在一切的運(yùn)轉(zhuǎn)方式下,未分組存放器都指向同一個(gè)物理存放器,它們未被系統(tǒng)用作特殊的用途,因此,在中斷或異常處置進(jìn)展運(yùn)轉(zhuǎn)方式轉(zhuǎn)換時(shí),由于不同的處置器運(yùn)轉(zhuǎn)方式均運(yùn)用一樣的物理存放器,能夠會(huì)呵斥存放器中數(shù)據(jù)的破壞,這一點(diǎn)在進(jìn)展程序設(shè)計(jì)時(shí)應(yīng)引起留意。 . 分組存放器R8R14對(duì)于分組存放器,它們每一次所訪問(wèn)的物理存放器與處置器當(dāng)前的運(yùn)轉(zhuǎn)方式有關(guān)。對(duì)于R8R12,每個(gè)存放器對(duì)應(yīng)兩個(gè)不同的物理存放器,當(dāng)運(yùn)用fiq方式時(shí),訪問(wèn)存放器R8_fiqR12_fiq;當(dāng)運(yùn)用除fiq方式以外的其他方式時(shí),訪問(wèn)存放器R8_usrR12_usr。對(duì)于R13、R14,每個(gè)存放器對(duì)應(yīng)6個(gè)

8、不同的物理存放器,其中一個(gè)是用戶方式與系統(tǒng)方式共用,另外5個(gè)物理存放器對(duì)應(yīng)于其他5種不同的運(yùn)轉(zhuǎn)方式。.采用以下記號(hào)來(lái)區(qū)分不同的物理存放器:R13_R14_其中,mode為以下幾種方式之一:usr、fiq、irq、svc、abt、und。存放器R13在ARM指令中常用作堆棧指針,但這只是一種習(xí)慣用法,用戶也可運(yùn)用其他的存放器作為堆棧指針。而在Thumb指令集中,某些指令強(qiáng)迫性的要求運(yùn)用R13作為堆棧指針。.由于處置器的每種運(yùn)轉(zhuǎn)方式均有本人獨(dú)立的物理存放器R13,在用戶運(yùn)用程序的初始化部分,普通都要初始化每種方式下的R13,使其指向該運(yùn)轉(zhuǎn)方式的??臻g.這樣,當(dāng)程序的運(yùn)轉(zhuǎn)進(jìn)入異常方式時(shí),可以將需求維

9、護(hù)的存放器放入R13所指向的堆棧,而當(dāng)程序從異常方式前往時(shí),那么從對(duì)應(yīng)的堆棧中恢復(fù),采用這種方式可以保證異常發(fā)生后程序的正常執(zhí)行。.R14也稱做子程序銜接存放器(Subroutine Link Register)或銜接存放器LR。當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),R14中得到R15(程序計(jì)數(shù)器PC)的備份。其他情況下,R14用作通用存放器。與之類似,當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組存放器R14_svc、R14_irq、R14_fiq、R14_abt和R14_und用來(lái)保管R15的前往值。.存放器R14常用于如下的情況:在每一種運(yùn)轉(zhuǎn)方式下,都可用R14保管子程序的前往地址,當(dāng)用BL或BLX指令調(diào)用子程序

10、時(shí),將PC的當(dāng)前值復(fù)制給R14,執(zhí)行完子程序后,又將R14的值復(fù)制回PC,即可完成子程序的調(diào)用前往。以上的描畫(huà)可用指令完成:.執(zhí)行以下恣意一條指令: MOV PC,LR 或 BX LR在子程序入口處運(yùn)用以下指令將R14存 入堆棧: STMFD SP! ,LR對(duì)應(yīng)的,運(yùn)用以下指令可以完成子程序前往:LDMFD SP! ,PC R14也可作為通用存放器。. 程序計(jì)數(shù)器PC(R15)存放器R15用作程序計(jì)數(shù)器(PC)。在ARM形狀下,位1:0為0,位31:2用于保管PC;在Thumb形狀下,位0為0,位31:1用于保管PC。雖然可以用作通用存放器,但是有一些指令在運(yùn)用R15時(shí)有一些特殊限制,假設(shè)不留

11、意,執(zhí)行的結(jié)果將是不可預(yù)料的。在ARM形狀下,PC的0和1位是0,在Thumb形狀下,PC的0位是0。 .R15雖然也可用作通用存放器,但普通不這么運(yùn)用,由于對(duì)R15的運(yùn)用有一些特殊的限制,當(dāng)違反了這些限制時(shí),程序的執(zhí)行結(jié)果是未知的。由于ARM體系構(gòu)造采用多級(jí)流水線技術(shù),對(duì)于ARM指令集而言,PC總是指向當(dāng)前指令的下兩條指令的地址,即PC的值為當(dāng)前指令的地址值加八個(gè)字節(jié)。在ARM形狀下,任一時(shí)辰可以訪問(wèn)以上所討論的16個(gè)通用存放器和12個(gè)形狀存放器。在非用戶方式(特權(quán)方式) 下,那么可訪問(wèn)到特定方式分組存放器,圖2-4闡明在每一種運(yùn)轉(zhuǎn)方式下,哪一些存放器是可以訪問(wèn)的。 .(2) 存放器R16

12、存放器R16用作CPSR(Current Program Status Register,當(dāng)前程序形狀存放器),CPSR可在任何運(yùn)轉(zhuǎn)方式下被訪問(wèn),它包括條件標(biāo)志位、中斷制止位、當(dāng)前處置器方式標(biāo)志位,以及其他一些相關(guān)的控制和形狀位。 .每一種運(yùn)轉(zhuǎn)方式下又都有一個(gè)公用的物理形狀存放器,稱為SPSR (Saved Program Status Register,備份的程序形狀存放器),當(dāng)異常發(fā)生時(shí),SPSR用于保管CPSR的當(dāng)前值,從異常退出時(shí)那么可由SPSR來(lái)恢復(fù)CPSR。由于用戶方式和系統(tǒng)方式不屬于異常方式,它們沒(méi)有SPSR,當(dāng)在這兩種方式下訪問(wèn)SPSR時(shí),結(jié)果是未知的。程序形狀字參見(jiàn)后面闡明。

13、 .2. Thumb形狀下的存放器組織Thumb形狀下的存放器集是ARM形狀下存放器集的一個(gè)子集,程序可以直接訪問(wèn)8個(gè)通用存放器(R7R0)、程序計(jì)數(shù)器(PC)、堆棧指針(SP)、銜接存放器(LR)和CPSR。同時(shí),在每一種特權(quán)方式下都有一組SP、LR和SPSR。圖2-4闡明Thumb形狀下的存放器組織。 .(1) Thumb形狀下的存放器組織與ARM形狀下的存放器組織的關(guān)系Thumb形狀下和ARM形狀下的R0R7是一樣的Thumb形狀下和ARM形狀下的CPSR和一切的SPSR是一樣的Thumb形狀下的SP對(duì)應(yīng)于ARM形狀下的R13Thumb形狀下的LR對(duì)應(yīng)于ARM形狀下的R14Thumb形狀

14、下的程序計(jì)數(shù)器對(duì)應(yīng)于ARM形狀下的R15以上的對(duì)應(yīng)關(guān)系如圖2-5所示。 .(2) 訪問(wèn)THUMB形狀下的高位存放器(Hi-registers) 在Thumb形狀下,高位存放器R8R15并不是規(guī)范存放器集的一部分,但可運(yùn)用匯編言語(yǔ)程序有限制地訪問(wèn)這些存放器,將其用作快速的暫存器.運(yùn)用帶特殊變量的 MOV指令,數(shù)據(jù)可以在低位存放器和高位存放器之間進(jìn)展傳送,高位存放器的值可以運(yùn)用CMP和ADD指令進(jìn)展比較或加上低位存放器中的值。 .(3) 程序形狀存放器 ARM體系構(gòu)造包含一個(gè)當(dāng)前程序形狀存放器(CPSR)和5個(gè)備份的程序形狀存放器 (SPSRs)。備份的程序形狀存放器用來(lái)進(jìn)展異常處置,其功能包括:

15、保管ALU中的當(dāng)前操作信息。控制允許和制止中斷。設(shè)置處置器的運(yùn)轉(zhuǎn)方式。程序形狀存放器每一位的安排如圖2-6所示. . 條件碼標(biāo)志(Condition Code Flags)N、Z、C、V均為條件碼標(biāo)志位。它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改動(dòng),并且可以決議某條指令能否被執(zhí)行。在ARM形狀下,絕大多數(shù)的指令都是有條件執(zhí)行的。在Thumb形狀下僅有分支指令是有條件執(zhí)行的。條件碼標(biāo)志各位的詳細(xì)含義如表2-1所示。 . 控制位PSR的低8位(包括I、F、T和M4:0)稱為控制位,當(dāng)發(fā)生異常時(shí)這些位可以被改動(dòng)。假設(shè)處置器運(yùn)轉(zhuǎn)特權(quán)方式,這些位也可以由程序修正。中斷制止位I、FI1 制止IRQ中斷F1 制

16、止FIQ中斷T標(biāo)志位:該位反映處置器的運(yùn)轉(zhuǎn)形狀。 .對(duì)于ARM體系構(gòu)造v5及以上版本的T系列處置器,當(dāng)該位為1時(shí),程序運(yùn)轉(zhuǎn)于Thumb形狀,否那么運(yùn)轉(zhuǎn)于ARM形狀。對(duì)于ARM體系構(gòu)造v5及以上版本的非T系列處置器,當(dāng)該位為1時(shí),執(zhí)行下一條指令以引起未定義的指令異常;當(dāng)該位為0時(shí),表示運(yùn)轉(zhuǎn)于ARM形狀。運(yùn)轉(zhuǎn)方式位M4:0:M0、M1 、 M2、M3、M4是方式位。這些位決議了處置器的運(yùn)轉(zhuǎn)方式。詳細(xì)含義如表2-2所示。.由表2-2可知,并不是一切的運(yùn)轉(zhuǎn)方式位的組合都是有效的,其他的組合結(jié)果會(huì)導(dǎo)致處置器進(jìn)入一個(gè)不可恢復(fù)的形狀。 保管位PSR中的其他位為保管位,當(dāng)改動(dòng)PSR中的條件碼標(biāo)志位或者控制位時(shí)

17、,保管位不要改動(dòng),在程序中也不要運(yùn)用保管位來(lái)存儲(chǔ)數(shù)據(jù)。保管位將用于ARM版本的擴(kuò)展。 .2.2.6 異常異常(exception)由內(nèi)部或外部源產(chǎn)生以引起處置器處置一個(gè)事件。例如,外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。在處置異常之前,處置器形狀必需保管,以便在異常處置程序完成后,原來(lái)的程序可以重新執(zhí)行。同一時(shí)辰能夠出現(xiàn)多個(gè)異常。 ARM支持7種類型的異常。表2-3列出了異常的類型以及處置這些異常的處置器方式。異常出現(xiàn)后,強(qiáng)迫從異常類型對(duì)應(yīng)的固定存儲(chǔ)器地址開(kāi)場(chǎng)執(zhí)行程序。這些固定的地址稱為異常向量(Exception Vectors)。 .當(dāng)異常出現(xiàn)時(shí),異常方式分組的R14和SPSR用于保管形

18、狀,即R14_ = return linkSPSR_ = CPSRCPSR4:0 = exception mode numberCPSR5= 0 *在ARM形狀執(zhí)行*if = Reset or FIQ then CPSR6 = 1 *制止快速中斷* *否那么CPSR6不變*CPSR7 = 1 *制止正常中斷*/PC = exception vector address當(dāng)處置異常前往時(shí),將SPSR傳送到CPSR,R14傳送到PC。這可用兩種方法自動(dòng)完成,即運(yùn)用帶S位的數(shù)據(jù)處置指令,將PC作為目的存放器;運(yùn)用帶恢復(fù)CPSR的多加載指令。 .復(fù) 位 處置器上一旦有復(fù)位輸入,ARM處置器立刻停頓執(zhí)行當(dāng)

19、前指令。復(fù)位完成以下操作R14_svc=UNPREDICTABLE valueSPSR_svc=UNPREDICTABLE valueCPSR4:0=0b10011 /*進(jìn)入管理方式*/CPSR50 /*在ARM形狀下執(zhí)行*/CPSR61 /*制止快速中斷*/CPSR71 /*制止正常中斷*/If high vectors configured thenPC=0 xFFFF0000ElsePC=0 x00000000復(fù)位后,ARM處置器在制止中斷的管理方式下,從地址0 x00000000或OxFFFF0000開(kāi)場(chǎng)執(zhí)行指令。 .未定義指令異常 當(dāng)ARM處置器執(zhí)行協(xié)處置器指令時(shí),它必需等待任一外部

20、協(xié)處置器應(yīng)對(duì)后,才干真正執(zhí)行這條指令。假設(shè)協(xié)處置器沒(méi)有呼應(yīng),就會(huì)出現(xiàn)未定義指令異常。假設(shè)試圖執(zhí)行未定義的指令,也會(huì)出現(xiàn)未定義指令異常。未定義指令異常可用于沒(méi)有物理協(xié)處置器(硬件)的系統(tǒng)上,對(duì)協(xié)處置器進(jìn)展軟件仿真,或在軟件仿真時(shí)進(jìn)展指令集擴(kuò)展。當(dāng)未定義指令異常出現(xiàn)時(shí),執(zhí)行以下操作: .R14_und=address of next instruction after the undefined instructionSPSR_und=CPSRCPSR4:0=0b11011 /*進(jìn)入未定義方式*/CPSR5=0 /*在ARM形狀執(zhí)行*/*CPSR6不變*/CPSR7=1 /*制止正常中斷*/If

21、high vectors configured thenPC=0 xFFFF0004ElsePC=0 x00000004在仿真未定義指令后,運(yùn)用以下指令前往,即MOVS PC,R14上面的指令恢復(fù)PC(從R14_und)和CPSR(從SPSR_und),并前往到未定義指令后的下一條指令。.3軟件中斷異常軟件中斷指令SWI(SoftWare Interrupt lnstruction)進(jìn)入管理方式,以懇求特定的管理(操作系統(tǒng))函數(shù)。當(dāng)執(zhí)行SWI時(shí),完成以下操作:R14_svc=address of next instruction after the SWI instructionSPSR_sv

22、c=CPSRCPSR4:0=0b10011 /*進(jìn)入管理方式*/CPSR5=0 /*在ARM形狀執(zhí)行*/*CPSR6不變*/CPSR7=1 /*制止正常中斷*/If high vectors configured thenPC=0 xFFFF0008ElesPC=0 x00000008.完成SWI操作后,運(yùn)用以下指令恢復(fù)PC(從R14_svc)和CPSR(從SPSR_svc),并前往到SWI指令后的下一條指令,即MOVS PC,R14.4. 預(yù)取中止(取指令存儲(chǔ)器中止) 存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止(abort)信號(hào)。呼應(yīng)取指激活的中止標(biāo)志所取的指令無(wú)效。假設(shè)處置器試圖執(zhí)行無(wú)效指令,那么產(chǎn)生預(yù)取中

23、止異常。假設(shè)指令未執(zhí)行(例如,指令在流水線中發(fā)生了轉(zhuǎn)移),那么不發(fā)生預(yù)取中止。在ARMv5及以上版本中,執(zhí)行BKPT指令也會(huì)產(chǎn)生預(yù)取中止異常。當(dāng)試圖執(zhí)行一條中止的指令時(shí),將執(zhí)行以下操作:.R14_abt=address of the aborted instruction + 4SPSR_abt=CPSRCPSR4:0=0b10111 /*進(jìn)入中止方式*/CPSR5=0 /*在ARM形狀執(zhí)行*/* CPSR 6不變*/CPSR7=1 /*制止正常中斷*/If high vectors configured thenPC=0 xFFFF000CElse PC=0 x0000000C確定中止緣由后

24、,運(yùn)用下面指令從中止方式前往,即SUBS PC,R14,#4上面的指令恢復(fù)PC(從R14_abt)和CPSR(從SPSR_abt),并前往到中止的指令。.數(shù)據(jù)中止(數(shù)據(jù)訪問(wèn)存儲(chǔ)器中止)存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)。呼應(yīng)數(shù)據(jù)訪問(wèn)(加載或存儲(chǔ))激活的中止標(biāo)志數(shù)據(jù)為無(wú)效。在下面的任何指令或異常改動(dòng)CPU形狀之前,數(shù)據(jù)中止異常發(fā)生。執(zhí)行以下操作:R14_abt=address of the aborted instruction + 8SPSR_abt=CPSRCPSR4:0=0b10111 /*進(jìn)入中止方式*/CPSR5=0 /*在ARM形狀執(zhí)行*/* CPSR 6不變*/CPSR7=1 /*制止正

25、常中斷*/.If high vectors configured thenPC=0 xFFFF0010Else PC=0 x00000010確定中止緣由后,運(yùn)用以下指令從中止方式前往,即SUBS PC,R14,#8上面的指令恢復(fù)PC(從R14_abt)和CPSR (從SPSR_abt),并前往重新執(zhí)行中止的指令。假設(shè)中止的指令不需求重新執(zhí)行,那么運(yùn)用下面的指令:SUBS PC,R14,#4. 中斷懇求(IRQ)異常經(jīng)過(guò)處置器上的IRQ輸入引腳,由外部產(chǎn)生IRQ異常。IRQ異常的優(yōu)先級(jí)比FIQ異常的低。當(dāng)進(jìn)入FIQ處置時(shí),會(huì)屏蔽掉IRQ異常。假設(shè)CPSR的I位置為1,那么制止IRQ中斷。假設(shè)I位

26、清零,那么ARM在指令執(zhí)行完之前檢查IRQ輸入。只能在特權(quán)方式下改動(dòng)I位,當(dāng)檢測(cè)到IRQ時(shí),執(zhí)行以下操作:.R14_irq=address of the aborted instruction + 4SPSR_irq=CPSRCPSR4:0=0b10010 /*進(jìn)入IRQ方式*/CPSR5=0 /*在ARM形狀執(zhí)行*/* CPSR 6不變*/CPSR7=1 /*制止正常中斷*/If high vectors configured thenPC=0 xFFFF0018Else PC=0 x00000018運(yùn)用下面的指令從中斷效力前往,即SUBS PC,R14,#4上面的指令恢復(fù)PC(從R14_i

27、rq)和CPSR(從SPSR_irq),并繼續(xù)執(zhí)行被中斷的程序。.快速中斷懇求(FIQ)異常經(jīng)過(guò)處置器上的FIQ輸入引腳,由外部產(chǎn)生FIQ異常。FIQ被設(shè)計(jì)成支持?jǐn)?shù)據(jù)傳送和通道處置,并有足夠的私有(private)存放器,從而在這樣的運(yùn)用中可防止對(duì)存放器保管的需求,減少了上下文切換的總開(kāi)銷。當(dāng)CPSR的F位置1時(shí),制止快速中斷。假設(shè)F位清零,那么ARM在執(zhí)行指令時(shí)檢查FIQ輸入。只能在特權(quán)方式下改動(dòng)F位,當(dāng)檢測(cè)到FIQ時(shí),執(zhí)行以下操作,即.R14_fiq=address of the aborted instruction + 4SPSR_fiq=CPSRCPSR4:0=0b10001 /*進(jìn)

28、入FIQ方式*/CPSR5=0 /*在ARM形狀執(zhí)行*/CPSR6=1 /*制止快速中斷*/CPSR7=1 /*制止正常中斷*/If high vectors configured thenPC=0 xFFFF001CElsePC=0 x0000001C .運(yùn)用下面的指令從中斷效力前往,即SUBS PC,R14,#4上面的指令恢復(fù)PC(從R14_fiq)和CPSR(從SPSR_fiq),并繼續(xù)執(zhí)行被中斷的程序。FIQ向量放在最后,允許FIQ異常處置程序直接放在地址0 x0000001C或0 xFFFF001C開(kāi)場(chǎng)的位置,而不需求由向量的分支指令執(zhí)行跳轉(zhuǎn)到異常處置程序。.8. 異常優(yōu)先級(jí)異常的優(yōu)

29、先級(jí)如表2-4所列。 優(yōu)先級(jí)異常優(yōu)先級(jí)異常1(最高)復(fù)位4IRQ2數(shù)據(jù)中止5預(yù)取中止3FIQ6(最低)未定義指信、SWI.9. 高端向量一些ARM實(shí)現(xiàn)允許異常向量的定位由32位地址空間低端的正常地址范圍Ox00000000Ox000000lC,移到接近于地址空間高端的另一地址范圍0 xFFFF00000 xFFFF00lC。這些改動(dòng)后的地址位置稱為高端向量。由IMPLEMENTATION DEFINED決議能否支持高端向量。假設(shè)支持,那么在輸入硬件配置時(shí),選擇是運(yùn)用正常向量還是高端向量。.10. 異常的進(jìn)入和退出只需正常的程序流程被暫時(shí)停頓,那么異常發(fā)生,例如效力外部的中斷。在異常被處置之前,

30、必需保管當(dāng)前的處置器形狀,以便當(dāng)處置程序完成后,原來(lái)的程序能重新開(kāi)場(chǎng)。假設(shè)幾種異常同時(shí)發(fā)生,那么對(duì)它們按固定的次序處置,可參考異常優(yōu)先級(jí).(1) 進(jìn)入異常的操作處置一個(gè)異常時(shí),ARM7TDMI用于:將下一條指令的地址保管在相應(yīng)的LR存放器中。假設(shè)異常是從ARM形狀進(jìn)入,那么保管在LR存放器中的是下一條指令的地址(當(dāng)前PC+4或PC+8,取決于異常,見(jiàn)表2-5)。. 假設(shè)異常是從Thumb形狀進(jìn)入,那么保管在LR存放器中的是當(dāng)前PC的偏移值。它能使程序在異常處置前往后從正確的位置重新開(kāi)場(chǎng)。這就意味異常處不需求確定異常是從何種形狀進(jìn)入的。例如在軟件中斷(SWI)情況下,“MOVS PC,R14_s

31、vc,總是前往到下一條指令,而與SWI是在ARM還是Thumb形狀下執(zhí)行的無(wú)關(guān)。.將CPSR復(fù)制到相應(yīng)的SPSR中。迫使CPSR方式位設(shè)置成取決于異常的值。迫使PC從相關(guān)的異常向量中取下一條指令。也可以設(shè)置中斷制止位來(lái)阻止其它無(wú)法處置的異常嵌套。假設(shè)在異常發(fā)生時(shí)處置器是在Thumb形狀下,那么當(dāng)用中斷異常向量地址加載PC時(shí),自動(dòng)切換進(jìn)入ARM形狀。.(2) 退出異常的操作在完成異常處置后:將LR存放器的值減去相應(yīng)的偏移量(偏移量根據(jù)異常不同而不同),送到PC中;將SPSR復(fù)制回CPSR中;去除中斷制止位標(biāo)志。另外,不需求顯式切換回Thumb形狀,由于從SPSR中將CPSR T位自動(dòng)設(shè)置為異常前

32、的原值。.(3) 進(jìn)入和退出異常小結(jié)表2-5中總結(jié)了進(jìn)入異常處置時(shí)保管在相應(yīng)的R14存放器中的PC值,以及在退出異常處置時(shí)引薦運(yùn)用的指令。.PC是具有預(yù)取中止的BL/SWI/未定義指令所取的地址;PC是從FIQ或IRQ獲得優(yōu)先權(quán)后不能執(zhí)行的指令的地址;PC是產(chǎn)生數(shù)據(jù)中止的加載或存儲(chǔ)指令的地址;復(fù)位時(shí)保管在R14_svc中的值是不可預(yù)知的。.R0R0R0R0R0R0R1R1R1R1R1R1R2R2R2R2R2R2R3R3R3R3R3R3R4R4R4R4R4R4R5R5R5R5R5R5R6R6R6R6R6R6R7R7R7R7R7R7R8R8-fiqR8R8R8R8R9R9-fiqR9R9R9R9R

33、10R10-fiqR10R10R10R10R11R11-fiqR11R11R11R11R12R12-fiqR12R12R12R12R13R13-fiq13-svc13-adt13-itq13-undR14R14-fiq14-svc14-adt14-itq14-undR15(PC)R15(PC)R15(PC)R15(PC)R15(PC)R15(PC)Systerm&User FIQ Supervister About IRG UndefinedARM形狀下的積存器組織CPSRCPSRCPSRCPSRCPSRCPSRSPSR-foqSPSR-svcSPSR-abtSPSR-inqSPSR-und前

34、往.圖 2-5 Thumb 形狀下的存放器組織 R0 R1 R2 R3 R4 R5 R6 R7Stack Point (SP)Link Register (LR)Program Counter (PC) CPSR SPSR RO R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12Stack Point (R13)Link Register (R14)Program Counter (R15) CPSR SPSRThumb形狀A(yù)RM形狀前往.前往.標(biāo)志位含義N當(dāng)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),N=1表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0表示運(yùn)算的結(jié)果為正數(shù)或零ZZ=1表示運(yùn)算

35、的結(jié)果為零;Z=0表示運(yùn)算的結(jié)果為非零C可以有4種方法設(shè)置C的值;加法運(yùn)算(包括比較指令CMP);當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無(wú)符號(hào)數(shù)溢出),C=1,否則C=0;減法運(yùn)算(包括比較指令CMP);當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無(wú)符號(hào)數(shù)溢出),C=0,否則C=1;對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后一位;對(duì)于其它的非加/減運(yùn)算指令,C的值通常不改變條件碼的詳細(xì)含義.N當(dāng)用兩個(gè)補(bǔ)碼表示的帶符號(hào)數(shù)進(jìn)行運(yùn)算時(shí),N=1表示運(yùn)算的結(jié)果為負(fù)數(shù);N=0表示運(yùn)算的結(jié)果為正數(shù)或零ZZ=1表示運(yùn)算的結(jié)果為零;Z=0表示運(yùn)算的結(jié)果為非零C可以有4種方法設(shè)置C的值;加法運(yùn)算(包括比較指令CMP);當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位時(shí)(無(wú)符號(hào)數(shù)溢出),C=1,否則C=0;減法運(yùn)算(包括比較指令CMP);當(dāng)運(yùn)算時(shí)產(chǎn)生了借位(無(wú)符號(hào)數(shù)溢出),C=0,否則C=1;對(duì)于包含移位操作的非加/減運(yùn)算指令,C為移出值的最后一位;對(duì)于其它的非加/減運(yùn)算指令,C的值通常不改變前往.M4:0處理器模式可訪問(wèn)的寄存器0b10000用戶模式PC,CPSR,R0R140b10001FIQ模式PC,CPSR,SPSR_fiq,R14_f

溫馨提示

  • 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)論