我是靠谱客的博主 陶醉铅笔,最近开发中收集的这篇文章主要介绍linux arm tst 命令,ARM 指令集 比较指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

CMN : 比较取负的值

(Compare Negative)

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 : 测试等价

(Test Equivalence)

TEQ{条件}{P} ,

Status = op_1 EOR op_2

TEQ

类似于

TST

。区别是这里的概念上的计算是 EOR 而不是 AND。这提供了一种查看两个操作数是否相同而又不影响进位标志(不象

CMP

那样)的方法。加上

P

后缀的

TEQ

还可用于改变 R15 中的标志(在 26-bit 模式中)。详情请参照 psr.html,在 32-bit 模式下如何做请参见这里。

TST : 测试位

(Test bits)

TST{条件}{P} ,

Status = op_1 AND op_2

TST

类似于

CMP

,不产生放置到目的寄存器中的结果。而是在给出的两个操作数上进行操作并把结果反映到状态标志上。使用

TST

来检查是否设置了特定的位。操作数 1 是要测试的数据字而操作数 2 是一个位掩码。经过测试后,如果匹配则设置 Zero 标志,否则清除它。象

CMP

那样,你不需要指定

S

后缀。

TST R0, #%1 ; 测试在 R0 中是否设置了位 0。

最后

以上就是陶醉铅笔为你收集整理的linux arm tst 命令,ARM 指令集 比较指令的全部内容,希望文章能够帮你解决linux arm tst 命令,ARM 指令集 比较指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部