新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM微處理器的指令集概述一——ARM應用系統開發詳解筆記

        ARM微處理器的指令集概述一——ARM應用系統開發詳解筆記

        作者: 時間:2016-11-20 來源:網絡 收藏
        ARM微處理器指令集概述

        ARM指令集是加載/存儲型的,就是說指令集僅僅能處理寄存器中的數據,而且處理結果都要放回寄存器中,而對系統存儲器的訪問則需要通過專門的加載/存儲指令來完成。

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

        ARM微處理器的指令集可以分為六大類

        跳轉指令、數據處理指令、程序狀態寄存器(PSR)處理指令、加載/存儲指令、協處理器指令和異常產生指令。

        一 指令的條件域

        當處理器工作在ARM狀態時,幾乎所有的指令均根據CPSR中條件碼的狀態和指令的條件域有條件的執行。當指令的執行條件滿足時,指令被執行,否則指令被忽略。每一條ARM指令包含4位的條件碼,位于指令的最高4位[31:28]。條件碼共有16種,每種條件碼可用兩個字符表示,這兩個字符可以添加在指令助記符的后面和指令同時使用。
        例如,跳轉指令B可以加上后綴EQ變為BEQ表示“相等則跳轉”,即當CPSR中的Z標志置位時發生跳轉。

        在16種條件標志碼中,只有15種可以使用。

        二 ARM 指令的尋址方式

        立即尋址

        立即尋址也叫立即數尋址,這是一種特殊的尋址方式,操作數本身就在指令中給出,只要取出指令也就取到了操作數。

        寄存器尋址

        寄存器尋址就是利用寄存器中的數值作為操作數

        寄存器間接尋址

        寄存器間接尋址就是以寄存器中的值作為操作數的地址,而操作數本身存放在存儲器中。

        基址變址尋址

        基址變址尋址就是將寄存器(該寄存器一般稱作基址寄存器)的內容與指令中給出的地址偏移量相加,從而得到一個操作數的有效地址。變址尋址方式常用于訪問某基地址附近的地址單元。例:

        LDR R0,[R1,#4] ;R0←[R1+4]
        LDR R0,[R1,#4]! ;R0←[R1+4]、R1←R1+4
        LDR R0,[R1] ,#4 ;R0←[R1]、R1←R1+4
        LDR R0,[R1,R2] ;R0←[R1+R2]

        多寄存器尋址

        采用多寄存器尋址方式,一條指令可以完成多個寄存器值的傳送。這種尋址方式可以用一條指令完成傳送最多 16 個通用寄存器的值。例

        LDMIA R0,{R1,R2,R3,R4}
        ;R1←[R0]
        ;R2←[R0+4]
        ;R3←[R0+8]
        ;R4←[R0+12]

        相對尋址

        與基址變址尋址方式相類似,相對尋址以程序計數器 PC 的當前值為基地址,指令中的地址標號作為偏移量,將兩者相加之后得到操作數的有效地址。
        BL NEXT ;跳轉到子程序 NEXT 處執行

        堆棧尋址

        ARM 微處理器支持四種類型的堆棧工作方式,即:
        - 滿遞增堆棧:堆棧指針指向最后壓入的數據,且由低地址向高地址生成。
        - 滿遞減堆棧:堆棧指針指向最后壓入的數據,且由高地址向低地址生成。
        - 空遞增堆棧:堆棧指針指向下一個將要放入數據的空位置,且由低地址向高地址生成。
        - 空遞減堆棧:堆棧指針指向下一個將要放入數據的空位置,且由高地址向低地址生成。



        關鍵詞: ARM微處理器指令

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 万年县| 沈阳市| 桃园县| 上虞市| 临海市| 平乡县| 浏阳市| 甘洛县| 曲沃县| 老河口市| 永年县| 胶南市| 芜湖县| 铅山县| 饶河县| 清流县| 沁水县| 柳河县| 香河县| 玛曲县| 廉江市| 平舆县| 和顺县| 邻水| 调兵山市| 霍州市| 夹江县| 榆社县| 泸水县| 屏南县| 宣化县| 临泉县| 峨山| 涟源市| 馆陶县| 绥滨县| 潍坊市| 定结县| 错那县| 绿春县| 南郑县|