使用 XOR 而不是减法的 x86 比较指令答案

您所在的位置:网站首页 指令fog 使用 XOR 而不是减法的 x86 比较指令答案

使用 XOR 而不是减法的 x86 比较指令答案

#使用 XOR 而不是减法的 x86 比较指令答案| 来源: 网络整理| 查看: 265

XOR、SUB、CMP、TEST 等基本机器操作都非常简单,因此它们的运行速度都非常快。它们还设置相同的条件代码位。从比较相等的角度来看,这些都以相同的方式设置 Z 位;其他位设置不同,因为这些操作计算不同的结果。

对于 x86 CPU,它们的执行时间没有差异,因为它们都使用相同的路径通过芯片。因此,您可以在计算您想要的答案时使用它们中的任何一个而不会造成性能损失。 (从技术上讲,SUB 应该比 XOR 花费更长的时间,因为进位必须“涟漪”通过所有位,而 XOR 是逐位并行的。CPU 设计人员已经找到了构建极快进位计算逻辑的方法,因此有效时间差异并不显着。他们有很大的动机这样做,因为计算机所做的大部分工作都是“添加”])。

作为一种风格约定,如果您认为您正在“比较两个(机器字大小的)值”,您可能应该使用 CMP 指令,因为它将您的想法传达给代码的读者。它的优点是它不会破坏其中一个操作数,一旦您编写了足够的代码,您最终会发现使用它而不是 XOR 是一个非常有说服力的论据。 (TEST 有这个很好的属性,对于检查位也很有用)。

还有其他类型的值比较其他 x86 指令更好:浮点比较、字符串比较、向量寄存器比较等。这些指令花费的时间与基本操作不同,因为它们必须执行更复杂的事情(例如比较多个数据字)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3