ARM微處理器的編程模型(一)_第1頁(yè)
ARM微處理器的編程模型(一)_第2頁(yè)
ARM微處理器的編程模型(一)_第3頁(yè)
ARM微處理器的編程模型(一)_第4頁(yè)
ARM微處理器的編程模型(一)_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用1第四講第四講 ARM ARM 微處理器的微處理器的 編程模型編程模型(一一) 2022-6-16嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-162主要內(nèi)容主要內(nèi)容n3.1 引言引言n3.2 嵌入式處理器的特點(diǎn)嵌入式處理器的特點(diǎn)n3.3 嵌入式處理器的分類嵌入式處理器的分類n3.4 嵌入式處理器的發(fā)展趨勢(shì)嵌入式處理器的發(fā)展趨勢(shì)n3.5 嵌入式處理器的選擇原則嵌入式處理器的選擇原則n3.6 ARM微處理器概述微處理器概述n3.7 ARM微處理器的編程模型微處理器的編程模型n3.8 ARM微處理器的指令系統(tǒng)微處理器的指令系統(tǒng)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入

2、式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1633.7 ARM微處理器的編程模型微處理器的編程模型n3.7.1 ARM微處理器的工作模式微處理器的工作模式n3.7.2 ARM微處理器的工作狀態(tài)微處理器的工作狀態(tài)n3.7.3 ARM體系結(jié)構(gòu)的寄存器組織體系結(jié)構(gòu)的寄存器組織n3.7.4 ARM微處理器的數(shù)據(jù)類型微處理器的數(shù)據(jù)類型n3.7.5 ARM微處理器的異常狀態(tài)微處理器的異常狀態(tài)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1643.7.1 ARM微處理器的工作模式微處理器的工作模式nARM微處理器支持微處理器支持7種工作模式種工作模式User-用戶模式(用戶模式(usr) ARM處理器正常的程序

3、執(zhí)行狀態(tài)處理器正常的程序執(zhí)行狀態(tài)System-系統(tǒng)模式(系統(tǒng)模式(sys) 運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)IRQ-外部中斷模式(外部中斷模式(irq) 用于通用的中斷處理用于通用的中斷處理FIQ-快速中斷模式(快速中斷模式(fiq) 用于高速數(shù)據(jù)傳輸或通道處理(用于高速數(shù)據(jù)傳輸或通道處理(USB3.0、以太網(wǎng))、以太網(wǎng))嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1653.7.1 ARM微處理器的工作模式(續(xù))微處理器的工作模式(續(xù))nARM微處理器支持微處理器支持7種工作模式種工作模式Supervisor-管理模式(管理模式(svc) 操作系統(tǒng)使用的保護(hù)模式操

4、作系統(tǒng)使用的保護(hù)模式 復(fù)位、軟中斷調(diào)用(復(fù)位、軟中斷調(diào)用(SWI)Abort-中止模式中止模式(abt) 當(dāng)數(shù)據(jù)或指令預(yù)取中止時(shí)進(jìn)入該模式當(dāng)數(shù)據(jù)或指令預(yù)取中止時(shí)進(jìn)入該模式(程序跑飛程序跑飛)Undefined-未定義指令模式(未定義指令模式(und) 當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式當(dāng)未定義的指令執(zhí)行時(shí)進(jìn)入該模式 可用于支持硬件協(xié)處理器的可用于支持硬件協(xié)處理器的軟件仿真(擴(kuò)充指令集)軟件仿真(擴(kuò)充指令集)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1663.7.1 ARM微處理器的工作模式(續(xù))微處理器的工作模式(續(xù))n特權(quán)模式特權(quán)模式除除用戶模式用戶模式以外,其余以外,其余6種模式稱

5、之為種模式稱之為特權(quán)模式特權(quán)模式(Privileged Modes)當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問的源是不能被訪問的n異常模式異常模式除去除去用戶模式和系統(tǒng)模式用戶模式和系統(tǒng)模式以外的以外的5種又稱為種又稱為異常模式異常模式(Exception Modes)常用于常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源資源等情況等情況嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1673.7.1 ARM微處理器的工作模式(續(xù))微處理器的工作模式(續(xù))n工作模式的改變工作模式的改

6、變通過通過軟件軟件改變改變 系統(tǒng)調(diào)用系統(tǒng)調(diào)用通過通過外部中斷或異常處理外部中斷或異常處理改變改變 外部中斷:外部中斷:IRQ、FIQ 來自中斷控制器來自中斷控制器 異常處理異常處理 來自來自CPU內(nèi)部?jī)?nèi)部嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1683.7.1 ARM微處理器的工作模式(續(xù))微處理器的工作模式(續(xù))n工作模式的改變舉例工作模式的改變舉例SWI軟件中斷指令軟件中斷指令 SWI 0 x0 ; 調(diào)用調(diào)用0號(hào)軟中斷號(hào)軟中斷 SWI 0 x12 ; 調(diào)用調(diào)用12號(hào)軟中斷號(hào)軟中斷IRQ外部中斷外部中斷 _irq void HandlerTIMER5(void) timeval

7、+;/ 當(dāng)前時(shí)刻遞增當(dāng)前時(shí)刻遞增 pIC-I_ISPC = INT_TIMER5; / 清除中斷請(qǐng)求位清除中斷請(qǐng)求位 嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1693.7.2 ARM微處理器的工作狀態(tài)微處理器的工作狀態(tài)nARM微處理器的工作狀態(tài)一般有兩種微處理器的工作狀態(tài)一般有兩種第一種為第一種為ARM狀態(tài)狀態(tài) 處理器執(zhí)行處理器執(zhí)行32位的位的ARM指令指令 ARM指令要求指令要求字對(duì)齊字對(duì)齊第二種為第二種為Thumb狀態(tài)狀態(tài) 處理器執(zhí)行處理器執(zhí)行16位的位的Thumb指令指令 Thumb指令要求指令要求半字對(duì)齊半字對(duì)齊方式方式半字對(duì)齊半字對(duì)齊字對(duì)齊字對(duì)齊地址地址0 x00000

8、000 x00000000 00 x00000000 x00000002 20 x00000000 x00000004 40 x00000000 x00000000 00 x00000000 x00000004 40 x00000000 x00000008 8特征特征Bit0=0Bit0=0Bit1=0,Bit0=0Bit1=0,Bit0=0嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1610n實(shí)例實(shí)例 nHI無符號(hào)數(shù)大于,無符號(hào)數(shù)大于,LS無符號(hào)數(shù)小于等于無符號(hào)數(shù)小于等于C代碼:代碼:if (ab) a+; else b+;Thumb代碼:代碼: CMPR0, R1BHIA_ADD

9、ADDR1, R1, #1 BOVER A_ADDADDR0, R0, #1 OVERARM代碼:代碼:CMPR0, R1ADDHIR0, R0, #1ADDLSR1, R1, #1 3.7.2 ARM微處理器的工作狀態(tài)微處理器的工作狀態(tài)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16113.7.2 ARM微處理器的工作狀態(tài)(續(xù))微處理器的工作狀態(tài)(續(xù))n工作狀態(tài)切換(子程序調(diào)用)工作狀態(tài)切換(子程序調(diào)用)在程序的執(zhí)行過程中,在程序的執(zhí)行過程中,處理器可以隨時(shí)在兩種工作狀處理器可以隨時(shí)在兩種工作狀態(tài)之間切換態(tài)之間切換處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器工作狀態(tài)的轉(zhuǎn)變并不影響處理器的工作

10、模式和處理器的工作模式和相應(yīng)寄存器中的內(nèi)容相應(yīng)寄存器中的內(nèi)容ARM微處理器在開始執(zhí)行代碼時(shí)總是處于微處理器在開始執(zhí)行代碼時(shí)總是處于ARM狀態(tài)狀態(tài) 也就是復(fù)位后進(jìn)入也就是復(fù)位后進(jìn)入ARM狀態(tài)狀態(tài)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16123.7.2 ARM微處理器的工作狀態(tài)(續(xù))微處理器的工作狀態(tài)(續(xù))n工作狀態(tài)切換方法工作狀態(tài)切換方法進(jìn)入進(jìn)入Thumb狀態(tài)狀態(tài) 執(zhí)行執(zhí)行BX指令(指令(Branch) BX:帶狀態(tài)切換的跳轉(zhuǎn)指令:帶狀態(tài)切換的跳轉(zhuǎn)指令 當(dāng)操作數(shù)寄存器的當(dāng)操作數(shù)寄存器的最低位最低位0為為1時(shí),可以使微處時(shí),可以使微處理器從理器從ARM狀態(tài)切換到狀態(tài)切換到Thumb

11、狀態(tài)狀態(tài) BX R0 ;R0的最低位的最低位0為為1 處理器工作在處理器工作在Thumb狀態(tài),如果發(fā)生異常并進(jìn)入異狀態(tài),如果發(fā)生異常并進(jìn)入異常處理子程序,則常處理子程序,則異常處理完畢異常處理完畢返回時(shí)返回時(shí),自動(dòng)自動(dòng)從從ARM狀態(tài)切換到狀態(tài)切換到Thumb狀態(tài)狀態(tài)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16133.7.2 ARM微處理器的工作狀態(tài)(續(xù))微處理器的工作狀態(tài)(續(xù))n工作狀態(tài)切換方法工作狀態(tài)切換方法進(jìn)入進(jìn)入ARM狀態(tài)狀態(tài) 執(zhí)行執(zhí)行BX指令指令 BX:帶狀態(tài)切換的跳轉(zhuǎn)指令:帶狀態(tài)切換的跳轉(zhuǎn)指令 當(dāng)操作數(shù)寄存器的當(dāng)操作數(shù)寄存器的最低位最低位0為為0時(shí),可以使微處時(shí),可以使

12、微處理器從理器從Thumb狀態(tài)切換到狀態(tài)切換到ARM 狀態(tài)狀態(tài) BX R0 ;R0的最低位的最低位0為為0 處理器工作在處理器工作在Thumb狀態(tài),如果發(fā)生異常并狀態(tài),如果發(fā)生異常并進(jìn)入進(jìn)入異異常處理子程序,則常處理子程序,則進(jìn)入時(shí)進(jìn)入時(shí)處理器處理器自動(dòng)自動(dòng)從從Thumb狀態(tài)狀態(tài)切換到切換到ARM狀態(tài)狀態(tài) 嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16143.7.2 ARM微處理器的工作狀態(tài)(續(xù))微處理器的工作狀態(tài)(續(xù))n工作狀態(tài)切換舉例工作狀態(tài)切換舉例1) B Label (類似于子程序調(diào)用)(類似于子程序調(diào)用)2) CMP R1, #0 BEQ Label3) ADRL R0,

13、 ThumbFun+1 BXR04)BLX LabelBLX:下一條指令地址送往下一條指令地址送往LR寄存器;寄存器;Label送往送往PC,并完成狀態(tài)切換,并完成狀態(tài)切換嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16153.7.3 ARM體系結(jié)構(gòu)的寄存器組織體系結(jié)構(gòu)的寄存器組織nARM處理器的寄存器處理器的寄存器37個(gè)個(gè)32位寄存器位寄存器 31個(gè)通用寄存器個(gè)通用寄存器 6個(gè)狀態(tài)寄存器個(gè)狀態(tài)寄存器這些寄存器這些寄存器不能被同時(shí)訪問不能被同時(shí)訪問 取決于處理器的取決于處理器的 工作狀態(tài)工作狀態(tài) 工作模式工作模式嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16163.7.3

14、 ARM體系結(jié)構(gòu)的寄存器組織體系結(jié)構(gòu)的寄存器組織n1 ARM狀態(tài)下的寄存器組織狀態(tài)下的寄存器組織n2 Thumb狀態(tài)下的寄存器組織狀態(tài)下的寄存器組織n3 程序狀態(tài)寄存器程序狀態(tài)寄存器嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16171 ARM狀態(tài)下的寄存器組織狀態(tài)下的寄存器組織n通用寄存器通用寄存器通用寄存器包括通用寄存器包括R0R15可以分為三類可以分為三類 未分組寄存器未分組寄存器R0R7 分組寄存器分組寄存器R8R14 程序計(jì)數(shù)器程序計(jì)數(shù)器R15 (PC)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16181 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))n

