例如:
$t0 = A
$t1 = B
$t2 = C
如果我执行以下命令
lw $t1, 4($t0)
是否会将$t2
加载到$t1
?
答案 0 :(得分:0)
只要您的临时寄存器在内存中彼此相邻。 即。
Reference: $t1 $t2
Mem Blocks: [byte][byte][byte][byte][byte][byte][byte][byte]...
像Logisim这样的程序应该紧密包装寄存器。
来自加州大学伯克利分校的有用页面here。
答案 1 :(得分:0)
不,它不会。如果我执行以下命令
lw $t1, 4($t0)
它会将$ t2加载到$ t1吗?
lw
指令用于从内存加载数据,不将一个寄存器的值复制到另一个寄存器中。引用MIPS手册:
LW rt, offset(base)
MIPS32(MIPS I)
的目的:强>
将内存中的单词作为带符号值加载说明:
rt ← memory[base+offset]
获取由对齐的有效地址指定的存储单元位的32位字的内容, 必要时符号扩展到GPR寄存器长度,并放置在GPR rt 中。 16位带符号的偏移被添加到 GPR base 的内容构成有效地址。
换句话说,lw $t1, 4($t0)
通过将$t0
的值与值4相加来形成有效地址,并将该地址中的一个字(四个字节)加载到寄存器{{1 }}