内部工作大于/小于

时间:2010-11-28 13:08:58

标签: c compiler-construction

我只是想知道大于/小于计算结果的结果如何并返回到高级语言。

我在这里寻找硬件门模型。

让我们用一个统一的例子来解释,比如说5> 3.

1 个答案:

答案 0 :(得分:6)

通常通过带进位检测的减法来实现。

从门控的角度来看,减去二进制数是通过从每个操作数通过减法器传递匹配的位对来执行的:

            +-----+
carry_in -->|     |
            |     |--> a_minus_b
       a -->| SUB |
            |     |--> carry_out
       b -->|     |
            +-----+

a_minus_b = carry_in ⊕ a ⊕ b
carry_out = (carry_in ∧ b) ∨ (¬a ∧ (carry_in ∨ b))

来自参数ab的位0通过第一个减法器传递,其中carry_in为0.每个参数的位1通过第二个减法器,其中carry_in设置为carry_out位0阶段。这继续沿链向下,直到最后的最后一个carry_out设置CPU的进位标志,如果a <1,则保持1。 b,否则为0。

此外,每个a_minus_b一起进行OR运算并取消,结果进入CPU的零标志,表示a = b。

这些标志可以通过机器指令进行测试,机器指令由编译器在您编写if (a < b) { ... }时生成。

我将离开5&gt; 3作为读者的练习。