15、未分組寄存器未分組寄存器R0R7在所有的工作模式下,每個(gè)未分組寄存器都指向?qū)?yīng)在所有的工作模式下,每個(gè)未分組寄存器都指向?qū)?yīng)的的一個(gè)一個(gè)物理寄存器(傳數(shù)據(jù)物理寄存器(傳數(shù)據(jù)全局變量)全局變量)在中斷或異常處理進(jìn)行工作模式轉(zhuǎn)換時(shí),由于在中斷或異常處理進(jìn)行工作模式轉(zhuǎn)換時(shí),由于不同的不同的處理器工作模式均使用相同的物理寄存器處理器工作模式均使用相同的物理寄存器,可能會(huì)造,可能會(huì)造成寄存器中數(shù)據(jù)的破壞成寄存器中數(shù)據(jù)的破壞嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16191 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))n分組寄存器分組寄存器R8R14R8R12 每個(gè)寄存器對(duì)應(yīng)每個(gè)寄

16、存器對(duì)應(yīng)2個(gè)個(gè)不同的物理寄存器不同的物理寄存器 當(dāng)使用當(dāng)使用FIQ模式時(shí),訪問模式時(shí),訪問R8_fiqR12_fiq (5個(gè),個(gè),不用現(xiàn)場(chǎng)保護(hù))不用現(xiàn)場(chǎng)保護(hù)) 當(dāng)使用其他模式時(shí),訪問當(dāng)使用其他模式時(shí),訪問R8_usrR12_usrR13、R14 每個(gè)寄存器對(duì)應(yīng)每個(gè)寄存器對(duì)應(yīng)6個(gè)個(gè)不同的物理寄存器不同的物理寄存器 其中一個(gè)寄存器是其中一個(gè)寄存器是用戶模式與系統(tǒng)模式共用用戶模式與系統(tǒng)模式共用 另外另外5個(gè)物理寄存器對(duì)應(yīng)于其他個(gè)物理寄存器對(duì)應(yīng)于其他5種不同的工作模式種不同的工作模式 嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16201 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù)

