Ciao a tutti. Ho tradotto questo programma scritto in c in MIPS
Assumo checodice:int promossi( int voti[], int n) { int promossi = 0; for(i = 0; i < n; i++) { if(voti[i] >= 18) promossi = promossi + 1; } return promossi; }
$a0 = indirizzo base de vettore voti;
$a1 = n (numero studenti);
$s0 = promossi;
$t0 = indice (i);
Volevo sapere se la traduzione è fatta bene. Graziecodice:promossi: addi $sp, $sp, - 4 #faccio spazio di 1 elemento nello stack sw $s0, 0($sp) # salvataggio di $s0 add $s0 $zero $zero # $s0 = 0 add $t0, $zero, $zero # $t0 = 0 Ciclo: stl $t1, $t0, $a1 # $t1 = 1 se $t0 < $a1 beq $t1, $zero, Exit # se $t1 = 0 allora esci sll $t2, $t0, 2 # $t2 = $t0 * 4 add $t2, $t2, $a0 # indirizzo del vettore voti lw $t2, 0($t2) # $t2 = v[i] stli $t1, $t2, 18 # $t1 = 1 se $t2 < 18 bne $t1, $zero, ELSE # vai a else se $t1 è diverso da zero addi $s0, $s0, 1 # incrementa di 1 Else: addi $to, $to, 1 j ciclo EXIT: move $vo, $so ....... j $ra

Rispondi quotando