我正在练习将 C 代码转换为 MIPS 汇编语言,但无法理解 move
和 li
在变量赋值中的用法。
例如,要在 MIPS 中实现以下 C 行:
int x = 0;
如果我理解正确(尽管我对此深表怀疑),看起来这两个都可以在 MIPS 汇编器中工作:
move $s0, $zero
li $s0, $zero
我错了吗?这两行有什么区别?
最佳答案
move
指令将值从一个寄存器复制到另一个寄存器。 li
指令将特定数值加载到该寄存器中。
对于零的特定情况,您可以使用常量零或零寄存器来获取:
move $s0, $zero
li $s0, 0
不过,没有寄存器可以生成非零值,因此如果您想要其他数字,则必须使用 li
,例如:
li $s0, 12345678
关于c - MIPS汇编语言 "move"和 "li"的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827522/