处理器如何计算A<乙

时间:2010-10-10 14:10:36

标签: comparison operators bit-manipulation

这可能是我脑海中的一个愚蠢问题,但我想我没有回答这个问题 -

如果A<处理器将如何找到B'事实上还有其他的东西,比如A> B或A == B.

但是如果我们解决了A.

我知道不同的处理器可能有不同的实现,但我想有一些高层次的想法。

使用按位运算符的一些技巧应该这样做,我相信。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

在x86汇编中,CMP指令通常用于比较两个整数。

例如,如果分别在EAX和EBX中有整数,并且执行CMP EAX,EBX,则符号(S)标志和零(Z)标志的值将告诉您哪个数字最大:

EAX > EBX:  Z=0, S=0
EAX == EBX: Z=1, S=0
EAX < EBX:  Z=0, S=1

使用SUB指令可以获得相同的结果,SUB指令也存储目标寄存器中数字之间的差异。

答案 1 :(得分:5)

B中减去A,看看是否设置了N(否定)标记或结果的MSb。

答案 2 :(得分:1)

所有CPU都有ALU。我不会发布维基百科链接,因为你已经足够自己找到了;)但我可以教你一些关于CPU的内部信息。

你基本上需要知道的是所有CPU都有比较指令,即BEQ“Branch-on-Equal”,它用于实现“if”指令并跳转,如果A == B(A&lt还有另一条指令) ; B等)。当CPU读取该指令和操作数时,它将它们加载到两个ALU输入总线中,并设置一个代表比较操作的正确ALU代码。 ALU用于通过硬件比较数字,并在输出端输出正确的结果,或在CPU上设置状态位。

数字的硬件比较很容易,几乎所有的学术学生都曾设计过一个比较(从4到8位,但同样的逻辑适用于32和64),你可以在任何地方找到原理图