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,exit
IK 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