处理器设计,信号值

Processor design, signal values

我的解决方案:

第 3 行:1:0x1 或 0x0、2:未知、3:未知、4:$t1、5:$t0、6:$a0、7:$t0、0x0

第 4 行:1:未知,2:未知,3:未知,4:$t0,5:未知,6:未知,7:未知,8:0x1

这是否完全正确?我该如何解决这个问题?我有点失落。

关于第 3 行,slt

路径 1:是的,该值为 0 或 1。

我不知道您的课程作业是什么,但是第 3 行 slt 和路径 2 和 3 的值是已知的。

对于路径2,slt指令确实不读写数据内存,但这并没有改变我们仍然可以知道WD是什么,而且,它将是 $a0 寄存器.

对于路径 3,这是 slt 机器代码指令的符号扩展立即数。当然,slt 指令是 R 型指令,不是 I 型指令,但那里的硬件并不关心——它仍然会符号扩展 R 型指令的低 16 位(解释它好像它是一个 I 型),只是在不久之后丢弃或忽略该工作。为了确定该路径的值,我们必须知道指令的机器代码值,恰好是 0x0124402a。因此,402a 将被符号扩展为 32 位,这就是路径 3 上的值(由于 ALUSrc 选择寄存器输出而未使用)。

对于路径 4,您声明 $t1,这是正确的,但让我们具体地说 中的值 $t1注册.

对于路径 5,您声明:$t0,6 — 我不确定您的意思,但这是一个 5 位路径,它是一个寄存器名称,因此它将是 的姓名 $t0 注册,即8.

对于路径 6,您声明:$a0,7 — 再次不确定您的意思,但这也是一个 5 位路径,它是一个寄存器名称,因此它将是 的名称 $a0 寄存器 ,即 4。(我们还可以注意到,由于 RegDst 为真,此路径被忽略。)

最后,路径 7 也是一个 5 位路径,它将是 的名称 $t0 寄存器 ,这是 8.