安徽理工大學計機匯編教程ARM系統結構ppt課件_第1頁
安徽理工大學計機匯編教程ARM系統結構ppt課件_第2頁
安徽理工大學計機匯編教程ARM系統結構ppt課件_第3頁
安徽理工大學計機匯編教程ARM系統結構ppt課件_第4頁
安徽理工大學計機匯編教程ARM系統結構ppt課件_第5頁
已閱讀5頁,還剩57頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 計算機科學與技術系計算機科學與技術系 8086/80888086/8088和和ARMARM核核匯編言語程序設計匯編言語程序設計 計算機科學與技術系計算機科學與技術系 16.2 ARM16.2 ARM微處置器的任務方式微處置器的任務方式 16.3 ARM16.3 ARM微處置器的存放器組織微處置器的存放器組織16.1 ARM16.1 ARM微處置器的任務形狀微處置器的任務形狀 16.4 ARM16.4 ARM異常處置異常處置16.5 ARM16.5 ARM體系中的存儲系統體系中的存儲系統 計算機科學與技術系計算機科學與技術系 ARM處置器支持以下數據類型:字節 8位半字 16位必需分配為占用兩

2、個字節字 32為必需分配為占用4各字節1112342 計算機科學與技術系計算機科學與技術系 ARMARM處置器有兩種操作形狀:處置器有兩種操作形狀:ARMARM形狀:形狀:3232位,這種形狀下執行的是字方式的位,這種形狀下執行的是字方式的ARMARM指令;指令;ThumbThumb形狀:形狀:1616位,這種形狀下執行半字方式的位,這種形狀下執行半字方式的ThumbThumb指令。指令。16.1 ARM16.1 ARM微處置器的任務形狀微處置器的任務形狀 留意:兩個形狀之間的切換并不影響處置器方式或存放器內容。 計算機科學與技術系計算機科學與技術系 處置器形狀的切換 運用BX指令將ARM7T

3、DMI內核的操作形狀在ARM形狀和Thumb形狀之間進展切換。;從Arm形狀切換到Thumb形狀 LDR R0,=Lable+1 BX R0;從Thumb形狀切換到ARM形狀 LDR R0,=Lable BX R0地址最低位為1,表示切換到Thumb形狀地址最低位為0,表示切換到ARM形狀跳轉地址標號 計算機科學與技術系計算機科學與技術系 16.2 ARM16.2 ARM微處置器的任務方式微處置器的任務方式 16.3 ARM16.3 ARM微處置器的存放器組織微處置器的存放器組織16.1 ARM16.1 ARM微處置器的任務形狀微處置器的任務形狀 16.4 ARM16.4 ARM異常處置異常處

4、置16.5 ARM16.5 ARM體系中的存儲系統體系中的存儲系統 計算機科學與技術系計算機科學與技術系 16.2 ARM16.2 ARM微處置器的任務方式微處置器的任務方式 ARM體系構造支持7種處置器方式,分別為:用戶方式、快中斷方式、中斷方式、管理方式、中止方式、未定義方式和系統方式,如下表所示。這樣的益處是可以更好的支持操作系統并提高任務效率。ARM7TDMI完全支持這七種方式。 計算機科學與技術系計算機科學與技術系 16.2 ARM16.2 ARM微處置器的任務方式微處置器的任務方式 處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統 (sys)用于支持

