<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          ARM 指令集 比較指令

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

          本文引用地址:http://www.ex-cimer.com/article/201611/317555.htm

          CMN : 比較取負的值

          (CompareNegative)

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

          CMP : 比較

          (Compare)

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

          TEQ : 測試等價

          (TestEquivalence)

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

          TST : 測試位

          (Testbits)

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


          關(guān)鍵詞: ARM指令集比較指

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();