新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Thumb指令集之:Thumb數據處理指令

        Thumb指令集之:Thumb數據處理指令

        作者: 時間:2013-09-30 來源:網絡 收藏

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

        11.4.16比較指令CMP(3)

        (1)編碼格式

        比較指令CMP(3)的編碼格式如圖11.22所示。

        圖11.22CMP(3)指令的編碼格式

        比較指令CMP(3)將兩個寄存器的值做比較,其中一個寄存器為r8~r14或PC寄存器高16位。并根據比較結果更新程序狀態寄存器的標志位。程序中比較指令后通常跟條件執行指令,實現指令的分支跳轉。

        (2)指令的語法格式

        CMPRn>,Rm>

        ①Rn>

        操作數寄存器。保存將要進行比較的第一個操作數,其取值可以為r0~r15的任意寄存器。

        ②Rm>

        操作數寄存器。保存將要進行比較的第二個操作數,其取值可以為r0~r15的任意寄存器。

        (3)指令操作的偽代碼

        alu_out=Rn–Rm

        NFlag=alu_out[31]

        ZFlag=ifalu_out==0then1else0

        CFlag=NOTBorrowFrom(Rn-Rm)

        VFlag=OverflowFrom(Rn-Rm)

        注意

        指令操作數寄存器Rn>和Rm>中,至少有一個寄存器為r8~r14或PC寄存器的高16位,否則,指令的執行結果不可預知。

        (4)對應的指令

        CMPRn>,Rm>

        11.4.17異或指令EOR

        (1)編碼格式

        比較指令EOR的編碼格式如圖11.23所示。

        圖11.23EOR指令的編碼格式

        EOR指令將兩個寄存器中的數值按位執行“異或”操作,并根據指令的執行結果更新程序狀態寄存器的標志位。

        (2)指令的語法格式

        EORRn>,Rm>

        ①Rn>

        操作數寄存器。同時保存指令的第一個操作數和指令的執行結果。

        ②Rm>

        操作數寄存器。保存將要進行比較的第二個操作數。

        (3)指令操作的偽代碼

        Rd=RdORRm

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        CFlag=unaffected

        VFlag=unaffected

        (4)對應的指令

        EORSRd>,Rd>,Rm>

        11.4.18邏輯左移指令LSL(1)

        (1)編碼格式

        邏輯左移指令LSL(1)的編碼格式如圖11.24所示。

        圖11.24LSL(1)指令的編碼格式

        邏輯左移指令LSL(1)可以實現以2為底的冪的乘法。進行移位后空出的位添0。

        (2)指令的語法格式

        LSLRd>,Rm>,#immed_5>

        ①Rd>

        目的寄存器。存儲指令的操作結果。

        ②Rm>

        操作數寄存器。該寄存器保存的數據將進行左移操作。

        ③immed_5>

        邏輯左移位數,范圍為0~31。

        (3)指令操作的偽代碼

        ifimmed_5==0

        CFlag=unaffected

        Rd=Rm

        Else/*immed_5>0*/

        CFlag=Rm[32–immed_5]

        Rd=Rmlogical_shift_leftimmed_5

        NFlag=Rd[31]

        ZFlag=ifRd==0then1else0

        VFlag=unaffected

        (4)對應的指令

        MOVSRd>,Rm>,LSL#immed_5>



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延长县| 长春市| 新巴尔虎右旗| 平塘县| 咸宁市| 太保市| 南开区| 贡山| 西畴县| 桂平市| 大石桥市| 长海县| 遵义县| 德清县| 康乐县| 阳谷县| 铜川市| 抚远县| 定日县| 陵川县| 新丰县| 昌图县| 柳州市| 白玉县| 昌江| 乳源| 武强县| 霍州市| 温州市| 牡丹江市| 平度市| 江门市| 沂南县| 新干县| 无为县| 永宁县| 万山特区| 胶州市| 左权县| 雷山县| 桐乡市|