Langage machine et assembleur
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.
Objectifs
Découvrir le langage machine ;
Découvrir les bases de l'assembleur.
Mise en situation
Les développeurs écrivent des programmes dans des langages compréhensibles par les humains. Mais l'ordinateur travaille à un niveau différent, il manipule des séquences binaires.
Le langage le plus proche de la machine se nomme assembleur. C'est un langage qui permet des instructions très basiques. On l'utilise assez rarement car il est beaucoup plus efficace pour un être humain d'écrire dans un langage de haut niveau comme le C ou le JavaScript. D'autant qu'il existe des compilateurs ou des interpréteurs qui transforment ce code de haut niveau que l'on écrit en langage machine.
Mais il est néanmoins utile de comprendre les mécaniques de l'assembleur. Cela aide à comprendre certains concepts comme l'adressage mémoire. Et c'est utile pour programmer plus efficacement.
Fondamental : Codage binaire
Un processeur ne comprend pas les langages de programmation. Il ne peut traiter que des instructions sous forme binaire, c'est-à-dire constituées de 0 et de 1. Un processeur ne traitera pas le nombre 42 mais la suite 00101010
, qui est l'équivalent de 42 en codage binaire.
Définition : Le langage assembleur
L'assembleur est un langage compréhensible par le processeur. Il ne comporte que quelques instructions très simples (déplacer une donnée, multiplier, additionner, etc.), là où les langages de programmation classiques comportent des instructions plus complexes, correspondant à une combinaisons d'instructions en assembleur.
Les registres
Les registres sont des petites zones mémoire dans le processeur où sont stockées les variables d'entrée ou de sortie d'un calcul. Chaque processeur n'a que quelques registres nommés AX, BX, CX, DX, etc.
Leur taille étant extrêmement limitée, leur tâche est de stocker une donnée uniquement le temps du calcul (quelques fractions de secondes) et d'envoyer le résultat en mémoire vive par la suite, quitte à récupérer le résultat dans la mémoire vive pour un calcul ultérieur.
Exemple : Quelques instructions de base
Chaque instruction assembleur a une équivalence binaire direct. Le processeur peut ainsi comprendre ces instructions.
Voici quelques exemples d'instructions de base pour le processeur Intel 8086 :
MOV destination source
: déplace une valeur fixe ou celle d'un registre dans un autre,INC registre
: additionne 1 à la valeur d'un registre,NEG registre
: change le signe de la valeur stockée dans un registre,IMUL destination source
: multiplie les valeurs et stocke le résultat dans le premier registre.
Attention : Traduire un langage de programmation en langage machine
L'écriture d'un programme informatique ne se fait la plupart du temps pas en assembleur.
On utilise des langages dits de plus haut niveau qui sont eux-mêmes traduits automatiquement en assembleur par un autre programme :
le compilateur pour les langages compilés (comme C ou C++),
ou l'interpréteur pour les langages interprétés (comme JavaScript ou Python).
Complément : Toutes les machines ne parlent pas exactement le même langage
Tous les processeurs comprennent un langage binaire. Cependant, chaque type de processeur a son propre jeu d'instructions.
Par exemple, la plupart des ordinateurs ont des processeurs utilisant un jeu d'instructions étendu (dit CISC) alors que les smartphones ont des processeurs utilisant un jeu d'instructions réduit (RISC). Ainsi, un code dans un langage de programmation donné sera traduit différemment en fonction du processeur cible.
À retenir
Un processeur ne traite que des instructions binaires.
L'assembleur est un langage composé d'instructions basiques et facile à traduire en binaire.
Une instruction dans un langage de programmation donné correspond à de multiples instructions en assembleur.
Impossible d'accéder à la ressource audio ou vidéo à l'adresse :
La ressource n'est plus disponible ou vous n'êtes pas autorisé à y accéder. Veuillez vérifier votre accès puis recharger la vidéo.