Ciao a tutti. Ho tradotto questo programma scritto in c in MIPS

codice:
int promossi( int voti[], int n) {

     int promossi = 0;
     
for(i = 0; i < n; i++) {
     
if(voti[i] >= 18) 
     promossi = promossi + 1;

}
return promossi;
}
Assumo che

$a0 = indirizzo base de vettore voti;
$a1 = n (numero studenti);
$s0 = promossi;
$t0 = indice (i);

codice:
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
Volevo sapere se la traduzione è fatta bene. Grazie