ISA et assembleur
Dans la convention d'appel RISC-V, t0 à t6 sont des registres « sauvegardés par l'appelant » (caller-saved). Si une fonction veut continuer à utiliser une valeur placée dans t0 après avoir appelé une autre fonction, quelle est la démarche correcte ?
- ANe rien faire : la fonction appelée restaure toujours t0
- Bt0 ne pouvant être modifié par d'autres fonctions, on peut l'utiliser tel quel
- CSauvegarder la valeur de t0, sur la pile par exemple, avant l'appel, et la restaurer après
Afficher la réponse et l'explication
Réponse : C. Sauvegarder la valeur de t0, sur la pile par exemple, avant l'appel, et la restaurer après
Les registres t peuvent être utilisés librement par la fonction appelée sans sauvegarde. Si la valeur est nécessaire après l'appel, l'appelant doit donc la sauvegarder lui-même. Répartir, registre par registre, la responsabilité de la sauvegarde entre appelant et appelé permet à de nombreuses fonctions d'utiliser des registres temporaires sans coût de sauvegarde, et réduit globalement le nombre de sauvegardes et de restaurations.