新聞中心

        EEPW首頁(yè) > ARM指令中的條件代碼

        ARM指令中的條件代碼

        ——
        作者: 時(shí)間:2007-05-10 來(lái)源: 收藏

        指令集中所有指令都是可以帶條件執(zhí)行的。下面是條件的列表:

        EQ : 等于
        如果一次比較之后設(shè)置了 Z 標(biāo)志。
         
        NE : 不等于
        如果一次比較之后清除了 Z 標(biāo)志。
         
        VS : 溢出設(shè)置
        如果在一次算術(shù)操作之后設(shè)置了 V 標(biāo)志,計(jì)算的結(jié)果不適合放入一個(gè) 32bit 目標(biāo)寄存器中。
         
        VC : 溢出清除
        如果清除了 V 標(biāo)志,與 VS 相反。
         
        HI : 高于(無(wú)符號(hào))
        如果一次比較之后設(shè)置了 C 標(biāo)志并清除了 Z 標(biāo)志。
         
        LS : 低于或同于(無(wú)符號(hào))
        如果一次比較操作之后清除了 C 標(biāo)志或設(shè)置了 Z 標(biāo)志。
         
        PL : 正號(hào)
        如果一次算術(shù)操作之后清除了 N。出于定義‘正號(hào)’的目的,零是正數(shù)的原因是它不是負(fù)數(shù)...
         
        MI : 負(fù)號(hào)
        如果一次算術(shù)操作之后設(shè)置了 N 標(biāo)志。
         
        CS : 進(jìn)位設(shè)置
        如果一次算術(shù)操作或移位操作之后設(shè)置了 C 標(biāo)志,操作的結(jié)果不能表示為 32bit。你可以把 C 標(biāo)志當(dāng)作結(jié)果的第 33 位。
         
        CC : 進(jìn)位清除
        與 CS 相反。
         
        GE : 大于或等于(有符號(hào))
        如果一次比較之后...
        設(shè)置了 N 標(biāo)志并設(shè)置了 V 標(biāo)志
        或者...
        清除了 N 標(biāo)志并清除了 V 標(biāo)志。
         
        GT : 大于(有符號(hào))
        如果一次比較之后...
        設(shè)置了 N 標(biāo)志并設(shè)置了 V 標(biāo)志
        或者...
        清除了 N 標(biāo)志并清除了 V 標(biāo)志
        并且...
        清除了 Z 標(biāo)志。
         
        LE : 小于或等于(有符號(hào))
        如果一次比較之后...
        設(shè)置了 N 標(biāo)志并清除了 V 標(biāo)志
        或者...
        清除了 N 標(biāo)志并設(shè)置了 V 標(biāo)志
        并且...
        設(shè)置了 Z 標(biāo)志。
         
        LT : 小于(有符號(hào))
        如果一次比較之后...
        設(shè)置了 N 標(biāo)志并清除了 V 標(biāo)志。
        或者...
        清除了 N 標(biāo)志并設(shè)置了 V 標(biāo)志。
         
        AL : 總是
        缺省條件,所以不用明顯聲明。
         
        NV : 從不
        不是特別有用,它表示應(yīng)當(dāng)永遠(yuǎn)不執(zhí)行這個(gè)指令。相當(dāng)于NOP。包含 NV 是為了完整性(與 AL 相對(duì)),不推薦在中使用它。
         
        S:
        還有一個(gè)條件是S,它表示執(zhí)行操作后,接著把SPSR的內(nèi)容恢復(fù)到CPSR中。例如:

          ADD     R0, R0, R1

          ADDS    R0, R0, R1

          ADDEQS  R0, R0, R1

        第一個(gè)例子是一個(gè)基本的加法(把 R1 的值增加到 R0),它不影響狀態(tài)寄存器。
        第二個(gè)例子是同一個(gè)加法,只不過(guò)它導(dǎo)致更改狀態(tài)寄存器。
        最后一個(gè)例子是同一個(gè)加法,更改狀態(tài)寄存器。不同在于它是一個(gè)有條件的指令。只有前一個(gè)操作的結(jié)果是 EQ (如果設(shè)置了 Z 標(biāo)志)的時(shí)候它才執(zhí)行。



        關(guān)鍵詞: ARM 代碼

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 昂仁县| 灵丘县| 承德县| 中江县| 双柏县| 新平| 莒南县| 丹凤县| 新巴尔虎右旗| 洪雅县| 龙陵县| 德昌县| 河源市| 江阴市| 东阳市| 抚顺县| 藁城市| 墨江| 韶关市| 临江市| 东乡族自治县| 武邑县| 桂平市| 禄劝| 厦门市| 南和县| 宣恩县| 富川| 济源市| 特克斯县| 山东省| 贺州市| 博客| 葫芦岛市| 都兰县| 宜君县| 女性| 扎兰屯市| 湖口县| 如东县| 蛟河市|