MIPS汇编语言中“move”和“li”的区别

时间:2013-11-07 03:31:42

标签: c assembly mips

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

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

int x = 0;

如果我理解正确(尽管我非常怀疑),看起来这两个在MIPS汇编程序中都有效:

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

我错了吗?这两行之间有什么区别?

1 个答案:

答案 0 :(得分:47)

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

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

move $s0, $zero
li   $s0, 0

但是,没有寄存器会生成非零值,因此如果您需要其他数字,则必须使用li,例如:

li $s0, 12345678