MIPS存储字/加载字

时间:2015-03-02 18:50:33

标签: mips instructions isa

这里有一个非常基本的问题。 寄存器可以同时具有值​​和地址。如假设我想在值之间交换:5存储在t0中,7存储在t1中 这段代码是否有效:

sw $t0, 0($t0)
sw $t1, 0($t1)
lw $t1, 0 ($t0)
lw $t0, 0 ($t1)

对不起,这可能听起来很愚蠢

1 个答案:

答案 0 :(得分:1)

并非真正适用于所有值,因为swlw需要正确对齐(有效地址应为4的倍数)。

也就是说,你的代码只适用于4的倍数值,不管怎么说这样做是个坏主意,因为你基本上会在你指向的地址上写垃圾。

要交换寄存器而不覆盖第三个寄存器,您可以使用以下技巧:

 xor $t0, $t0, $t1
 xor $t1, $t0, $t1
 xor $t0, $t0, $t1