我被要求设计一台64位假想的机器,我已经决定了 将4位作为操作码,其余60位作为地址,因为 问题只是要我执行2次加法的操作 2个整数的整数和乘法,因此4位指令会 足够了。继承人,我必须设计程序 执行。如果我要使用60位地址,那就意味着我会 有15位十六进制地址,这是唯一的方法吗?有人可以表现出来 我如何设计它没有这么多的地址数,因为我的 设计会非常混乱。第一个图像是问题,第二个 是我试图做的那些,这些是我给出的一些指示 ,第三是16位机器的图像。是假设结果 这条路?因为它真的很乱。我想要画机器 像第二张图片一样,只是不同的指令和 算术方程。
答案 0 :(得分:1)
假设的“16位机器”(如第三张图所示)具有12位地址,16位寄存器和16位指令。由于它只有一个寄存器(AC)来保存指令的操作数,因此它被描述为accumulator machine。让我们从它开始设计一个假设的“64位机器”。
我决定将4位作为操作码,其余60位作为地址 因为这个问题只要我执行2次操作 添加3个整数并乘以2个整数,这样一个4位 说明就足够了。
这个问题要求列出至少8条指令,因此操作码字段的大小必须至少为3位。
继承人,我必须设计程序执行。如果我是 使用60位地址,这意味着我将有一个15位十六进制数 地址,这是唯一的方法吗?
对操作码的最大大小或该指令的大小确实没有限制。例如,让我们使用64位大小的固定大小的指令,为操作码分配最低有效8位,剩余的56位用于保存地址。虽然您可以定义多达2 ^ 8 = 256个操作码,但您只需要定义8.其余部分可以保留为“保留”以供将来用于添加新指令。你不必对它们说什么。
有人可以告诉我如何在没有这么多数字的情况下设计它 因为我的设计会非常混乱
您不必使用这么大的地址。您可以使用小地址(例如0x300),并隐含非重要零(或仅在第一个地址中明确写入它们)。
第二个是我试图做的,那些是一些 我给出的指示
请注意,您有两个位置可用作指示目的地的来源; 64位AC寄存器和由56位地址寻址的64位存储单元。
首先,您在技术上不需要可以执行加法或乘法的指令,因为这些指令可以使用其他指令实现。同时,不需要使设计不必要地复杂化,因此您可以继续定义加法指令和乘法指令。您还需要两条指令来从/向AC寄存器加载和存储内存。到目前为止,总共有4条指令。你还需要至少4个。
“执行程序终止”指令是必要的,但您可以将其称为“暂停”或“暂停执行”。在该指令中,可以忽略AC和地址字段中的值。必须更精确地定义在屏幕上显示AC内容的指令。例如,您可以将其定义为“将存储在AC的最低有效字节中的ASCII字符显示在屏幕上”。或者“显示存储在内存中的零终止ASCII字符串,该字符串指定在屏幕上指定最低56位AC的地址。”
您建议的I / O指令应该被接受,但您可以定义更多有趣的指令。第7条指令可以定义为“从键盘读取ASCII字符并将其存储为AC的最低有效字节”。或者“从键盘读取ASCII字符并将其存储在AC指定的地址的内存中,然后将AC递增1。”
第8条指令可以定义为“如果AC为零,则跳转到地址在地址操作数指定的地址内存中指定的指令”。因此,如果AC为零,则新的下一条指令的地址存储在PC中,并且指令被加载到IR中。这称为控制流指令,非常有用。其他指令可以很容易地定义,例如移位或逻辑指令。
如果您摆脱了I / O加载和存储指令,则可以省略插图中的I / O设备状态。
我会留下它来编写一个程序,它添加三个整数和另一个乘以两个整数的程序。如果您愿意,请在评论中告诉我您的想法。