1

在此处输入图像描述]使用此图,我正在查看此指令以确定哪些控制线是必要的。

ld x5, 40(x9)

x5 = 0x000000ff

x9 = 0x00000fff

我很好奇为了运行该指令,哪些控制线(RegWrite、MemRead、MemWrite、MemtoReg、Branch、Zero、ALUSrc)被断言或设置为 1,以及为什么我理解 load double 指令的部分是 ld RT , Disp(RA) - 但是执行需要什么,为什么?谢谢 - 这些东西(对我来说很有意义)的资源在互联网上非常有限。

4

1 回答 1

2

它是一条LOAD指令,其中要读取的内存地址通过添加40到寄存器的内容来计算x9,然后将结果存储在寄存器中x5

  1. 指令正在写入寄存器,因此断言RegDstRegWrite
  2. 指令需要添加40到内容中x5。设置ALUSrc为 1 以选择40作为源之一。
  3. 断言MemRead为它的内存读取。也设置MemtoReg为 1,这样 mux 将从内存而不是 ALU 中获取数据。
于 2018-03-07T14:37:21.710 回答