36

我正在练习将 C 代码转换为 MIPS 汇编语言,并且无法理解变量赋值的用法move和用法。li

例如,要在 MIPS 中实现以下 C 行:

int x = 0;

如果我理解正确(不过我非常怀疑这一点),看起来这两个都在 MIPS 汇编器中工作:

move $s0, $zero
li $s0, $zero

我错了吗?这两条线有什么区别?

4

1 回答 1

60

move指令将一个值从一个寄存器复制到另一个。该li指令将特定数值加载到该寄存器中。

对于零的特定情况,您可以使用常量零或零寄存器来获得:

move $s0, $zero
li   $s0, 0

但是,没有寄存器可以生成零以外的值,因此li如果您想要其他数字,则必须使用,例如:

li $s0, 12345678
于 2013-11-07T03:55:32.273 回答