【发布时间】:2014-04-27 17:52:17
【问题描述】:
在我正在学习的课程中,我需要在软件上制作一台基本的计算机。 目前我有一个 RAM、ROM、程序计数器 (PC)、ALU、REG A、REG B、MUX A、MUX B 和一个控制单元。 现在,在 ROM 上,我有一个指令列表,其中每个位被发送到不同的部分,例如,MUX、REG、ALU(只能加减)、loadPC(跳转到指令)。 该 ROM 每条指令有 25 位,有 255 条指令。它类似于汇编中的编码,但更简单。 还有一点需要注意的是,在 ALU 输出中,我有一个“z”位,当 ALU 结果为 0 时,该位仅为 1。
现在,根据我理解的跳转,我需要将 Literal 设置为我想要跳转的内存并将 loadPC 设置为 1。 我想看看 B == 5 所以在汇编中这将是 CMP B,5 JEQ(插入内存跳转)
CMP实际上是B-5,如果B==5,那么结果是0,那么z = 1。 JEQ 指令仅在 z = 1 时才加载 PC
现在,我的问题是,如何在我的计算机中实现它。我需要额外的一点吗? 目前我创建了一个新位并将其始终设置为 0,除了在 JEQ 指令中。让我们称这个位为'v' 我的 loadPC 现在通过一个逻辑框,其中输入是“v”“z”和“loadPC”,输出是一个新的“loadPC” (¬v 或 z)和(loadPC)。 但是这种方法似乎不太优雅,我怎样才能以更好的方式做到这一点?
【问题讨论】: