我试图将以下C ++代码行转换为MIPS程序集:
cout << a2[i]
这是我尝试过的代码,但我的结果不正确。
*变量i保存在$ t5。
li $v0, 1
la $a0, a2
sll $t5, $t5, 2
add $a0, $a0, $t5
srl $t5, $t5, 2
lw $a0, 0($a0)
syscall
答案 0 :(得分:2)
关于MIPS,我有点生疏。但是,我确实记得一些事情。
除非您将参数传递给函数(与使用syscall一样),否则通常不应使用$ a寄存器。
因此,在这两种情况下,我会使用临时寄存器:
la $a0, a2
add $a0, $a0, $t5
成为
la $t0, a2
add $t1, $t0, $t5
然后:
lw $a0, 0($t1)
syscall
你也可以省略这一点:
srl $t5, $t5, 2
除此之外,我会问你收到什么样的错误输出?