17、)n不同物理寄存器的區(qū)分不同物理寄存器的區(qū)分R13_R14_mode為:為:usr、fiq、irq、svc、abt、und例如:例如: R13_usr、R13_fiq、R13_irq R14_svc、R14_abt、R14_und嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16211 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))nR13寄存器寄存器常用作堆棧指針常用作堆棧指針SP(Stack Pointer),一種習(xí)慣用法),一種習(xí)慣用法在在Thumb指令集中,某些指令強(qiáng)制使用指令集中,某些指令強(qiáng)制使用R13作為堆棧作為堆棧指針指針在應(yīng)用程序初始化時(shí),在應(yīng)用程序初始化時(shí),一

18、般都要初始化每種模式下的一般都要初始化每種模式下的R13,使其指向該工作模式的??臻g,使其指向該工作模式的??臻g嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16221 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))nR14寄存器寄存器也稱鏈接寄存器也稱鏈接寄存器LR (Link Register) 當(dāng)執(zhí)行當(dāng)執(zhí)行BL子程序調(diào)用指令時(shí),子程序調(diào)用指令時(shí),R14中得到中得到R15(程(程序計(jì)數(shù)器序計(jì)數(shù)器PC)的備份)的備份 BL Label;下一條指令地址;下一條指令地址LR, LabelPC當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組寄存器當(dāng)發(fā)生中斷或異常時(shí),對(duì)應(yīng)的分組寄存器R14_svc、R

