Bonjour,
Il ya un truc que je comprend pas avec les codes executables.
Par exemple avec GCC, quand on compile du code C mais qu'on spécifie une option d'optimisation, genre -02, le programme fonctionne bien, malgré le fait qu'ils soit lié à des fonctions qui ne sont pas forcément optimisé ( printf etc ), c'est à dire que la méthode pour récupérer les arguments n'est plus la même ( le fameux push ebp - mov ebp,esp - pop ebp n'est plus de mise ).
Ainsi, quand je fais ma petite routine en assembleur, que je la compile dans un fichier objet et que je la lie avec un fichier object C, si je ne met pas d'option d'optimisation, ma routine marche très bien car elle utilise la méthode précédemment décrite. Par contre, dès que je met l'option d'optimisation -02 dans gcc, je me retrouve avec une routine qui fait n'importe quoi.
Ma question c'est : comment fait le linker pour lier les fonctions de la librairie standard au code qu'on a compilé en C et faire en sorte que ca marche meme avec des optimisations. Est-il possible de linker du code C optimisé avec du code ASM non-optimisé sans rien changer au code ASM ?
Vous me suivez ?
Partager