新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ARM 指令集 比較指令

        ARM 指令集 比較指令

        作者: 時間:2016-11-10 來源:網絡 收藏
        譯注:CMP 和 CMP 是算術指令,TEQ 和 TST 是邏輯指令。把它們歸入一類的原因是它們的 S 位總是設置的,就是說,它們總是影響標志位。

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

        CMN : 比較取負的值

        (CompareNegative)

        CMN{條件}{P}  , status = op_1 - (- op_2)
        CMN同于CMP,但它允許你與小負值(操作數 2 的取負的值)進行比較,比如難于用其他方法實現的用于結束列表的 -1。這樣與 -1 比較將使用:
        CMN     R0, #1                  ; 把 R0 與 -1 進行比較
        詳情參照CMP指令。

        CMP : 比較

        (Compare)

        CMP{條件}{P}  , status = op_1 - op_2
        CMP允許把一個寄存器的內容如另一個寄存器的內容或立即值進行比較,更改狀態標志來允許進行條件執行。它進行一次減法,但不存儲結果,而是正確的更改標志。標志表示的是操作數 1 比操作數 2 如何(大小等)。如果操作數 1 大于操作操作數 2,則此后的有 GT 后綴的指令將可以執行。
        明顯的,你不需要顯式的指定S后綴來更改狀態標志... 如果你指定了它則被忽略。

        TEQ : 測試等價

        (TestEquivalence)

        TEQ{條件}{P}  , Status = op_1 EOR op_2
        TEQ類似于TST。區別是這里的概念上的計算是 EOR 而不是 AND。這提供了一種查看兩個操作數是否相同而又不影響進位標志(不象CMP那樣)的方法。加上P后綴的TEQ還可用于改變 R15 中的標志(在 26-bit 模式中)。詳情請參照 psr.html,在 32-bit 模式下如何做請參見這里。

        TST : 測試位

        (Testbits)

        TST{條件}{P}  , Status = op_1 AND op_2
        TST類似于CMP,不產生放置到目的寄存器中的結果。而是在給出的兩個操作數上進行操作并把結果反映到狀態標志上。使用TST來檢查是否設置了特定的位。操作數 1 是要測試的數據字而操作數 2 是一個位掩碼。經過測試后,如果匹配則設置 Zero 標志,否則清除它。象CMP那樣,你不需要指定S后綴。
        TST     R0, #%1                 ; 測試在 R0 中是否設置了位 0。


        關鍵詞: ARM指令集比較指

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 青铜峡市| 平潭县| 凤凰县| 横峰县| 临城县| 文山县| 万源市| 湾仔区| 曲麻莱县| 焦作市| 延庆县| 聂拉木县| 大连市| 噶尔县| 巴彦县| 织金县| 宜昌市| 北宁市| 通许县| 赤水市| 富平县| 尼勒克县| 西林县| 天柱县| SHOW| 罗城| 靖州| 沈阳市| 敦化市| 平舆县| 应城市| 邹城市| 竹溪县| 莱芜市| 松溪县| 海伦市| 高台县| 乳源| 洞口县| 阿巴嘎旗| 砚山县|