ISA et assembleur
En quelle instruction la pseudo-instruction RISC-V « ret » est-elle réellement exécutée ?
- Ajal ra, 0
- Bjalr x0, 0(ra)
- Clw ra, 0(sp)
Afficher la réponse et l'explication
Réponse : B. jalr x0, 0(ra)
jalr (jump and link register) saute à l'adresse obtenue en ajoutant un déplacement à la valeur d'un registre et place l'adresse de l'instruction suivante dans la destination. ret correspond à « jalr x0, 0(ra) » : elle saute à l'adresse contenue dans ra et jette le lien dans x0. jalr sert aussi aux sauts dont la destination n'est connue qu'à l'exécution, comme les appels par pointeur de fonction ou les fonctions virtuelles. Le « lw ra, … » qui restaure ra est une préparation effectuée avant ret.