求教testl指令

发布于 2022-09-29 20:56:26 字数 109 浏览 15 评论 0

一直不明白汇编指令的testl指令,这个指令说是将两个操作数做与来设置零标志位和负数标识,常用的方法是testl %eax,%eax来检查%eax是正数负数还是0,这是怎么实现的啊??两个%eax相与还是本身,怎设置?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

执手闯天涯 2022-10-06 20:56:26

标志位通过结果值来设置.

%eax = %eax & %eax

此刻的回忆 2022-10-06 20:56:26

关键是%eax&%eax就是%eax本身啊
这么做有什么意义吗?

失而复得 2022-10-06 20:56:26

原帖由 semomo 于 2007-7-24 19:57 发表
关键是%eax&%eax就是%eax本身啊
这么做有什么意义吗?

不改变%eax
而通过testl %eax,%eax却可以设置或者清除一些标志,以便实现分支结构。

鹿童谣 2022-10-06 20:56:26

不改变%eax
而通过testl %eax,%eax却可以设置或者清除一些标志,以便实现分支结构。
cjaizss 发表于 2007-07-25 12:31

其实就是对%eax 的性质做一个判断,比如它是正是负是零啊。

test语句是根据上次计算结果的性质设置相应的状态码(condition code),而testl %eax,%eax的结果就是%eax,于是就针对%eax值的属性设置状态码,例如上面说到的是正是负还是零

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文