ho capito quello che dici tu però non riesco ancora a risolvere il problema ad esempio ho questa traccia:

devo allocare in area stack un array di 15 interi.
poi richiamo una funzione array_init fornendole come parametri il puntatore dell'array, m ed
n.
la funzione inizializza ogni elemento A[i] dell'array al valore m*4+n*3+i

io ho fatto così:


array_init:
move $s0,$a0 # $s0 c'e' la testa del vettore
move $t6,$t0 # questo è m
move $t7,$t1 # questo è n
li $t1,0 # i=0
li $t4,0

#qui faccio l'operazione di moltiplicazione e addizione
loop2: mul $a1,$t6,4
mul $a2,$t7,3
add $a3,$a1,$a2
add $a3,$a3,$t1 # $a3 c'è il risultato

add $t5,$s0,$t4

sw $a3,($t5) #scrivo il risultato contenuto in $a3 nella posizione $t5(che sarebbe quella di partenza)

addi $t1,$t1,1
addi $t4,$t4,4

blt $t1,15,loop2

jr $ra


Glie l'ho fatta vedere al prof ma mi ha detto testuali parole:

devo mettere tutto il vettore sullo stack,Per usare le variabili sullo stack, elimina la dichiarazione globale del vettore che hai usato finora.
puoi utilizzare:

addi $sp, $sp, -VALORE


dove VALORE è il numero di byte che vuoi riservare. Spostando in giù lo stack pointer, lasci libero dello spazio utilizzabile. Se ora ti sposti il valore dello stack pointer in un registro:

move $t0, $sp

hai un puntatore a quest'area dello stack che puoi passare in giro. Segui la logica dello stack: passa un riferimento a dati che si trovano sullo stack solo finchè il frame della funzione in cui allochi è attivo.


Mi potresti dare una mano perfavore è urgente visto che domani ho l'esame...grazie mille in anticipo