La fonction sum est récursive, non terminale. Il faut donc revenir à la fonction après l'appel récursif. Pour cela l'adresse de retour (la valeur du registre $ra) doit être sauvegardée pendant l'appel récursif (qui utilise lui-même $ra). Aucun registre n'est candidat à la sauvegarde de $ra, car il serait lui-même écrasé: c'est le même code qui effectue l'appel récursif donc il utilise potentiellement (ie. c'est une approximation statique) les mêmes registres que l'appel lui-même.

(On pourrait sauvegarder
$ra dans la tas, mais cela revient à implémenter une pile dans le tas.)