Page 3.4 © Jacques Guizol
disposer de codes mnémoniques pour les opérations (ADD, SUB, MP, DIV, MOVE,… ), de
directives de déclaration (une table est totalement définie en une ligne d’assembleur qui indique
un nom symbolique (adresse), le type de ses éléments (octet, mot, double mot) et le nombre de ces
éléments) et surtout, il offre la possibilité de désigner adresses, variables, noms de
registres, etc. sous une forme symbolique.
Au final, bien que l’écriture d’un programme en assembleur ne représente pas
nécessairement une partie de plaisir, elle s’avère “incomparablement plus” agréable
qu’en langage machine. D’ailleurs, l’assembleur est toujours d’actualité et même si
certains ricanent en parlant des “fêlés de l’assembleur” il n’en reste pas moins vrai
que si certaines portions d’un logiciel sont particulièrement utilisées, on aura tout
intérêt à les écrire en assembleur pour bénéficier de la meilleure optimisation
possible.
4JABKEO?ALNKCN=IIAe?NEPAJH=JC=CA=OOAI>HAQNEHB=QP@KJ? HAPN=@QENA AJ
H=JC=CAI=?DEJA0QEOYAJ?D=NCA
L’assembleur !
Oui, en fait le langage lui-même et son traducteur ont le même nom !
D>KJ"YAOPO=JO@KQPA?AMQAHYKJ=LLAHHAQJ=>QO@AH=JC=CA
La traduction va avoir pour effet, à partir du programme source, de générer un
programme objet (comme la publicité et la presse de pacotille traduisent la femme source en
femme objet).
3.2.2. L’éditeur de liens.
Ce programme objet produit est rarement complet ; il est improbable qu’il puisse se
suffire à lui-même. Certaines directives ou certaines opérations permettent de faire
le lien avec des informations extérieures.
Ainsi un programme va être constitué d’un regroupement de plusieurs modules de
provenances diverses :
• Un programme gagnera en clarté s’il est découpé en “ morceaux” chacun
ayant une fonction propre. Ainsi le programme principal se résumera à la
réservation de place pour les données communes aux divers “ morceaux”
et aux appels de ceux-ci, aux endroits désirés, grâce à une instruction
regroupant une code spécifique et un argument adresse. Ces “ morceaux”
de programme sont appelés sous-programmes.
• Etant donné qu’il est inutile que chacun réinvente à chaque instant le fil à
couper le beurre, un programme va aussi faire appel à toute une batterie
de fonctions particulières rassemblées dans des librairies (fonctions mathéma-
tiques, statistiques, de traitement de chaînes de caractères, etc.).
• Enfin, systématiquement, tout programme utilisateur fait appel à des
“ morceaux” d’un programme particulier : le logiciel système. C’est le cas
dès que le programme doit opérer des opérations d’entrée-sortie avec un
quelconque périphérique ; c’est aussi le cas si le programme fait appel à
des primitives graphiques, audio ou autres ; c’est encore le cas si une
erreur fatale se produit en cours d’exécution.
Mises à part les routines systèmes, tous ces petits morceaux pris ici ou là sont en fait
sous la forme de code objet. Chacun ayant été traduit séparément, les adresses et
références internes supposent une adresse origine en 0. Quant aux références
externes, appel à des sous-programmes, à des parties de librairies, elles demeurent
non résolues.