Éditeurs de liens, chargeurs et exécutables
En désassemblant un fichier objet, on constate que la destination de l'instruction appelant la fonction externe printf a une valeur provisoire comme 0. Quand cette valeur est-elle correctement renseignée ?
- AC'est une erreur du compilateur, qui ne peut être corrigée qu'en modifiant le code source
- BLe CPU devine et fixe la destination au moment d'exécuter l'instruction
- CLors de l'édition de liens (en partie à l'exécution en cas de liens dynamiques), d'après les informations de relocalisation
Afficher la réponse et l'explication
Réponse : C. Lors de l'édition de liens (en partie à l'exécution en cas de liens dynamiques), d'après les informations de relocalisation
L'adresse de printf étant inconnue au moment de la compilation, le compilateur met une valeur provisoire comme destination et laisse une information de relocalisation indiquant « placer l'adresse de printf dans tel champ de telle instruction ». L'éditeur de liens s'en sert pour inscrire la valeur correcte. En édition de liens dynamique, l'instruction est réécrite pour pointer vers l'entrée de la PLT, et l'adresse réelle de la fonction de bibliothèque est placée dans la GOT à l'exécution par l'éditeur de liens dynamique.
Continuer : 9 autres questions sur Éditeurs de liens, chargeurs et exécutables