【问题标题】:Processor design, signal values处理器设计,信号值
【发布时间】:2021-12-16 10:49:48
【问题描述】:

我的解决方案:

在第 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

这甚至是完全正确的吗?我该如何解决这个问题?感觉有点失落。

【问题讨论】:

标签: assembly mips processor


【解决方案1】:

关于第 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 位路径,它将是 name of$t0 寄存器,即 8。

【讨论】:

  • 感谢您的回答!它为我澄清了一些事情。但是对于第 4 行,我不明白我应该如何确定信号 3 和 7 应该是什么,因为我没有 16 位立即数,只有标签。请你帮助我好吗? @埃里克
  • 你有从分支到标签的距离。您必须计算 16 位立即数。分支目标仅在几条指令之外,并且被编码为相对于 pc 的立即数。该立即数基本上是向前跳转的指令数(根据您从哪里计数,偏差 1 左右)。
  • 好的!那么这是正确的吗?:1: 未知,2: $0,3: 0x00000007,4: 值$t0寄存器中,5:未知,6:$0寄存器的名字,即0,7:0x0, 8: 0x1 @Er​​ik
  • 是:1 是未知的,b/c 最低限度,我们不知道 MemToReg 的 beq(这是一个无关信号,因为 RegWrite 是假的)。是的,2 是 0 美元,但已知是 0x0。是的,我相信 3 是 7。是的,4 是 $t0 中的值。是的,5 确实是未知的 b/c 我们不知道 RegDest,因为它不关心 beq(但我们可以确定两个确切的可能值)。是的,6 是 $0 的名称,即 0x0。是的,7 是小的正立即数 (7) 的高位 0。但是 8 是未知的,因为它取决于 $t0 和 0 之间的动态相等性:在循环的最后一次迭代之前它将是 0,然后是 1。
猜你喜欢
  • 2012-02-18
  • 2019-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
相关资源
最近更新 更多