将c ++转换为MIPS程序集

时间:2014-03-30 20:11:38

标签: c++ assembly mips

我试图将以下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

1 个答案:

答案 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

除此之外,我会问你收到什么样的错误输出?