FarewellLe 10/10/2009 à 21:35
L'assembleur produit du code objet. C'est à dire tout ce qui peut être assemblé d'entrée de jeu (move.l d0,d1 par exemple).
Le liner va s'occuper de tous les sauts. Quand tu as un saut, tu connais pas encore l'endroit où tu sautes, donc tu peux pas le coder. Tu mets ça dans un table de saut à résoudre après assemblage.
C'est nécessaire parce mon assembleur étant multi-source, il est impossible de savoir où seront, dans le binaire final, les binaires correpondant aux autres fichiers sources.
Et ça, c'est le boulot du linker : rassembler les binaires de chaque source, en créer un unique avec un stub éventul, et résoudre les sauts et adressages entre tout ça.