Sunteți pe pagina 1din 3

Langage machine

Encodage binaire des codes ASCII du mot Wikipedia

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

1.2Longueur des instructions


1.2.1Avantages et inconvnients

2criture du code

3Exemples

3.1Processeur MIPS

3.2Processeur ARM
4Voir aussi

Instructions du langage[modifier

| modifier le code]

Article dtaill : Instruction informatique.

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.

Opcode[modifier | modifier le code]


Chaque instruction commence par un nombre appel opcode (ou code opration) qui dtermine
la nature de l'instruction. Par exemple, pour les ordinateurs d'architecture x86, l'opcode 0x6A (en
binaire 01101010) correspond l'instruction push (ajouter une valeur en haut de la pile). Par
consquent, l'instruction 0x6A 0x14 (01101010 00010100) correspond push 0x14 (ajouter la
valeur hexadcimale 0x14 , ou 20 en dcimal, en haut de la pile).

Longueur des instructions[modifier | modifier le code]


Certains processeurs codent toutes leurs instructions avec le mme nombre de bits (par
exemple : ARM, MIPS, PowerPC), tandis que chez d'autres la longueur de l'instruction dpend de
l'opcode (exemple : x86). L'organisation des combinaisons de bits dpend largement du
processeur. Le plus commun est la division en champs. Un ou plusieurs champs spcifient
l'opration exacte (par exemple une addition). Les autres champs indiquent le type des
oprandes, leur localisation, ou une valeur littrale (les oprandes contenus dans une instruction
sont appels immdiat).
Avantages et inconvnients[modifier

| 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]

Exemple de fichier binaire excutable, reprsent en hexadcimal.

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.

S-ar putea să vă placă și