ISA et assembleur
Quel est le fonctionnement correct de l'instruction RISC-V auipc (add upper immediate to PC) ?
- AEnregistrer la valeur du PC telle quelle en mémoire
- BAjouter à sa propre adresse (PC) l'immédiat de 20 bits décalé de 12 bits vers la gauche, et placer le résultat dans un registre
- CSauter inconditionnellement à l'adresse spécifiée par l'immédiat en réécrivant le PC
Afficher la réponse et l'explication
Réponse : B. Ajouter à sa propre adresse (PC) l'immédiat de 20 bits décalé de 12 bits vers la gauche, et placer le résultat dans un registre
auipc se contente de placer « PC + (immédiat << 12) » dans un registre. En ajoutant ensuite le déplacement de 12 bits de poids faible avec jalr ou lw, on peut désigner, par leur distance au PC, l'adresse de fonctions ou de données situées dans une plage d'environ ±2 GiB autour de la position courante. Cela permet, dans du code indépendant de la position qui fonctionne quel que soit l'endroit où il est chargé, d'appeler des fonctions lointaines ou de lire des variables globales.