【问题标题】:How are logic gates written at their most basic level? [closed]最基本的逻辑门是如何编写的? [关闭]
【发布时间】:2012-10-11 06:09:44
【问题描述】:

在 C 中,与许多其他语言一样,有 if 语句。您可以在编写其他语言(如 C++ 或 Ruby)时使用该逻辑。但是,最底层的if 语句是如何工作的呢?

条件如何在最低级别发挥作用?我不明白如何以非递归方式定义它。

【问题讨论】:

标签: c assembly if-statement logic


【解决方案1】:

您总是可以查看生成的程序集,但它通常以分支或跳转指令的形式实现。

    if ( x == y )
001E149C  mov         eax,dword ptr [x]  
001E149F  cmp         eax,dword ptr [y]  
001E14A2  jne         wmain+3Ah (1E14AAh)  
        return 0;
001E14A4  xor         eax,eax  
001E14A6  jmp         wmain+3Fh (1E14AFh)  
    else
001E14A8  jmp         wmain+3Fh (1E14AFh)  
        return 1;
001E14AA  mov         eax,1  

if 基本上是jne(跳转不等于)指令。如果两个值(xy)不相等,则跳转到else,否则继续执行并跳出if

【讨论】:

  • 嗯,比较如何?这就是我不明白的。
  • 处理器硬件通过比较(通常使用减法电路)两个数字并根据结果设置一些标志来解释cmp机器指令。 jne 机器指令在不相等时跳转(即,如果标志表明之前的 cmp 测试了两个不相等的单词)。
  • 好吧,我猜是用硬件打击我。硬件如何有条件地检查标志?
  • 等价电路...见this article from CPU中经常需要的常见逻辑电路是等价电路...
  • @tekknolagi 有关 CPU 内部电路的问题最好在electronics.stackexchange.com 提出,它们在 SO 上相当偏离主题。
【解决方案2】:

在最低级别,它们是在物理硬件中实现的。它们不是用其他东西来定义的,它们实际上是物理实现的。

【讨论】:

  • 这个决定是如何做出的呢?假设产生了1 的值。然后呢?
  • 过于简单化了,1 连接到一个实际的硬件,如果它得到一个连接到它的 1,它会在程序计数器寄存器中存储一个地址,如果它得到其他东西一个0 连接到它。 1 实际上操作了一个物理开关,该开关决定了接下来要执行的指令。
  • 哇。惊人的!不知道这个。
  • 您实际上可以在第 2 页左上角的4004 schematic 上看到这些开关,其中标签“地址存储器控制”是。 CONDITION_F/F,就在那里的右下方,以及它下面的电路计算 1。 4004 是第一个 CPU。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多