程序执行64位假设机器

问题描述 投票:0回答:1
  1. 我被要求设计一个64位假设机器,我决定将4位作为操作码,其余60位作为地址,因为这个问题只要我执行2次操作,这是3个整数的加法和2个整数的乘法所以a 4位指令就足够了。继承人,我必须设计程序执行。如果我使用60位地址,这意味着我将有一个15位十六进制地址,这是唯一的方法吗?有人可以告诉我如何设计它没有这么多地址,因为我的设计会非常混乱。第一个图像是问题,第二个是我尝试做的,这些是我给出的一些指令,第三个是16位机器的图像。是假设这样做?因为它真的很乱。我想像第二张图片一样画出机器,只是不同的指令和算术方程式。
computer-science cpu-architecture cpu-registers
1个回答
1
投票

假设的“16位机器”(如第三张图所示)具有12位地址,16位寄存器和16位指令。由于它只有一个寄存器(AC)来保存指令的操作数,因此它被描述为accumulator machine。让我们从它开始设计一个假设的“64位机器”。

我决定将4位作为操作码,其余60位作为地址,因为这个问题只要我执行2次操作,这些操作是3个整数的加法和2个整数的乘法,所以4位指令就足够了。

该问题需要列出至少八个指令,因此操作码字段的大小必须至少为三位。

继承人,我必须设计程序执行。如果我使用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设备状态。

我将留给你编写一个程序,它添加三个整数和另一个乘以两个整数的程序。如果您愿意,请在评论中告诉我您的想法。

© www.soinside.com 2019 - 2024. All rights reserved.