调用加载双字指令时,哪些控制线asserted/set变为1?
What control lines are asserted/set to 1 when a load double word instruction is called?
使用这张图,我正在查看这条指令以确定需要哪些控制线。
ld x5, 40(x9)
x5 = 0x000000ff
x9 = 0x00000fff
我很好奇哪些控制线(RegWrite、MemRead、MemWrite、MemtoReg、Branch、Zero、ALUSrc)被断言或设置为 1 以便此指令 运行,以及为什么我理解这些部分load double 指令的一部分是 ld RT, Disp(RA) - 但是执行需要什么,为什么?谢谢 - 这些东西的资源(对我来说有意义)在互联网上非常有限。
是一条LOAD
指令,将寄存器x9
的内容加上40
,计算出要读取的内存地址,结果存入寄存器x5
.
- 指令正在写入寄存器,因此断言
RegDst
和 RegWrite
- 需要指令将
40
添加到x5
的内容中。将 ALUSrc
设置为 1 到 select 40
作为来源之一。
- 断言
MemRead
作为内存读取。还要将 MemtoReg
设置为 1,以便 mux 将从内存而不是 ALU 获取数据。
ld x5, 40(x9)
x5 = 0x000000ff
x9 = 0x00000fff
我很好奇哪些控制线(RegWrite、MemRead、MemWrite、MemtoReg、Branch、Zero、ALUSrc)被断言或设置为 1 以便此指令 运行,以及为什么我理解这些部分load double 指令的一部分是 ld RT, Disp(RA) - 但是执行需要什么,为什么?谢谢 - 这些东西的资源(对我来说有意义)在互联网上非常有限。
是一条LOAD
指令,将寄存器x9
的内容加上40
,计算出要读取的内存地址,结果存入寄存器x5
.
- 指令正在写入寄存器,因此断言
RegDst
和RegWrite
- 需要指令将
40
添加到x5
的内容中。将ALUSrc
设置为 1 到 select40
作为来源之一。 - 断言
MemRead
作为内存读取。还要将MemtoReg
设置为 1,以便 mux 将从内存而不是 ALU 获取数据。