salve, per quanto ne so io lo stack sarebbe un contenitore di activation frame, quindi se io 'salvo' nello stack diversi registri (nello specifico sono $ra per il ritorno da un jal) non dovrei sovrascriverli ma salvarli tutti quanti e poi richiamarli in un ordine LIFO giusto ?
Perchè a me questo codice invece non mi richiama tutti i vari registri $ra salvati ma solamente l'ultimo.

L'esercizio chiedeva di imprementare una funzione tipo:
S(n)= n+S(n-1) se n>0
1 se n=0

e questo è il codice:
codice:
.text
.globl main
main:

li $v0, 5
syscall
move $t0, $v0

li $t1, 0

add $t1, $t1, $t0

subu $sp, $sp, 8
sw $t0, 0($sp)

jal funct

move $a0, $t1

li $v0, 1
syscall

addu $sp,$sp,8

li $v0, 10
syscall




funct:
ble $t0, 0 casobase
sw $ra, 4($sp)
sub $t0, $t0, 1
add $t1, $t1, $t0
jal funct
j end

casobase:
add $t1, $t1, 1

end: lw $ra, 4($sp)
jr $ra
mi serve sapere l'errore nel codice e non una possibile soluzione alternativa dell'esercizio perfavore
grazie in anticipo