Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在练习将 C 代码转换为 MIPS 汇编语言,并且无法理解变量赋值的用法move和用法。li
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