12

このCコードをMIPSアセンブリに変換する必要があります。Cコードは次のとおりです。

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:
4

4 に答える 4

11

ループは0から14になるので、bgt命令は次のようbgt $t0,14,exitになります。

于 2012-02-06T03:49:09.880 に答える
2

ループの前にj($ t0)をゼロに設定しないでください。

于 2012-02-06T03:50:30.430 に答える
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 $v10,0
    syscall
于 2016-04-13T22:31:31.783 に答える