什么是晶体管级别的“if”声明?

我最近参加了数字逻辑课程,学习了关于AND,OR和其他各种逻辑的知识。 有一件事我们没有涉及,这对编程完全是必不可少的, if声明和它让我很好奇它们是如何工作的。

我最好的猜测是它只是一个2:1多路复用器,而当你添加更多的else语句时,它将变为4:1和8:1,但对于这样一个简单的概念来说,这似乎有些复杂。

任何人都知道if语句实际转化为什么?


您忘记了程序作为单独的指令执行,并且(至少在最简单的情况下)指令顺序执行。

因此,对于if (a + 4 > 5)的指令将加载a到一个寄存器中,另一指令将增加4 ,另一个指令将总和比较5 。 然后一条指令将测试比较中的“条件代码”,并执行紧随其后的指令(执行“ if body”)或“跳转”到内存中几个(或数十)个指令的位置(跳过“ if身体“)。

那里有数字逻辑,但它处于较低的水平,决定如何执行每条单独的指令。


一个合适的if语句转化为比晶体管逻辑更高一级的东西。 if语句通常作为条件分支实现(假设没有优化),则可以根据条件计算结果为true还是false(通常为1或0),将程序计数器增加默认值或将其设置为分支中指定的值。


我已经参加了计算机体系结构课程已经有一段时间了,所以如果我对这个答案有点模糊,请原谅我。

您的计算机执行的所有指令都来自指令存储器,并且我认为有一个代表要执行的指令地址的数字。

典型的指令有多个部分,其中1个用于命令代码,通常有多达2个源寄存器的部分,目标寄存器以及其他4年来我都没有想过的东西。

无论如何,其中一个命令代码通常是条件跳转,并且如果您能够理解数据路径如何在常规RAM中存储/检索值,则不应该很难将该逻辑扩展为将指令地址修改为一个文字值或存储在特定寄存器中的值,这取决于另一个文字值/寄存器值是否等于0

在这里输入图像描述

链接地址: http://www.djcxy.com/p/72225.html

上一篇: What is an "if" statement at the level of transistors?

下一篇: platform format without warnings