2014-03-30 126 views
-2

我想要的C++代码的下面一行转换成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 
+0

你编码的平台是什么? 'a2'的类型是什么?索引操作符是否被重载? –

+0

您是否考虑编译代码并检查输出? –

回答

2

当谈到MIPS时,我有点生疏。但是,我确实记得一些事情。

除非将参数传递给函数,否则通常不应使用$ a寄存器(与使用系统调用相同)。

因此,在这两种情况下,我会用临时寄存器来代替:

la $a0, a2 
add $a0, $a0, $t5 

成为

la $t0, a2 
add $t1, $t0, $t5 

然后:

lw $a0, 0($t1) 
syscall 

而且你大概可以忽略此作为好:

srl $t5, $t5, 2 

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