新聞中心

        EEPW首頁 > 嵌入式系統 > ARM筆記-寄存器以及模式特點

        ARM筆記-寄存器以及模式特點

        ——
        作者: 時間:2007-04-19 來源: 收藏

        微處理器支持7種運行模式,分別為:
        1.用戶模式(usr):處理器正常的程序執行狀態;
        2.   快速中斷模式(fiq):用于高速數據傳輸或通道管理;
        3.   外部中斷模式(irq):用于通用的中斷處理;
        4.    管理模式(svc):操作系統使用的保護模式;
        5.    數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,用于虛擬存儲及存儲保護;
        6.   系統模式(sys):運行具有特權的操作系統任務;
        7.   未定義指令中止模式(und):當未定義指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真

        體系結構的存儲器格式有如下兩種:
         大端格式:字數據的高字節存儲在低地址中,字數據的低字節存放在高地址中;
         小端格式:與大端存儲格式相反,高地址存放數據的高字節,低地址存放數據的低字節

         ARM總結:
          ARM有16個32位的(r0到r15)。
         r15充當程序PC,r14(link register)存儲子程序的返回地址,r13存儲的是堆棧地址。
        ARM有一個當前程序狀態寄存器:CPSR。
        一些寄存器(r13,r14)在異常發生時會產生新的instances,比如IRQ處理器模式,這時處理器使用r13_irq和r14_irq
         ARM的子程序調用是很快的,因為子程序的返回地址不需要存放在堆棧中。
        1、 ARM處理器共有37個寄存器,其中包括:

        i. 31個通用寄存器,包括程序計數器(PC)在內。都是32位寄存器

        ii. 6個狀態寄存器,都是32位寄存器,但目前只使用了其中12位

        2、 ARM處理器有7種不同的處理器模式,在每一種處理器模式中有一組相應的寄存器組

        。任意時刻(也就是任意的處理器模式下),可見的寄存器包括15個通用寄存器(R0~

        R14)、一個或兩個狀態寄存器及程序計數器(PC)。在所有的寄存器中,有些是各模式

        共用的同一個物理寄存器,有些是各模式自己擁有的獨立的物理寄存器。

        3、 通用寄存器可以分為3類:未備份寄存器(R0~R7)、備份寄存器(R8~R14)和程序

        計數器PC(R15)。對于每一個未備份寄存器來說,在所有的處理器模式下指的都是同一

        個物理寄存器。對應備份寄存器R8~R12來說,每個寄存器對應兩個不同的物理寄存器,

        這使得中斷處理非常簡單。例如,僅僅使用R8~R14寄存器時,FIQ處理程序可以不必執行

        保存和恢復中斷現場的指令,從而使中斷處理過程非常迅速。對于備份寄存器R13和R14

        來說,每個寄存器對應6個不同的物理寄存器,其中的一個是用戶模式和系統模式共用的

        ,另外的5個對應于其他5種處理器模式。

        4、 每一種異常模式擁有自己的物理的R13。應用程序初始化該R13,使其指向該異常模

        式專用的棧地址。當進入異常模式時,可以將需要使用的寄存器保存在R13所指的棧中;

        當退出異常處理程序時,將保存在R13所指的棧中的寄存器值彈出。這樣就使異常處理程

        序不會破壞被其中斷程序的運行現場。

        5、 寄存器R14又被稱為連接寄存器(Link Register,LR),在ARM體系中具有下面兩種

        特殊的作用:

        i. 每一種處理器模式自己的物理R14中存放當前子程序的返回地址。當通過BL或BLX指令

        調用子程序時,R14被設置成該子程序的返回地址。在子程序中,當把R14的值復制到程

        序計數器PC中時,子程序即返回。

        ii. 當異常中斷發生時,該異常模式特定的物理R14被設置成該異常模式將要返回的地址

        ,對于有些異常模式,R14的值可能與將返回的地址有一個常數的偏移量。具體的返回方

        式與子程序返回方式基本相同。

        6、 由于ARM采用了流水線機制,當正確讀取了PC的值時,該值為當前指令地址值加8個

        字節。也就是說,對于ARM指令集來說,PC指向當前指令的下兩條指令的地址,由于ARM

        指令是字節對齊的,PC值得第0位和第1位總為0。

        7、 對于ARM版本3以及更低的版本,寫入R15的地址值的bits[1:0]被忽略,對于ARM版本

        4以及更高的版本,程序必須保證寫入R15寄存器的地址值的bits[1:0]為0b00;否則會產

        生不可預知的結果。對于Thumb指令集來說,指令是半字對齊的。處理器將忽略bit[0]。

        還有一些指令對于R15的用法有一些特殊的要求。比如,指令BX利用bit[0]來確定是ARM

        指令,還是Thumb指令。

        8、 指令mov pc, pc將程序跳轉到當前指令下面第2條指令處執行。類似的指令還有

        add pc, pc, #0

        9、 每一種處理器模式下都有一個專用的物理狀態寄存器,稱為SPSR(備份程序狀態寄

        存器)。當特定的異常中斷發生時,這個寄存器用于存放當前程序狀態寄存器的內容。

        在異常中斷程序退出時,可以用SPSR中保存的值來恢復CPSR。

        10、 由于用戶模式和系統模式不是異常中斷模式,所以它們沒有SPSR。當在用戶模式或

        系統模式中 訪問SPSR,將會產生不可預知的結果。

        塵埃粒子計數器相關文章:塵埃粒子計數器原理


        關鍵詞: ARM 寄存器

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 东乌珠穆沁旗| 托克托县| 湘潭县| 新晃| 滨海县| 洱源县| 冀州市| 繁昌县| 瑞丽市| 麦盖提县| 嘉荫县| 天门市| 烟台市| 公主岭市| 宝山区| 澜沧| 巴楚县| 南川市| 鹤山市| 苏州市| 内丘县| 苗栗市| 保康县| 阿拉善左旗| 资讯 | 浦县| 安顺市| 泰来县| 营口市| 申扎县| 开鲁县| 揭阳市| 巴彦淖尔市| 土默特右旗| 乌兰县| 霸州市| 天台县| 临海市| 惠州市| 徐闻县| 长沙市|