我正在练习将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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句