MIPS-assemblage voor een eenvoudig voor lus

Ik moet deze C-code vertalen naar MIPS-assemblage.
Hier is de C-code:

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

Dit is mijn MIPS-assemblagecode. Is het een correcte vertaling? Als je fouten ziet, zou ik het graag willen weten.

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

Antwoord 1, Autoriteit 100%

Uw lus gaat van 0 tot 14, dus uw BGT-instructie zou moeten zijn: bgt $t0,14,exitIK DENK.

.


Antwoord 2, Autoriteit 30%

U SET J ($ T0) niet voor de lus.


Antwoord 3

Ik weet ook niet wat MIPS-simulator loopt, maar ik weet het
Sommigen van hen zijn niet constanten en ze vragen dat je die toewijst
registers. Dus zoals BGT RSRC1, SRC2, label, normaal als u een
geheel getal in SRC2 De computer zal dat vertalen, maar ik weet het voor
Sommige krijg je een foutmelding aan het doen van $ V0, $ T1, 3 zoals het dat niet zal doen
Vertaal Toevoegen in Addi. Hetzelfde met mul. Ik weet dat mijn SPIM-simulator niet
Sta het toe.


Antwoord 4

.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

Other episodes