19、14_irq、R14_fiq、R14_abt和和R14_und用來保存用來保存R15的返回值(的返回值(R14中保存的值等于異常發(fā)生時(shí)中保存的值等于異常發(fā)生時(shí)PC,因此因此在各種異常模式下可以根據(jù)在各種異常模式下可以根據(jù)R14的值返回到異常發(fā)生前的值返回到異常發(fā)生前的相應(yīng)位置繼續(xù)執(zhí)行的相應(yīng)位置繼續(xù)執(zhí)行)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16231 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))nR14寄存器常用情形寄存器常用情形1、常用用法(、常用用法(子程序返回子程序返回) (1)MOV PC, LR (2)BX LR2、在子程序入口處使用以下指令將、在子程序入口

20、處使用以下指令將R14存入堆棧(現(xiàn)場(chǎng)存入堆棧(現(xiàn)場(chǎng) 保護(hù))保護(hù)) STMFDSP!, , LR(LR最先進(jìn)棧)最先進(jìn)棧) 使用以下指令可以完成使用以下指令可以完成子程序返回(現(xiàn)場(chǎng)恢復(fù)和跳轉(zhuǎn))子程序返回(現(xiàn)場(chǎng)恢復(fù)和跳轉(zhuǎn)) LDMFDSP!, , PC嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16241 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))nR15寄存器寄存器R15寄存器用作程序計(jì)數(shù)器(寄存器用作程序計(jì)數(shù)器(PC)在在ARM狀態(tài)下,位狀態(tài)下,位1:0為為0,位,位31:2用于保存用于保存PC在在Thumb狀態(tài)下,位狀態(tài)下,位0為為0,位,位31:1用于保存用于保存PC

21、當(dāng)當(dāng)ARM體系結(jié)構(gòu)采用了三級(jí)流水結(jié)構(gòu),對(duì)于體系結(jié)構(gòu)采用了三級(jí)流水結(jié)構(gòu),對(duì)于ARM指令集而言,指令集而言,PC總是指向總是指向當(dāng)前執(zhí)行指令當(dāng)前執(zhí)行指令的下兩條的下兩條指令的地址指令的地址,即,即PC的值為當(dāng)前執(zhí)行指令的地址值的值為當(dāng)前執(zhí)行指令的地址值加加8個(gè)字節(jié)個(gè)字節(jié) (即(即PC指向下一條要取的指令地址)指向下一條要取的指令地址)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16251 ARM狀態(tài)下的寄存器組織(續(xù))狀態(tài)下的寄存器組織(續(xù))nCPSR寄存器寄存器用作用作CPSR(Current Program Status Register)CPSR可在任何工作模式下被訪問,它包括可在

22、任何工作模式下被訪問,它包括條件標(biāo)志位條件標(biāo)志位、中斷禁止位中斷禁止位、當(dāng)前處理器模式標(biāo)志位當(dāng)前處理器模式標(biāo)志位,以及其他一些,以及其他一些相關(guān)的相關(guān)的控制和狀態(tài)位控制和狀態(tài)位異常模式下有異常模式下有一個(gè)專用的物理狀態(tài)寄存器一個(gè)專用的物理狀態(tài)寄存器,稱為,稱為SPSR(Saved Program Status Register) 當(dāng)異常發(fā)生時(shí),當(dāng)異常發(fā)生時(shí),SPSR用于保存用于保存CPSR的當(dāng)前值,從的當(dāng)前值,從異常退出時(shí)則可由異常退出時(shí)則可由SPSR來恢復(fù)來恢復(fù)CPSR 用戶模式和系統(tǒng)模式用戶模式和系統(tǒng)模式不屬于異常模式,沒有不屬于異常模式,沒有SPSR嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)

