新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM寄存器總結

        ARM寄存器總結

        作者: 時間:2016-11-20 來源:網絡 收藏
        ARM有16個32位的寄存器(r0到r15)。

        r15充當程序寄存器PC,r14(link register)存儲子程序的返回地址,r13存儲的是堆棧地址。

        本文引用地址:http://www.104case.com/article/201611/318979.htm

        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的值可能與將返回的地址有一個常數的偏移量。具體的返回方式與子程序返回方式基本相同。



        關鍵詞: ARM寄存器總

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 巴楚县| 淳化县| 永仁县| 岗巴县| 塘沽区| 全椒县| 虞城县| 南丹县| 阿鲁科尔沁旗| 饶河县| 鹤庆县| 连南| 阿合奇县| 邢台市| 黄山市| 农安县| 桦南县| 南和县| 板桥市| 盐边县| 德庆县| 宜州市| 灵山县| 枞阳县| 凉山| 桂阳县| 探索| 于田县| 林州市| 乌拉特前旗| 辉县市| 琼结县| 巴彦县| 梧州市| 基隆市| 肃南| 阿拉善盟| 阳东县| 龙山县| 石棉县| 扎囊县|