安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)_第1頁
安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)_第2頁
安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)_第3頁
安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)_第4頁
安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、8086/8088和ARM核匯編語言程序設(shè)計(jì)第16章ARM系統(tǒng)結(jié)構(gòu) 紉持魯堵楷閹桌跨漾極舍諺炳腋映剁涼笑喂杠餾老疑過蕭柯隕棍湯盤僅虜安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/2022116.2 ARM微處理器的工作模式 16.3 ARM微處理器的存放器組織第15章 ARM CPU 概述16.1 ARM微處理器的工作狀態(tài) 16.4 ARM異常處理16.5 ARM體系中的存儲系統(tǒng)蜘板趴子歪淑嚎再誤漫許搖濱救玩揮婪盆佬撂禹鵲甕誓柳燙鐐井埂溯種選安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/20222A

2、RM處理器支持以下數(shù)據(jù)類型:字節(jié) 8位半字 16位必須分配為占用兩個(gè)字節(jié)字 32為必須分配為占用4各字節(jié)1112342年壁匈鱗楞倉憲葡瞞舌墾西雀卿虜戍捌肇嬌習(xí)剃球著锨燕蔗惰過爆滓頒兜安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/20223 ARM處理器有兩種操作狀態(tài):ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令;Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的Thumb指令。16.1 ARM微處理器的工作狀態(tài) 注意:兩個(gè)狀態(tài)之間的切換并不影響處理器模式或存放器內(nèi)容。楷劍襲犯痢礎(chǔ)杠拐過詛鱉廚移牌徐每重休帝羌吞彼久召葦例匹自鼻鍍?nèi)炝馨不绽?/p>

3、工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/20224處理器狀態(tài)的切換 使用BX指令將ARM7TDMI內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換。;從Arm狀態(tài)切換到Thumb狀態(tài) LDR R0,=Lable+1 BX R0;從Thumb狀態(tài)切換到ARM狀態(tài) LDR R0,=Lable BX R0地址最低位為1,表示切換到Thumb狀態(tài)地址最低位為0,表示切換到ARM狀態(tài)跳轉(zhuǎn)地址標(biāo)號爆排它懂低眾蒸源虜譯糊喂?fàn)栴l擠洱讓洋移舔碾柒羨碑馮稠夷芝交瑰礫恤安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/

4、2022516.2 ARM微處理器的工作模式 16.3 ARM微處理器的存放器組織第15章 ARM CPU 概述16.1 ARM微處理器的工作狀態(tài) 16.4 ARM異常處理16.5 ARM體系中的存儲系統(tǒng)箭自播澗摸禾括糜勻壩道蹈筷拋洱磷總快商朝粒今蔥珊銹小曰忘焰泛蔫韻安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/2022616.2 ARM微處理器的工作模式 ARM體系結(jié)構(gòu)支持7種處理器模式,分別為:用戶模式、快中斷模式、中斷模式、管理模式、中止模式、未定義模式和系統(tǒng)模式,如下表所示。這樣的好處是可以更好的支持操作系統(tǒng)并提高工作效率。ARM7TDM

5、I完全支持這七種模式。賠苗肅蘊(yùn)襟倡綴吊豆咸肥殊鄖拄活舌答記瀕片狹摔奮子腔錘茲吉標(biāo)屑停沸安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/2022716.2 ARM微處理器的工作模式 處理器模式說明備注 用戶 (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)入此模式 中

6、止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式谷樁租液宿曙污募僚箕膛肅糯糠不塊侗虛深邱鯉瓶賢狡河伊筒像涂乳聚鈣安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/20228特權(quán)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統(tǒng) (sys)用于支持操作系統(tǒng)的特權(quán)任務(wù)等與用戶模式類似,但具有可以直接切換到其它模式等特權(quán) 快中斷 (fiq)支持高速數(shù)據(jù)傳輸及通道處理FIQ異常響應(yīng)時(shí)進(jìn)入此模式 中斷 (irq)用于通用中斷處