5、操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權 快中斷 (fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應時進入此模式 管理 (svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式 中止 (abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處 未定義 (und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式 計算機科學與技術系計算機科學與技術系 特權方式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統 (sys)用于支持操作系統的特權任務等與用戶模

6、式類似,但具有可以直接切換到其它模式等特權 快中斷 (fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應時進入此模式 管理 (svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式 中止 (abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處 未定義 (und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式 除用戶方式外,其它方式均為特權方式。ARM內部存放器和一些片內外設在硬件設計上只允許或者可選為只允許特權方式下訪問。此外,特權方式可以自在的切換處置器方式,而用戶方式不能直接切換到別的方式。 未定義 (

7、und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 系統 (sys) 計算機科學與技術系計算機科學與技術系 異常方式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統 (sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權 快中斷 (fiq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應時進入此模式 管理 (svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式 中止 (abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處 未

8、定義 (und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式 未定義 (und) 中止 (abt) 管理 (svc) 中斷 (irq) 快中斷 (fiq) 這五種方式稱為異常方式。它們除了可以經過程序切換進入外,也可以由特定的異常進入。當特定的異常出現時,處置器進入相應的方式。每種異常方式都有一些獨立的存放器,以防止異常退出時用戶方式的形狀不可靠。 計算機科學與技術系計算機科學與技術系 用戶和系統方式處理器模式說明備注 用戶 (usr)正常程序工作模式不能直接切換到其它模式 系統 (sys)用于支持操作系統的特權任務等與用戶模式類似,但具有可以直接切換到其它模式等特權 快中斷 (f

9、iq)支持高速數據傳輸及通道處理FIQ異常響應時進入此模式 中斷 (irq)用于通用中斷處理IRQ異常響應時進入此模式 管理 (svc)操作系統保護代碼系統復位和軟件中斷響應時進入此模式 中止 (abt)用于支持虛擬內存和/或存儲器保護在ARM7TDMI沒有大用處 未定義 (und)支持硬件協處理器的軟件仿真未定義指令異常響應時進入此模式 這兩種方式都不能由異常進入,而且它們運用完全一樣的存放器組。 系統方式是特權方式,不受用戶方式的限制。操作系統在該方式下訪問用戶方式的存放器就比較方便,而且操作系統的一些特權義務可以運用這個方式訪問一些受控的資源。 系統 (sys) 用戶 (usr) 計算機

10、科學與技術系計算機科學與技術系 16.2 ARM16.2 ARM微處置器的任務方式微處置器的任務方式 16.3 ARM16.3 ARM微處置器的存放器組織微處置器的存放器組織16.1 ARM16.1 ARM微處置器的任務形狀微處置器的任務形狀 16.4 ARM16.4 ARM異常處置異常處置16.5 ARM16.5 ARM體系中的存儲系統體系中的存儲系統 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5

11、R6(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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqARM形狀各方式下的存放器 計算機科學與技術系計算機科學與技術系 寄存器類別

12、寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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)R1

13、5狀態寄存器CPSRCPSRSPSR無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個存放器,分成兩大類:31個通用32位存放器;6個形狀存放器。 計算機科學與技術系計算機科學與技術系

14、寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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(

15、PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0用戶用戶無CPSRR15R14R13R12R11R10R9R8R7R6R5R4R3R2R1R0系統系統SPSR_abtCPSRR15R14_svcR13_svcR12R11R10R9R8R7R6R5R4R3R2R1R0管理管理SPSR_abtCPSRR15R14_abtR13_abtR12R11R10R9R8R7R6R5R4R3R2R1R0中止中止SPSR_undCPSRR15R14

16、_undR13_undR12R11R10R9R8R7R6R5R4R3R2R1R0未定義未定義SPSR_irqCPSRR15R14_irqR13_irqR12R11R10R9R8R7R6R5R4R3R2R1R0中斷中斷SPSR_fiqCPSRR15R14_fiqR13_fiqR12_fiqR11_fiqR10_fiqR9_fiqR8_fiqR7R6R5R4R3R2R1R0快中斷快中斷 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4

17、(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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13

18、_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0 在匯編言語中存放器R0R13為保管數據或地址值的通用存放器。它們是完全通用的存放器,不會被體系構造作為特殊用途,并且可用于任何運用通用存放器的指令。 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_

19、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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiq

20、R10R9_fiqR9R8_fiqR8R7R6R5R4R3R2R1R0R7R6R5R4R3R2R1R0 其中R0R7為未分組的存放器,也就是說對于任何處置器方式,這些存放器都對應于一樣的32位物理存放器。 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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

21、)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13R12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9

22、R8_fiqR8 存放器R8R14為分組存放器。它們所對應的物理存放器取決于當前的處置器方式,幾乎一切允許運用通用存放器的指令都允許運用分組存放器 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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_fiqR

23、13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiqR12_fiqR12R11_fiqR11R10_fiqR10R9_fiqR9R8_fiqR8 存放器R8R12有兩個分組的物理存放器。一個用于除FIQ方式之外的一切存放器方式,另一個用于FIQ方式。這樣在發生FIQ中斷后,可以加速FIQ的處置速度。 計算機科學與技術系計算機科學與技術系

24、 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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

25、(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 存放器R13、R14分別有6個分組的物理存放器。一個用于用戶和系統方式,其他5個分別用于5種異常方式。R14_fiqR14_irqR14_undR14_abtR14_svcR14R13_fiqR13_irqR13_undR13_abtR13_svcR13 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R

26、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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 存放器R13常作為堆棧指針SP。在ARM指令

27、集當中,沒有以特殊方式運用R13的指令或其它功能,只是習慣上都這樣運用。但是在Thumb指令集中存在運用R13的指令。 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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_s

28、vcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq R14為鏈接存放器LR,在構造上有兩個特殊功能:在每種方式下,方式本身的R14版本用于保管子程序前往地址;當發生異常時,將R14對應的異常方式版本設置為異常前往地址有些異常有一個小的固定偏移量。 計算機科學與技術系計算機科學與技術系 Lable程序A程序BR14 R14存放器與子程序調用BL Lable地址A?

29、MOV PC,LRR14(地址A)Lable?1.程序A執行過程中調用程序B;操作流程2.程序跳轉至標號Lable,執行程序B。同時硬件將“BL Lable指令的下一條指令所在地址存入R14;3.程序B執行最后,將R14存放器的內容放入PC,前往程序A; 計算機科學與技術系計算機科學與技術系 R14存放器與異常發生 異常發生時,程序要跳轉至異常效力程序,對前往地址的處置與子程序調用類似,都是由硬件完成的。區別在于有些異常有一個小常量的偏移。 計算機科學與技術系計算機科學與技術系 R14存放器留意要點 當發生異常嵌套時,這些異常之間能夠會發生沖突。例如:假設用戶在用戶方式下執行程序時發生了IRQ

30、中斷,用戶方式存放器不會被破壞。但是假設允許在IRQ方式下的中斷處置程序重新使能IRQ中斷,并且發生了嵌套的IRQ中斷時,外部中斷處置程序保管在R14_irq中的任何值都將被嵌套中斷的前往地址所覆蓋。 計算機科學與技術系計算機科學與技術系 R14存放器留意要點R14R14_irq用戶方式下的程序IRQ方式下的程序AareturnB.XA地址A地址A1.執行用戶方式下的程序;2.發生IRQ中斷,硬件將某個地址存入IRQ方式下的R14_irq存放器,用戶方式下的R14沒有被破壞;3. IRQ效力程序A執行終了,將R14_irq存放器的內容減去某個常量后存入PC,前往之前被中斷的程序;未被破壞 計算

31、機科學與技術系計算機科學與技術系 R14存放器留意要點R14R14_irq用戶方式下的程序IRQ方式下的程序AaB.XA地址A地址A1.執行用戶方式下的程序;2.發生IRQ中斷,硬件將某個地址存入IRQ方式下的R14_irq存放器,用戶方式下的R14沒有被破壞;3. IRQ效力程序A執行終了,將R14_irq存放器的內容減去某個常量后存入PC,前往之前被中斷的程序;未被破壞IRQ方式下的程序BareturnB.XA地址B地址B4. 假設在IRQ處置程序中翻開IRQ中斷,并且再次發生IRQ中斷,或者調用子程序;5. 硬件將前往地址保管在R14_irq存放器中,原來保管的前往地址將被覆蓋,呵斥錯誤

32、;被破壞6. 在程序B前往到程序A,然后在前往到用戶方式下被中斷的程序時,發生錯誤,將不能正確前往;returnreturn 處理方法是確保R14的對應版本在發生中斷嵌套時不再保管任何有意義的值將R14入棧,或者切換到其它處置器方式下。 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器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)R10

33、R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiqR15(PC)R15狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 存放器R15為程序計數器PC,它指向正在取指的地址??梢砸詾樗且粋€通用存放器,但是對于它的運用有許多與指令相關的限制或特殊情況。假設R15運用的方式超出了這些限制,那么結果將是不可預測的。 計

34、算機科學與技術系計算機科學與技術系 讀R15的限制 正常操作時,從R15讀取的值是處置器正在取指的地址,即當前正在執行指令的地址加上8個字節兩條ARM指令的長度。由于ARM指令總是以字為單位,所以R15存放器的最低兩位總是為0。LDR R0,PC?PCPC-4PC-8正在執行正在譯碼正在取指流水線形狀地址程序代碼 計算機科學與技術系計算機科學與技術系 讀R15的限制 當運用STR或STM指令保管R15時,會有一個例外。這些指令能夠將當前指令地址加8字節或加12字節保管未來能夠還有其它數字。偏移量是8還是12取決于詳細的ARM芯片,但是對于一個確定的芯片,這個值是一個常量。 所以最好防止運用ST

35、R和STM指令來保管R15,假設很難做到,那么該當在程序中計算出該芯片的偏移量。 計算機科學與技術系計算機科學與技術系 讀R15的限制計算偏移量程序代碼:SUBR1,PC,#4;R1=下面STR指令的地址STRPC,R0;保管STR指令地址+偏移量LDRR0,R0;然后重裝SUBR0,R0,R1;計算偏移量 計算機科學與技術系計算機科學與技術系 寫R15的限制 正常操作時,寫入R15 的值被當作一個指令地址,程序從這個地址處繼續執行相當于執行一次無條件跳轉。 計算機科學與技術系計算機科學與技術系 寫R15的限制 由于ARM指令以字節為邊境,因此寫入R15的值最低兩位通常為0b00。詳細的規那么

36、取決于內核構造的版本:在ARM構造V3版及以下版本中,寫入R15的值的最低兩位被忽略,因此跳轉地址由指令的實踐目的地址寫入R15的值和0 xFFFFFFFC相與得到;在ARM構造V4版及以上版本中,寫入R15的值的最低兩位為0,假設不是,結果將不可預測。 計算機科學與技術系計算機科學與技術系 寄存器類別寄存器在匯編中的名稱各模式下實際訪問的寄存器用戶系統管理中止未定義中斷快中斷通用寄存器和程序計數器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10(

37、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狀態寄存器CPSRCPSRSPSR無SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 存放器CPSR為程序形狀存放器,在異常方式中,另外一個存放器“程序形狀保管存放器SPSR可以被訪問。每種異常都有本人的SPSR,在由于異常事件而進入異常時它保管CPSR的當前值

38、,異常退出時可經過它恢復CPSR。詳細描畫參看3.8小節。 計算機科學與技術系計算機科學與技術系 Thumb形狀存放器 Thumb形狀存放器集是ARM形狀集的子集,程序員可以直接訪問的存放器為:8個通用存放器R0R7;程序計數器PC;堆棧指針SP;鏈接存放器LR;有條件訪問程序形狀存放器 CPSR。 計算機科學與技術系計算機科學與技術系 Thumb形狀各方式下的存放器CPSRCPSR形狀存放器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v

39、3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用存放器和程序計數器快中斷中斷未定義中止管理系統用戶各方式下實踐訪問的存放器存放器在匯編中的稱號存放器類別留意:括號內為ATPCS中存放器的命名,可以運用RN匯編偽指令將存放器定義多個名字。其中ADS1.2的匯編程序直接支持這些稱號,但留意a1a4,v1v4必需用小寫。 計算機科學與技術系計算機科學與技術系 Thumb形狀下的通用存放器CPSRCPSR形狀存放器R15PCR14_fiqR14_irqR14_undR14_abtR14_svcR14LRR13_fiqR13_irqR13_undR

40、13_abtR13_svcR13SPR7R7(v4,wr)R6R6(v3)R5R5(v2)R4R4(v1)R3R3(a4)R2R2(a3)R1R1(a2)R0R0(a1)通用存放器和程序計數器快中斷中斷未定義中止管理系統用戶各方式下實踐訪問的存放器存放器在匯編中的稱號存放器類別R7R6R5R4R3R2R1R0 在匯編言語中存放器R0R7為保管數據或地址值的通用存放器。對于任何處置器方式,它們中的每一個都對應于一樣的32為物理存放器。它們是完全通用的存放器,不會被體系構造作為特殊的用途,并且可用于任何運用通用存放器的指令。 計算機科學與技術系計算機科學與技術系 Thumb形狀下的堆棧指針存放器S

41、PCPSRCPSR形狀存放器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)通用存放器和程序計數器快中斷中斷未定義中止管理系統用戶各方式下實踐訪問的存放器存放器在匯編中的稱號存放器類別 堆棧指針SP對應ARM形狀的存放器R13。每個異常方式都有其本身的SP分組版本,SP通常指向各異常方式所公用的堆棧。 留意:在發生異常時,處置器自動進入ARM

42、形狀。R13_fiqR13_irqR13_undR13_abtR13_svcR13 計算機科學與技術系計算機科學與技術系 Thumb形狀下的鏈接存放器R14LRCPSRCPSR形狀存放器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)通用存放器和程序計數器快中斷中斷未定義中止管理系統用戶各方式下實踐訪問的存放器存放器在匯編中的稱號存放器類別

43、鏈接存放器LR對應ARM形狀存放器R14,在構造上有兩個特殊功能,詳見“ARM形狀下的鏈接存放器LR。 留意:在發生異常時,處置器自動進入ARM形狀。R14_fiqR14_irqR14_undR14_abtR14_svcR14 計算機科學與技術系計算機科學與技術系 ARM形狀和Thumb形狀之間存放器的關系 Thumb形狀存放器與ARM形狀存放器有如下的關系:Thumb形狀R0R7與ARM形狀R0R7一樣;Thumb形狀CPSR和SPSR與ARM形狀CPSR和SPSR一樣;Thumb形狀SP映射到ARM形狀R13;Thumb形狀LR映射到ARM形狀R14;Thumb形狀PC映射到ARM形狀PC

44、R15。 計算機科學與技術系計算機科學與技術系 R1 R2 R3 R4 R5 T humb R6 R7 ( C PSR ) ( SPSR ) R1 R2 R3 R4 R5 A R M R6 R7 R8 ( C PSR ) ( SPSR ) R9 R10 R11 R12 R0 R0 狀態 狀態 堆棧指針(SP) 連接寄存器(LR) 程序計數器(PC) 當前程序狀態寄存器 被保存程序狀態寄存器 堆棧指針(R13) 連接寄存器(R14) 程序計數器(R15) 當前程序狀態寄存器 被保存程序狀態寄存器 Thumb形狀存放器在Arm形狀存放器上的映射R1 R2 R3 R4 R5 R6 R7 R8 R9

45、R10 R11 R12 R0 堆棧指針 (R13) 銜接存放器 (R14) 程序計數器 (R15) 低存放器高存放器 計算機科學與技術系計算機科學與技術系 在Thumb形狀中訪問高存放器 在Thumb形狀中,高存放器R8R15不是規范存放器集的一部分。匯編言語程序員對它們的訪問遭到限制,但可以將它們用于快速暫存。 可以運用MOV、CMP和ADD指令對高存放器操作,詳見第4章。 計算機科學與技術系計算機科學與技術系 ARM7TDMI內核包含1個CPSR和5個供異常處置程序運用的SPSR。CPSR反映了當前處置器的形狀,其包含:4個條件代碼標志負(N)、零(Z)、進位(C)和溢出(V) ;2個中斷

46、制止位,分別控制一種類型的中斷; 5個對當前處置器方式進展編碼的位;1個用于指示當前執行指令(ARM還是Thumb)的位。 計算機科學與技術系計算機科學與技術系 NZCV IM0M1M2M3M4TF. . .31 30 29 28 27 26 8 7 6 5 4 3 2 1 0條件代碼標志保管控制位溢出標志進位或借位擴展零負或小于IRQ制止FIQ制止形狀位方式位NZCVIM0M1M2M3M4TFCPSR存放器的格式 計算機科學與技術系計算機科學與技術系 每個異常方式還帶有一個程序形狀保管存放器 SPSR,它用于保管在異常事件發生之前的CPSR。CPSR和SPSR經過特殊指令進展訪問。詳細信息請

47、參閱第4章 。留意:假設經過程序修正CPSR存放器中的方式位進入異常方式,那么硬件將不會把CPSR保管至SPSR中。 計算機科學與技術系計算機科學與技術系 條件代碼標志 大多數“數值處置指令可以選擇能否影響條件代碼標志位。通常假設指令帶S后綴,那么該指令的執行會影響條件代碼標志;但有一些指令的執行總是會影響條件代碼標志。 N、 Z、 C和V位都是條件代碼標志。經過算術操作、邏輯操作、MSR或者LDM指令可以對這些位進展設置。一切ARM指令都可按條件來執行,而Thumb指令中只需分支指令可按條件執行。 計算機科學與技術系計算機科學與技術系 條件代碼標志各標志位的含義如下:N 運算結果的最高位反映

48、在該標志位。對于有符號二進制補碼,結果為負數時N=1,結果為正數或零時N=0;Z 指令結果為0時Z=1通常表示比較結果“相等,否那么Z=0; 計算機科學與技術系計算機科學與技術系 條件代碼標志各標志位的含義如下:C 當進展加法運算(包括CMN指令),并且最高位產生進位時C=1,否那么C=0。當進展減法運算(包括CMP 指令),并且最高位產生借位時C=0,否那么C=1。對于結合移位操作的非加法/減法指令,C為從最高位最后移出的值,其它指令C通常不變; V當進展加法/減法運算,并且發生有符號溢出時V=1,否那么V=0,其它指令V通常不變。 計算機科學與技術系計算機科學與技術系 控制位 CPSR的最

49、低8位為控制位,當發生異常時,這些位被硬件改動。當處置器處于一個特權方式時,可用軟件操作這些位。 它們分別是:中斷制止位;T位;方式位。 計算機科學與技術系計算機科學與技術系 控制位中斷制止位包括I和F位:當I位置位時,IRQ中斷被制止;當F位置位時,FIQ中斷被制止。T位反映了正在操作的形狀:當T位置位時,處置器正在Thumb形狀下運轉;當T位清零時,處置器正在ARM形狀下運轉。 計算機科學與技術系計算機科學與技術系 控制位方式位包括M4、M3、M2、M1和M0,這些位決議處置器的操作方式。留意:不是一切方式位的組合都定義了有效的處置器方式,假設運用了錯誤的設置,將引起一個無法恢復的錯誤。

50、計算機科學與技術系計算機科學與技術系 M4:0模式可見的Thumb狀態寄存器可見的ARM狀態寄存器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,PC,CPSR, SPSR_svc R0

51、R12,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系統R0R7,SP,LR,PC,CPSR R0R14,PC, CPSR CPSR方式位設置表 計算機科學與技術系計算機科學與技術系 保管位 CPSR中的保管位被保管未來運用。為了提

52、高程序的可移植性,當改動CPSR標志和控制位時,請不要改動這些保管位。另外,請確保您程序的運轉不受保管位的值影響,由于未來的處置器能夠會將這些位設置為1或者0。 計算機科學與技術系計算機科學與技術系 16.2 ARM16.2 ARM微處置器的任務方式微處置器的任務方式 16.3 ARM16.3 ARM微處置器的存放器組織微處置器的存放器組織16.1 ARM16.1 ARM微處置器的任務形狀微處置器的任務形狀 16.4 ARM16.4 ARM異常處置異常處置16.5 ARM16.5 ARM體系中的存儲系統體系中的存儲系統 計算機科學與技術系計算機科學與技術系 16.4 ARM16.4 ARM異常處置異常處置 只需正常的程序流被暫時中止,處置器就進入異常方式。例如呼應一個來自外設的中斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論