2014-03-30 124 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 

除此之外,我會問你收到什麼樣的錯誤輸出?