gpt4 book ai didi

comparison - 如何在程序中执行值相等比较?

转载 作者:行者123 更新时间:2023-12-04 18:59:38 26 4
gpt4 key购买 nike

计算机如何执行值相等比较?它是否从最小的位开始逐位比较值,并在遇到两个不同的位时停止?还是从最高位开始?无论在何处/何时找到两个不同的位,它都会遍历所有位吗?

最佳答案

当您用高级语言(例如 c)编写相等比较时,它将被转换为中间表示,然后转换为特定平台的指令,该代码将在其上执行。编译器可以自由地使用目标架构上可用的任何指令来实现相等比较。这个想法通常是为了让它更快。

不同的架构有不同的指令集。不同的处理器可以有不同的实现策略(再次使事情更快),只要它们符合规范。

下面是几个例子

x86

CMP 命令用于比较两个值。这是 Instruction set reference 的摘录.

Compares the first source operand with the second source operand and sets the status flags in the EFLAGS register according to the results. The comparison is performed by subtracting the second operand from the first operand and then setting the status flags in the same manner as the SUB instruction. When an immediate value is used as an operand, it is sign-extended to the length of the first operand.



这基本上意味着检查所有位。我想它也是以这种方式实现的,以允许非相等(<,>)比较。

所以所有位都被检查。在最简单的情况下,可以连续完成,但可以更快地完成。见 wikibooks on add / subtract blocks .

Add block scheme with carry lookahead

ARM

TEQ 命令可用于测试两个值的相等性。
这是 infocenter.arm.com 的摘录

The TEQ instruction performs a bitwise Exclusive OR operation on the value in Rn and the value of Operand2. This is the same as the EORS instruction, except that it discards the result. Use the TEQ instruction to test if two values are equal without affecting the V or C flags.



再次检查所有位。

关于comparison - 如何在程序中执行值相等比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40947706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com