我练的C代码转换成MIPS汇编语言,和我无法理解的使用move和li在变量赋值.
例如,要在MIPS中实现以下C行:
int x = 0;
Run Code Online (Sandbox Code Playgroud)
如果我理解正确(尽管我非常怀疑),看起来这两个都在MIPS汇编器中工作:
move $s0, $zero
li $s0, $zero
Run Code Online (Sandbox Code Playgroud)
我错了吗?这两条线有什么区别?
dus*_*uff 48
该move指令将值从一个寄存器复制到另一个寄存器.该li指令将特定数值加载到该寄存器中.
对于零的特定情况,您可以使用常量零或零寄存器来获取:
move $s0, $zero
li $s0, 0
Run Code Online (Sandbox Code Playgroud)
但是,没有寄存器会生成非零值,因此li如果您需要其他数字,则必须使用,例如:
li $s0, 12345678
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
97464 次 |
| 最近记录: |