Ceci est une ancienne révision du document !
Table des matières
Langage Assembleur
Dans ce cours, on présente le langage Assembleur dans le cadre d'un exemple.
Compilation / Interprétation
- Un langage de programmation comme Python, JS, C, … est un langage pour le programmeur humain.
- La machine parle un langage binaire peu compréhensible pour l'humain.
L'Assembleur est le langage de la machine.
Dans les tous premiers temps de l'informatique, on écrivait directement les programmes dans le langage de la machine. C'était pénible et cela ne permettait pas de faire des programmes très complexes.
À mesure de l'évolution de la technologie et des théories sur les langages de nouveaux langages plus évolués, plus faciles à comprendre pour l'humain sont apparus.
Mais la machine continue à parler son langage. Donc il faut traduire.
- Certains langages – Python, JS, PHP, … – sont interprétés. Ils refont la traduction à chaque exécution.
- Certains langages – C, Rust, Go, … – sont compilés. La traduction est faite une fois. On exécute ensuite la version traduite.
Vous pouvez comparer cela au travail de traducteur / interprète.
- l'interprète est comme le journaliste sportif qui interroge un sportif en fin d'épreuve et traduit ce que dit le sportif en même temps que le sportif parle, en temps réel.
- le traducteur est celui qui écrit une version traduite d'un roman. Le traducteur peut prendre son temps pour bien choisir ses mots et il n'a à faire le travail qu'une fois.
L'Assembleur c'est mieux ?
Le travail de traduction peut ajouter des erreurs, il peut faire perdre quelque chose… Autrefois, les programmes écrits directement en Assembleur étaient toujours plus performants que ceux compilés/interprétés. On a donc longtemps continué à faire des choses en assembleur.
Aujourd'hui, les langages sont devenus beaucoup plus performants. Il n'est plus utile de programmer en Assembleur.
Apprendre l'Assembleur sert seulement à mieux comprendre comment ça marche.
Quelques différences
Cas interprété
- Le programme interprète – par exemple
python.exe– doit être présent sur la machine qui exécute le programme. - Le concepteur du programme n'a pas à se soucier du type de machine qui exécutera le programme du moment que celle ci possède une version de l'interprète.
- Le concepteur du programme est obligé de fournir le code du programme. On est open source.
- La traduction se faisant à la volée, elle est moins optimale.
Cas compilé
- Le programme compilé fonctionne seul. On n'a besoin de rien d'autre pour l'exécuter.
- Le programme a été compilé pour un type de machine. Un programme compilé pour un PC 64 bits ne fonctionnera pas sur un PC 32 bits. Il faut produire diverses versions.
- Le concepteur n'a pas à fournir son code. Il donne seulement l'exécutable (version compilé) qui est quasiment illisible (puisque dans le langage de la machine)
- Le compilateur peut produire un exécutable mieux optimisé.
Un exemple de langage assembleur
Bien que certain standard se soient mis en place, le langage assembleur est le langage d'un processeur particulier et donc, suivant les technologies mis en œuvre dans un processeur donné, l'assembleur sera différent.
Le langage proposé ici n'est qu'un exemple correspondant à un processeur fictif que j'ai inventé pour les besoins du cours.
