MIPS在这条指令上的区别?

时间:2016-09-08 15:32:44

标签: mips

有人可以解释一下有什么区别:

lw $t5, $t3

lw $t5, ($t3)

lw $t5, 0($t3)

第一个和第二个按预期工作。但为什么第三个与第二个不同呢?

1 个答案:

答案 0 :(得分:1)

除非你的汇编程序非常宽容,否则第一个例子是语法错误:

lw $t5, $t3

spimmars都标记了它。 lw指令是“从内存加载”。如果您想从$t5的内容设置$t3的内容,您需要move伪操作:

move $t5, $t3

这是:

的简写
addu $t5, $t3, $zero

lw的正确用法是:

lw <dest_reg>,<offset>(<source_reg>)

这将获取源寄存器的内容,添加签名 [16位]偏移量以生成最终地址。它将从该地址获取32位字,并将获取的值放入目标寄存器。

如果<offset>为零,则可以将其关闭,因此以下两个是等效的:

lw $t5, 0($t3)
lw $t5, ($t3)