2012-02-06 13 views
5

이 C 코드를 MIPS 어셈블리로 변환해야합니다.간단한 루프 용 MIPS 어셈블리

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

이 내 MIPS 어셈블리 코드 : 다음은 C 코드입니다. 올바른 번역입니까? 실수를하는 경우에는 알고 싶습니다.

# 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의 제곱으로 곱하면됩니다. ** ** mul을 사용하지 마십시오. –

답변

5

루프가 0에서 14로 바뀌므로 bgt 명령어는 다음과 같아야합니다. bgt $t0,14,exit 생각합니다.

.

1

루프 전에 j ($ t0)를 0으로 설정하지 마십시오.

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