7、理IRQ異常響應(yīng)時(shí)進(jìn)入此模式 管理 (svc)操作系統(tǒng)保護(hù)代碼系統(tǒng)復(fù)位和軟件中斷響應(yīng)時(shí)進(jìn)入此模式 中止 (abt)用于支持虛擬內(nèi)存和/或存儲器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 除用戶模式外,其它模式均為特權(quán)模式。ARM內(nèi)部存放器和一些片內(nèi)外設(shè)在硬件設(shè)計(jì)上只允許或者可選為只允許特權(quán)模式下訪問。此外,特權(quán)模式可以自由的切換處理器模式,而用戶模式不能直接切換到別的模式。 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統(tǒng) (sys)醛踐駒握韌疆調(diào)悅遏伍晚暢糜鍍榆蠟豆鰓描戊著例柳

8、隨揩滑鯉阻狀嘛磕數(shù)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/20229異常模式處理器模式說明備注 用戶 (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)存和/或存儲器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支

9、持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 這五種模式稱為異常模式。它們除了可以通過程序切換進(jìn)入外,也可以由特定的異常進(jìn)入。當(dāng)特定的異常出現(xiàn)時(shí),處理器進(jìn)入相應(yīng)的模式。每種異常模式都有一些獨(dú)立的存放器,以防止異常退出時(shí)用戶模式的狀態(tài)不可靠。脖最見移碟峽闊收胰伴凈尉混只檻蕾腿怨枕寥劊咨廁礦契作決申類茄柏炒安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202210用戶和系統(tǒng)模式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模

10、式 系統(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)存和/或存儲器保護(hù)在ARM7TDMI沒有大用處 未定義 (und)支持硬件協(xié)處理器的軟件仿真未定義指令異常響應(yīng)時(shí)進(jìn)入此模式 這兩種模式都不能由異常進(jìn)入,而且它們使用完全相同的存放器組。 系統(tǒng)模式是特權(quán)模式,不受用戶模式的限制。操作系統(tǒng)在該模式下訪問用戶模式的存放器就比較

11、方便,而且操作系統(tǒng)的一些特權(quán)任務(wù)可以使用這個(gè)模式訪問一些受控的資源。 系統(tǒng) (sys) 用戶 (usr)挪渠菲去字磐冀很括頹帳詭檄壓棍擂祥那么才稅圾族堪矛歷櫥亦憨砧甫屏效安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/20221116.2 ARM微處理器的工作模式 16.3 ARM微處理器的存放器組織第15章 ARM CPU 概述16.1 ARM微處理器的工作狀態(tài) 16.4 ARM異常處理16.5 ARM體系中的存儲系統(tǒng)針慣虎涵朗砂逆咎葬榆垣碟否藹擬言藝卷嗣睬奸狀表態(tài)界癥媽差始蒙隘茹安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教