23、用2022-6-1626嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16272 Thumb狀態(tài)下的寄存器組織狀態(tài)下的寄存器組織nThumb狀態(tài)下的寄存器集是狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集狀態(tài)下寄存器集的的一個(gè)子集一個(gè)子集程序可以直接訪問程序可以直接訪問 8個(gè)通用寄存器(個(gè)通用寄存器(R7R0) 程序計(jì)數(shù)器(程序計(jì)數(shù)器(PC) 堆棧指針(堆棧指針(SP) 連接寄存器(連接寄存器(LR) CPSR在在每一種異常模式每一種異常模式下都有一組下都有一組SP、LR和和SPSR嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-1628嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-

24、6-1629兩種工兩種工作狀態(tài)作狀態(tài)下寄存下寄存器比較器比較嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16303 程序狀態(tài)寄存器程序狀態(tài)寄存器 n程序狀態(tài)寄存器的程序狀態(tài)寄存器的構(gòu)成構(gòu)成一個(gè)當(dāng)前程序狀態(tài)寄存器(一個(gè)當(dāng)前程序狀態(tài)寄存器(CPSR)五個(gè)備份程序狀態(tài)寄存器(五個(gè)備份程序狀態(tài)寄存器(SPSR) 備份的程序狀態(tài)寄存器用來進(jìn)行異常處理備份的程序狀態(tài)寄存器用來進(jìn)行異常處理n程序狀態(tài)寄存器的程序狀態(tài)寄存器的功能功能保存保存ALU中的當(dāng)前操作信息中的當(dāng)前操作信息控制允許和禁止中斷控制允許和禁止中斷設(shè)置處理器的工作模式設(shè)置處理器的工作模式 嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用202

25、2-6-16313 程序狀態(tài)寄存器(續(xù))程序狀態(tài)寄存器(續(xù))嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16323 程序狀態(tài)寄存器(續(xù))程序狀態(tài)寄存器(續(xù))n條件碼標(biāo)志(條件碼標(biāo)志(Condition Code Flags)N、Z、C、V均為條件碼標(biāo)志位均為條件碼標(biāo)志位 它們的內(nèi)容可被它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并所改變,并且可以決定某條指令是否被執(zhí)行且可以決定某條指令是否被執(zhí)行在在ARM狀態(tài)下,狀態(tài)下,絕大多數(shù)的指令絕大多數(shù)的指令都是有條件執(zhí)行都是有條件執(zhí)行的的在在Thumb狀態(tài)下,僅有狀態(tài)下,僅有分支指令分支指令B是有條件執(zhí)行是有條件執(zhí)行的的(X

26、86JMP)嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16333 程序狀態(tài)寄存器(續(xù))程序狀態(tài)寄存器(續(xù))n實(shí)例實(shí)例 nHI無符號(hào)數(shù)大于,無符號(hào)數(shù)大于,LS無符號(hào)數(shù)小于等于無符號(hào)數(shù)小于等于C代碼:代碼:if (ab) a+; else b+;Thumb代碼:代碼: CMPR0, R1BHIA_ADDADDR1, R1, #1 BOVER A_ADDADDR0, R0, #1 OVERARM代碼:代碼:CMPR0, R1ADDHIR0, R0, #1ADDLSR1, R1, #1 嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16343 程序狀態(tài)寄存器(續(xù))程序狀態(tài)寄存器(續(xù)

27、)n標(biāo)志位標(biāo)志位NN=1 表示運(yùn)算結(jié)果為表示運(yùn)算結(jié)果為負(fù)數(shù)負(fù)數(shù)N=0 表示運(yùn)算結(jié)果為表示運(yùn)算結(jié)果為正數(shù)或零正數(shù)或零n標(biāo)志位標(biāo)志位ZZ=1 表示運(yùn)算結(jié)果表示運(yùn)算結(jié)果為零為零;Z=0 表示運(yùn)算結(jié)果為表示運(yùn)算結(jié)果為非零非零n標(biāo)志位標(biāo)志位VV=1表示表示符號(hào)位溢出符號(hào)位溢出嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16353 程序狀態(tài)寄存器(續(xù))程序狀態(tài)寄存器(續(xù))n標(biāo)志位標(biāo)志位C加法運(yùn)算加法運(yùn)算 當(dāng)運(yùn)算結(jié)果產(chǎn)生了當(dāng)運(yùn)算結(jié)果產(chǎn)生了進(jìn)位進(jìn)位時(shí)(無符號(hào)數(shù)溢出),時(shí)(無符號(hào)數(shù)溢出),C=1,否則否則C=0減法運(yùn)算減法運(yùn)算 當(dāng)運(yùn)算時(shí)產(chǎn)生了當(dāng)運(yùn)算時(shí)產(chǎn)生了借位借位(無符號(hào)數(shù)溢出),(無符號(hào)數(shù)溢出),C=1,否,否則則C=0嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用2022-6-16363 程序狀態(tài)寄存器(續(xù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論