您的位置 首页 被动

ARM 指令集 比较指令

译注:CMP和CMP是算术指令,TEQ和TST是逻辑指令。把它们归入一类的原因是它们的S位总是设置的,就是说,它们总是影响标志…

译注:CMP 和 CMP 是算术指令,TEQ 和 TST 是逻辑指令。把它们归入一类的原因是它们的 S 位总是设置的,就是说,它们总是影响标志位。

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。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/276406.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部