ISA et assembleur
En RISC-V, que se passe-t-il si l'on oublie de sauvegarder ra sur la pile en écrivant une fonction récursive qui s'appelle elle-même ?
- Ara est écrasé par l'appel interne, et la fonction externe ne peut plus revenir à son véritable appelant
- BLe CPU sauvegarde automatiquement ra, donc aucun problème ne survient
- CLe résultat du calcul est doublé quelle que soit la profondeur de récursion
Afficher la réponse et l'explication
Réponse : A. ra est écrasé par l'appel interne, et la fonction externe ne peut plus revenir à son véritable appelant
Le jal de l'appel récursif écrase ra avec « l'instruction qui suit l'appel interne à la fonction ». Sans sauvegarde, lorsque la fonction externe exécute ret, elle revient à l'intérieur d'elle-même au lieu de son appelant d'origine, ce qui provoque des répétitions ou des dysfonctionnements. C'est pourquoi une fonction qui en appelle d'autres doit sauvegarder ra sur la pile dans son prologue et le restaurer dans son épilogue.