ISA et assembleur
Dans une fonction qui n'appelle aucune autre fonction (fonction feuille), il n'est souvent pas nécessaire de sauvegarder ra sur la pile. Quelle en est la raison ?
- AParce qu'une fonction feuille n'utilise pas l'instruction ret
- BParce que le CPU empile automatiquement l'adresse de retour d'une fonction feuille
- CParce qu'elle n'appelle aucune autre fonction, ra n'est pas écrasé et l'adresse de retour reste intacte
Afficher la réponse et l'explication
Réponse : C. Parce qu'elle n'appelle aucune autre fonction, ra n'est pas écrasé et l'adresse de retour reste intacte
ra étant écrasé à chaque jal qui appelle une fonction, une fonction qui en appelle d'autres doit d'abord sauvegarder sa propre adresse de retour sur la pile. Une fonction feuille n'utilisant pas jal, ra n'est pas altéré et elle peut exécuter ret sans sauvegarde. Si elle n'utilise pas non plus de registres sauvegardés par l'appelé, elle n'a même pas besoin de créer de cadre de pile. L'instruction call de x86 empilant toujours l'adresse de retour, c'est une différence avec RISC-V.