Programmation Assembleur
Le langage Assembleur ou langage d'assemblage est un langage de programmation directement traduisible en langage machine binaire compris par les processeurs. Il existe donc autant de langage assembleur que de familles de modèles de processeur.
Il existe cependant des points communs expliqués dans ce mini-livre introductif. Le langage assembleur spécifique à un processeur est expliqué en détail dans les livres connexes.
Introduction
[modifier | modifier le wikicode]Le langage Assembleur ou langage d'assemblage, dit assembleur tout court, est le langage de programmation le plus proche - tout en restant lisible par un être humain - du langage machine utilisé par le (micro)processeur de la machine. Le langage machine exprime les instructions des programmes par des combinaisons de bits, comme
10110000 01100001
En langage d'assemblage, ces instructions sont représentées par des symboles mnémoniques bien plus lisibles, comme
mov $0x61, %al
qui signifie de mettre la valeur hexadécimale 61 (97 en décimal) dans le registre 'AL'.
Contrairement à un langage de haut-niveau, il y a une correspondance 1 pour 1 entre le code assembleur brut et le langage machine. Ainsi les ordinateurs peuvent traduire le code dans les 2 sens sans perdre d'information essentielle à la machine :
- La transformation du code assembleur dans le langage machine est accomplie par un programme nommé Assembleur ;
- dans l'autre sens par un programme Désassembleur.
L'opération s'appelle respectivement, assemblage et désassemblage.
Dans un programme réel en assembleur pour développeur, c'est un peu plus complexe que cela : on peut donner des noms aux routines, aux variables ; on n'a plus cette correspondance 1 pour 1. Au cours de l'assemblage, on perd les symboles (traduits en valeurs concrètes) et les commentaires (ignorés) permettant une meilleure compréhension du code par un humain.
Chaque architecture d'ordinateurs a son propre langage machine, et donc son propre langage d'assemblage ; l'exemple ci-dessus est pour l'architecture x86 des PC. Ces différents langages diffèrent par le nombre et le type d'opérations qu'ils ont à supporter. Ils peuvent avoir des tailles et des nombres de registres différents, et différentes représentations de type de données en mémoire. Tandis que tous les ordinateurs sont capables de faire les mêmes choses, ils le font de manière différente.
Par ailleurs, il peut exister plusieurs syntaxes pour le même jeu d'instruction, selon les conventions choisies par le fournisseur du programme d'assemblage. L'exemple ci-dessus était donné en syntaxe AT&T. En syntaxe Intel il s'écrit :
MOV AL,61h
La syntaxe la plus populaire est généralement celle utilisée dans la documentation du fabricant du processeur.
Assembleur spécifique à un processeur
[modifier | modifier le wikicode]
L'assembleur spécifique à un processeur est détaillé dans les livres connexes suivants :
Autres livres
[modifier | modifier le wikicode]- Programmation - Livre sur la programmation en général.