2012-02-06 91 views
5

我需要將此C代碼翻譯爲MIPS彙編。 這裏是C代碼:MIPS彙編簡單for循環

int tmp = 0; 
for (int j = 0; j < 15; ++j) 
    tmp = tmp * 2 + 3 

這是我的MIPS彙編代碼。這是一個正確的翻譯?如果你看到我想知道的任何錯誤。

# tmp = $v0 
# j = $t0 

.globl main 

main: 
    li $v0,0 

loop: 
    bgt $t0,15,exit 
    addi $t0,$t0,1 
    mul $t1,$v0,2 
    add $v0,$t1, 3 
    j loop 

exit: 
+0

乘以2的冪使用sll。做**不**使用多國語言 – 2016-04-14 00:13:40

回答

5

你的循環從0到14,所以你的BGT指令應該是:bgt $t0,14,exit我想。

1

在循環之前,不要將j($ t0)設置爲零。

0
.data 
mensage: asciiz "Text Test" 
newline: asciiz "\n" 
.text 

# tmp = $v0 
# j = $t0 

main: 
    li $t0,0 
    li $t1,0 
    li $t3,0 
loop: 
    bgt $t0,15,exit 
    addi $t0,$t0,1 
    j loop 
    mul $t1,$t1,2 
    add $t3,$t1,3 
exit: 

li $v0,0 
syscall