Langue Machine
Langue Machine
Langue Machine
Le langage machine, ou code machine, est la suite de bits qui est interprte par
le processeur d'un ordinateur excutant un programme informatique. C'est
le langage natif d'un processeur, c'est--dire le seul qu'il puisse traiter. Il est compos
d'instructions et de donnes traiter codes en binaire.
Chaque processeur possde son propre langage machine, dont un code machine qui ne peut
s'excuter que sur la machine pour laquelle il a t prpar. Si un processeur A est capable
d'excuter toutes les instructions du processeur B, on dit que A est compatible avec B. L'inverse
n'est pas forcment vrai : A peut avoir des instructions supplmentaires que B ne connat pas.
Le code machine est aujourd'hui gnr automatiquement, gnralement par le compilateur d'un
langage de programmation ou par l'intermdiaire d'un bytecode.
Sommaire
[masquer]
1Instructions du langage
o
1.1Opcode
2criture du code
3Exemples
3.1Processeur MIPS
3.2Processeur ARM
4Voir aussi
Instructions du langage[modifier
| modifier le code]
Les mots d'un langage machine sont appels instructions. Chacune d'elles dclenche une
commande de la part du processeur (par exemple : chercher une valeur dans la mmoire pour
charger un registre, additionner deux registres, etc.).
Un processeur architecture RISC ne reconnat que peu d'instructions diffrentes, alors qu'un
processeur architecture CISC en possde un large ventail. Nanmoins certains processeurs
CISC rcents transforment en interne les instructions complexes en une suite d'instructions
simples, qui sont alors excutes.
Un programme est juste une longue squence d'instructions qui sont excutes par le
processeur. Elles sont excutes squentiellement sauf quand une instruction de sauttransfre
l'excution une autre instruction que celle qui suit. Il existe galement des sauts conditionnels
qui sont soit excuts (l'excution continue une autre adresse), soit ignors (l'excution
continue l'instruction suivante) selon certaines conditions.
| modifier le code]
Lorsque toutes les instructions ont la mme taille elles sont galement alignes en mmoire. Par
exemple si toutes les instructions sont alignes sur 32 bits (4 octets), alors les deux bits de poids
faibles de l'adresse mmoire de n'importe quelle instruction sont zro. Cela permet notamment
une implmentation plus aise du cache des prdictions de branchement bimodales.
En revanche le code machine prend moins de place en mmoire s'il ne possde pas de taille
minimum, tant donn qu'on limine les champs non utiliss.
criture du code[modifier
| modifier le code]
Alors que le langage machine tait le seul disponible l'aube des ordinateurs, il est aujourd'hui
trs long et fastidieux de dvelopper en binaire : il faut passer par au moins un langage
intermdiaire.
De trs nombreux langages de programmation sont transforms en langage machine lors de
la compilation. Tous les programmes excutables contiennent au moins une petite partie en
langage machine.
Le langage le plus facile convertir en code machine est l'assembleur car il possde quasiment
les mmes instructions. L'assembleur (ou langage assembleur) diffre d'une machine une
autre, bien que les instructions soient au bout du compte trs semblables. Les langages de plus
haut niveau sont convertis en assembleur pendant la compilation. Les langages utilisant
une machine virtuelle passent par un bytecode qui est converti la vole par la machine virtuelle.