12、程-ARM系統(tǒng)結(jié)構(gòu)9/26/202212寄存器類別寄存器在匯編中的名稱各模式下實(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_u

13、ndR14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM狀態(tài)各模式下的存放器敷室顆疲樂耽巒鱗輸鴉邢犀念約汾薩傣切銘??晋t賞鉀里撓貫吃罷煤誼安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202213寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7

14、R8(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_fiqSPSR_fiqSPSR_irqSPSR_undSPSR_abtSPSR_abtCPSRR15R14_fiq

15、R14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0所有的37個(gè)存放器,分成兩大類:31個(gè)通用32位存放器;6個(gè)狀態(tài)存放器。執(zhí)誘御點(diǎn)鉆早治槍肥自戈鐳術(shù)礫氈弄告嬌晶敲騾厭上藤驟荊緩票轄育挪戊安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202214寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器

16、和程序計(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_abtSPSR_abtSPSR_und

17、SPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統(tǒng)SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止SPSR_undCPSRR15R14_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義SPSR_irqCPSRR

18、15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷紅哦倒蠅億囪真職縫裝醒軒侗鈕焚鴉豫李治裸曳奪鼎攻句襄綱足漬闡甜蘸安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202215寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R

19、4(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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR1

20、3_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編語言中存放器R0R13為保存數(shù)據(jù)或地址值的通用存放器。它們是完全通用的存放器,不會被體系結(jié)構(gòu)作為特殊用途,并且可用于任何使用通用存放器的指令。晤囚漿搞膠甲精汐障燙歇部策崖老注貨鑰侶潭末盔黃眶喧鋇滴鑼魏羞獲火安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202216寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R

21、1(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_abtSPSR_abtSPSR_undSPSR_irqSPSR_fi

22、qR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的存放器,也就是說對于任何處理器模式,這些存放器都對應(yīng)于相同的32位物理存放器?;蓟朔松踪t咒坍邊葫鋪麻嶼練瞥鈕轍性傘殆肆際吝噴眾拱纜活墾牢苞鈾叉安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202217寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存

23、器和程序計(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_abtSPSR_abtSPSR_un

24、dSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R14為分組存放器。它們所對應(yīng)的物理存放器取決于當(dāng)前的處理器模式,幾乎所有允許使用通用存放器的指令都允許使用分組存放器偶園茫趴捍叮醬橫畸置芍君董芹棗埋庫捶鴦創(chuàng)權(quán)穿事煩咐索冕滁猙琢流姥安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202218寄存器類別寄存器在匯編

25、中的名稱各模式下實(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(PC)R15狀態(tài)寄存器

26、CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R12有兩個(gè)分組的物理存放器。一個(gè)用于除FIQ模式之外的所有存放器模式,另一個(gè)用于FIQ模式。這樣在發(fā)生FIQ中斷后,可以加速FIQ的處理速度。徒紹常淹宴握潞柬掌雷蒼俱錢減戌吾素韭淘床貿(mào)崇栽倪缺坤念魯征柄貼施安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202219寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義

27、中斷快中斷通用寄存器和程序計(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_abtSPSR_a

28、btSPSR_undSPSR_irqSPSR_fiq 存放器R13、R14分別有6個(gè)分組的物理存放器。一個(gè)用于用戶和系統(tǒng)模式,其余5個(gè)分別用于5種異常模式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13拽芋喳稱歡瞅綸夕奢慧芥否蛋離陌掠琵務(wù)瘦無常位拓屠諜績圣畏櫻頑平蠅安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202220寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R

29、0R1(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_abtSPSR_abtSPSR_undSPSR_irqSPSR_

30、fiq 存放器R13常作為堆棧指針SP。在ARM指令集當(dāng)中,沒有以特殊方式使用R13的指令或其它功能,只是習(xí)慣上都這樣使用。但是在Thumb指令集中存在使用R13的指令。臥轎養(yǎng)傀榆漚尊叢璃恃雅油敢州浴酬弟謀悍么強(qiáng)罰奶糊圓嘉擅荒蜀嚎晝丑安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202221寄存器類別寄存器在匯編中的名稱各模式下實(shí)際訪問的寄存器用戶系統(tǒng)管理中止未定義中斷快中斷通用寄存器和程序計(jì)數(shù)器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_f

31、iqR9(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 R14為鏈接存放器LR,在結(jié)構(gòu)上有兩個(gè)特殊功能:在每種模式下,模式自身的R14版本用于保存子程序返回地址;當(dāng)發(fā)生異常時(shí),將R14對

32、應(yīng)的異常模式版本設(shè)置為異常返回地址有些異常有一個(gè)小的固定偏移量。盆讀均懷鞘匝否晝糊彎粟甸警鈉莊吼咕苗薦鰓蠅映凌諷友顫懊拂擾狀劉溉安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202222Lable程序A程序BR14R14存放器與子程序調(diào)用BL Lable地址A?MOV PC,LRR14(地址A)Lable?1.程序A執(zhí)行過程中調(diào)用程序B;操作流程2.程序跳轉(zhuǎn)至標(biāo)號Lable,執(zhí)行程序B。同時(shí)硬件將“BL Lable指令的下一條指令所在地址存入R14;3.程序B執(zhí)行最后,將R14存放器的內(nèi)容放入PC,返回程序A;法或徑亮娟姓貼假軸奶椿羊粗釣耘寧醞懊

33、戮邏層榷跑膏財(cái)虹跨減骨碗秤嚨安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202223R14存放器與異常發(fā)生 異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常效勞程序,對返回地址的處理與子程序調(diào)用類似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移。侯史怔締桂殼速嘉舅巖甸券東處凄樸卉咒做瞳嘿撓覺杠徹壘瑣嚴(yán)趕差學(xué)癡安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202224R14存放器注意要點(diǎn) 當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會發(fā)生沖突。例如:如果用戶在用戶模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶模式存放器不會被破壞

34、。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。獲鄲少那體河酣蝦游紙瑚衙賢奈喻懷您剮偉滋微整山鞏天樟撮濟(jì)拌喊儲碾安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202225R14存放器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AareturnB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq存放器,用戶模式下的R14沒有被破壞;3. IRQ效勞程序

35、A執(zhí)行完畢,將R14_irq存放器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未被破壞婁敖鴉娩夢品尊濤姑烯佐崇屬蘑燥挎鉚呢圾既嫉役撫精遍棗股醒趾聲賢修安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202226R14存放器注意要點(diǎn)R14R14_irq用戶模式下的程序IRQ模式下的程序AaB.XA地址A地址A1.執(zhí)行用戶模式下的程序;2.發(fā)生IRQ中斷,硬件將某個(gè)地址存入IRQ模式下的R14_irq存放器,用戶模式下的R14沒有被破壞;3. IRQ效勞程序A執(zhí)行完畢,將R14_irq存放器的內(nèi)容減去某個(gè)常量后存入PC,返回之前被中斷的程序;未

36、被破壞IRQ模式下的程序BareturnB.XA地址B地址B4. 如果在IRQ處理程序中翻開IRQ中斷,并且再次發(fā)生IRQ中斷,或者調(diào)用子程序;5. 硬件將返回地址保存在R14_irq存放器中,原來保存的返回地址將被覆蓋,造成錯(cuò)誤;被破壞6. 在程序B返回到程序A,然后在返回到用戶模式下被中斷的程序時(shí),發(fā)生錯(cuò)誤,將不能正確返回;returnreturn 解決方法是確保R14的對應(yīng)版本在發(fā)生中斷嵌套時(shí)不再保存任何有意義的值將R14入棧,或者切換到其它處理器模式下。稠婉凱方泵翔餐呢吶賺暫魔燼散荒娠來徘佳亡芹蓑圣廖挺僚冕退殲牌帽班安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-

37、ARM系統(tǒng)結(jié)構(gòu)9/26/202227寄存器類別寄存器在匯編中的名稱各模式下實(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_und

38、R14_irqR14_fiqR15(PC)R15狀態(tài)寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 存放器R15為程序計(jì)數(shù)器PC,它指向正在取指的地址??梢哉J(rèn)為它是一個(gè)通用存放器,但是對于它的使用有許多與指令相關(guān)的限制或特殊情況。如果R15使用的方式超出了這些限制,那么結(jié)果將是不可預(yù)測的。貼掘齋湖獅萍州闌女憾嶄戒簍崔卓榔齲點(diǎn)俗跑仙頹鄧眠垢衣噪掏擒禮百熬安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202228讀R15的限制 正常操作時(shí),從R15讀取的值是處理器正在取指的地址,即當(dāng)前

39、正在執(zhí)行指令的地址加上8個(gè)字節(jié)兩條ARM指令的長度。由于ARM指令總是以字為單位,所以R15存放器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執(zhí)行正在譯碼正在取指流水線狀態(tài)地址程序代碼石鎖你屈禽烈涅洽鞘厘忙廟監(jiān)觸奪瘸廊忘沃隊(duì)鼠喂境洲迸鶴坊掩鼠娠竊霄安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202229讀R15的限制 當(dāng)使用STR或STM指令保存R15時(shí),會有一個(gè)例外。這些指令可能將當(dāng)前指令地址加8字節(jié)或加12字節(jié)保存將來可能還有其它數(shù)字。偏移量是8還是12取決于具體的ARM芯片,但是對于一個(gè)確定的芯片,這個(gè)值是一個(gè)常量。

40、所以最好防止使用STR和STM指令來保存R15,如果很難做到,那么應(yīng)當(dāng)在程序中計(jì)算出該芯片的偏移量。倍穿粉孩惑弛歡陋燙半坤賺黔霍綻齋仇弓瞅氯蹈伎傅際酪船擰摸過莽濟(jì)躇安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202230讀R15的限制計(jì)算偏移量程序代碼:SUBR1,PC,#4;R1=下面STR指令的地址STRPC,R0;保存STR指令地址+偏移量LDRR0,R0;然后重裝SUBR0,R0,R1;計(jì)算偏移量整乃翱梆白拾襪閱旭慮割屁徑營九寵堵扛蓑聯(lián)墓貸嬌赫搏禾臟瞳渴抽流蜜安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系

41、統(tǒng)結(jié)構(gòu)9/26/202231寫R15的限制 正常操作時(shí),寫入R15 的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行相當(dāng)于執(zhí)行一次無條件跳轉(zhuǎn)。 憫茁賄塌爛扎騰亭擲骯弟蟻然夜梧守舷濾緊磺兩庇伍貍苔些擁民斃巍猩風(fēng)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202232寫R15的限制 由于ARM指令以字節(jié)為邊界,因此寫入R15的值最低兩位通常為0b00。具體的規(guī)那么取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址寫入R15的值和0 xFFFFFFFC相與得到;在ARM結(jié)構(gòu)V4版及以

42、上版本中,寫入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測。司洞禱臺槽揚(yáng)薔甜纓配易酥?jǐn)[理島恰醇煙卻繕戒被枯哄霄存鈾蠅榮芬音株安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202233寄存器類別寄存器在匯編中的名稱各模式下實(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)R11

43、R11_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 存放器CPSR為程序狀態(tài)存放器,在異常模式中,另外一個(gè)存放器“程序狀態(tài)保存存放器SPSR可以被訪問。每種異常都有自己的SPSR,在因?yàn)楫惓J录M(jìn)入異常時(shí)它保存CPSR的當(dāng)前值,異常退出時(shí)可通過它恢復(fù)CPSR。詳細(xì)描述參看3.8小節(jié)。

44、憋碳霉灌蓮慨徘紡結(jié)鋇娥催冷癬矮撲喂乖正掛仕奸沖譴漓凡益剎胎詣藍(lán)士安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202234Thumb狀態(tài)存放器 Thumb狀態(tài)存放器集是ARM狀態(tài)集的子集,程序員可以直接訪問的存放器為:8個(gè)通用存放器R0R7;程序計(jì)數(shù)器PC;堆棧指針SP;鏈接存放器LR;有條件訪問程序狀態(tài)存放器 CPSR。氣炕盾旅列賠怕輕弟鵲彰牽騷洋聰詞玄腐澆遍巾溫輻事虜汝壬坎鉸濕獻(xiàn)葫安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202235Thumb狀態(tài)各模式下的存放器CPSRCPSR狀態(tài)寄存器R

45、15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別注意:括號內(nèi)為ATPCS中存放器的命名,可以使用RN匯編偽指令將存放器定義多個(gè)名字。其中ADS1.2的匯編程序直接支持這些名稱,但注意a1a4,v1v4必須用小寫。開釉凳斤秋熒確硯牢流銥涯齲

46、玄聲珠祈吱鮑涪央逢坪篇檸司悼缽謊齋攘忿安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202236Thumb狀態(tài)下的通用存放器CPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱

47、寄存器類別R7R6R5R4R3R2R1R0 在匯編語言中存放器R0R7為保存數(shù)據(jù)或地址值的通用存放器。對于任何處理器模式,它們中的每一個(gè)都對應(yīng)于相同的32為物理存放器。它們是完全通用的存放器,不會被體系結(jié)構(gòu)作為特殊的用途,并且可用于任何使用通用存放器的指令。耀旗昏式呵敞單鋅落冕哼榷王醒丟啃扔允惕戌寂辨糊斬粟術(shù)蟻來每材汁當(dāng)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202237Thumb狀態(tài)下的堆棧指針存放器SPCPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13

48、_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別 堆棧指針SP對應(yīng)ARM狀態(tài)的存放器R13。每個(gè)異常模式都有其自身的SP分組版本,SP通常指向各異常模式所專用的堆棧。 注意:在發(fā)生異常時(shí),處理器自動進(jìn)入ARM狀態(tài)。R13_fiqR13_irqR13_undR13_abtR13_svcR13爸泌的肉藻框潤足種性料瑟典制淌習(xí)跪銻目純胞賺從勤驕濫甲鴕

49、彰們賴咨安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202238Thumb狀態(tài)下的鏈接存放器R14LRCPSRCPSR狀態(tài)寄存器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用寄存器和程序計(jì)數(shù)器快中斷中斷未定義中止管理系統(tǒng)用戶各模式下實(shí)際訪問的寄存器寄存器在匯編中的名稱寄存器類別 鏈接存放

50、器LR對應(yīng)ARM狀態(tài)存放器R14,在結(jié)構(gòu)上有兩個(gè)特殊功能,詳見“ARM狀態(tài)下的鏈接存放器LR。 注意:在發(fā)生異常時(shí),處理器自動進(jìn)入ARM狀態(tài)。R14_fiqR14_irqR14_undR14_abtR14_svcR14沾如督館孿磐瞇字盜逼鼻疫擋彤硯與鐘拂燥隸茶灶憊比礦戶頓烈鈞賽譬虛安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202239ARM狀態(tài)和Thumb狀態(tài)之間存放器的關(guān)系 Thumb狀態(tài)存放器與ARM狀態(tài)存放器有如下的關(guān)系:Thumb狀態(tài)R0R7與ARM狀態(tài)R0R7相同;Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;

51、Thumb狀態(tài)SP映射到ARM狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PCR15。氰銘姬思浴脊模閏犢嘻李饒脆棄竿命汁夠唯純俘棟喊翱界卸金鵑憚衍逆呈安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202240Thumb狀態(tài)存放器在Arm狀態(tài)存放器上的映射R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R0 堆棧指針(R13) 連接寄存器(R14) 程序計(jì)數(shù)器(R15) 低存放器高存放器牧濟(jì)辛川甘紊侍殆識韌屎色纖遞刮興藻束肄毗涉磅纏脆磅墜蒂戲壇橇誹彥安徽理工大學(xué)計(jì)算機(jī)匯編教程

52、-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202241在Thumb狀態(tài)中訪問高存放器 在Thumb狀態(tài)中,高存放器R8R15不是標(biāo)準(zhǔn)存放器集的一局部。匯編語言程序員對它們的訪問受到限制,但可以將它們用于快速暫存。 可以使用MOV、CMP和ADD指令對高存放器操作,詳見第4章。染鎳媳楚騰緒烘癟酵衫迷冀稚高膊脅蛹昏啦繹旋蒲向做靛頒研龔狀茁秩匝安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202242 ARM7TDMI內(nèi)核包含1個(gè)CPSR和5個(gè)供異常處理程序使用的SPSR。CPSR反映了當(dāng)前處理器的狀態(tài),其包含:4個(gè)條件代碼標(biāo)

53、志負(fù)(N)、零(Z)、進(jìn)位(C)和溢出(V) ;2個(gè)中斷禁止位,分別控制一種類型的中斷; 5個(gè)對當(dāng)前處理器模式進(jìn)行編碼的位;1個(gè)用于指示當(dāng)前執(zhí)行指令(ARM還是Thumb)的位。 熊丙祿漣入叛豬末涼牧法九渤尾感優(yōu)播坍眩抿火搐奏床唆這宰藉惠雍墓知安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202243NZCVIM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0條件代碼標(biāo)志保存控制位溢出標(biāo)志進(jìn)位或借位擴(kuò)展零負(fù)或小于IRQ禁止FIQ禁止?fàn)顟B(tài)位模式位NZCVIM0M1M2M3M4TFCPSR存放器的

54、格式援瞞茨喝無擦志懶池鎂撇夢廳頁炊劍英碉翰簿裳怨寧嘻乖而誣配庶腑摩輝安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202244 每個(gè)異常模式還帶有一個(gè)程序狀態(tài)保存存放器 SPSR,它用于保存在異常事件發(fā)生之前的CPSR。CPSR和SPSR通過特殊指令進(jìn)行訪問。詳細(xì)信息請參閱第4章 。注意:如果通過程序修改CPSR存放器中的模式位進(jìn)入異常模式,那么硬件將不會把CPSR保存至SPSR中。程序狀態(tài)存放器激蠻紛出牟甩旱皺鉻種睬焊們痘佐現(xiàn)改瘴蓬限鹿雷滯率巴折翠憫緯靈漓災(zāi)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/

55、26/202245條件代碼標(biāo)志 大多數(shù)“數(shù)值處理指令可以選擇是否影響條件代碼標(biāo)志位。通常如果指令帶S后綴,那么該指令的執(zhí)行會影響條件代碼標(biāo)志;但有一些指令的執(zhí)行總是會影響條件代碼標(biāo)志。 N、 Z、 C和V位都是條件代碼標(biāo)志。通過算術(shù)操作、邏輯操作、MSR或者LDM指令可以對這些位進(jìn)行設(shè)置。所有ARM指令都可按條件來執(zhí)行,而Thumb指令中只有分支指令可按條件執(zhí)行??柡图彺酱昕v跡咒貉鞍灤應(yīng)湯俊罐今鳳燒隊(duì)徽碾茹冤由銹徘貧衫暗勿矮安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202246條件代碼標(biāo)志各標(biāo)志位的含義如下:N 運(yùn)算結(jié)果的最高位反映在該標(biāo)志

56、位。對于有符號二進(jìn)制補(bǔ)碼,結(jié)果為負(fù)數(shù)時(shí)N=1,結(jié)果為正數(shù)或零時(shí)N=0;Z 指令結(jié)果為0時(shí)Z=1通常表示比較結(jié)果“相等,否那么Z=0;菜鐮錳科沛顧樞影帝龍吩帶畸方披紊破童洪巧比峨帆泣琉伯昆匝叫巖酣沿安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202247條件代碼標(biāo)志各標(biāo)志位的含義如下:C 當(dāng)進(jìn)行加法運(yùn)算(包括CMN指令),并且最高位產(chǎn)生進(jìn)位時(shí)C=1,否那么C=0。當(dāng)進(jìn)行減法運(yùn)算(包括CMP 指令),并且最高位產(chǎn)生借位時(shí)C=0,否那么C=1。對于結(jié)合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變; V當(dāng)進(jìn)行加法/減法運(yùn)算,

57、并且發(fā)生有符號溢出時(shí)V=1,否那么V=0,其它指令V通常不變。蛛怨真幽啊躁靠捅慷毅榆斃么諺鴛爾浦啞婦便軸雌淡怠蕪丹府絲紋五原蔓安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202248控制位 CPSR的最低8位為控制位,當(dāng)發(fā)生異常時(shí),這些位被硬件改變。當(dāng)處理器處于一個(gè)特權(quán)模式時(shí),可用軟件操作這些位。 它們分別是:中斷禁止位;T位;模式位。漾割寐吱礬未能玖愁案窄腿倚身漚許汞瞥越那甩學(xué)肯協(xié)比掃蕩便鴿鑄貪捧安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202249控制位中斷禁止位包括I和F位:當(dāng)I位置位時(shí)

58、,IRQ中斷被禁止;當(dāng)F位置位時(shí),F(xiàn)IQ中斷被禁止。T位反映了正在操作的狀態(tài):當(dāng)T位置位時(shí),處理器正在Thumb狀態(tài)下運(yùn)行;當(dāng)T位清零時(shí),處理器正在ARM狀態(tài)下運(yùn)行。絕桌舶陵鉀朋監(jiān)蹦誦維叔刷雕賺揭擻鎳趟乃攙醉斡石烙巫壞咳觀果勾都嶺安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202250控制位模式位包括M4、M3、M2、M1和M0,這些位決定處理器的操作模式。注意:不是所有模式位的組合都定義了有效的處理器模式,如果使用了錯(cuò)誤的設(shè)置,將引起一個(gè)無法恢復(fù)的錯(cuò)誤。英久種曳留惦之君濾捐刮旦拴岡桂題利賒悉遣胎渦皇濕雀武葬迫液黍究柏安徽理工大學(xué)計(jì)算機(jī)匯編教程

59、-ARM系統(tǒng)結(jié)構(gòu)安徽理工大學(xué)計(jì)算機(jī)匯編教程-ARM系統(tǒng)結(jié)構(gòu)9/26/202251M4: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

60、,PC,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 CPSR模式位設(shè)置表飛俊你啡也背梯懈聯(lián)正除襄藍(lán)涎句信輩簡草撒擦益擅

溫馨提示

  • 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

提交評論