Page d'accueil encyclopedie-enligne.com en page d'accueil
Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées

Langage machine


image:Langage_progr.png
Cet article fait partie de
la série Langages de programmation
Langages orientés objet
Ada 95 - C++ - C#
Common lisp object system
Delphi - Eiffel - Java - Nice
Langages impératifs
APL - ASP
Assembleur
BASIC - C - Pascal
Perl - PHP - Python
Langages fonctionnels
ML/OCaml - Lisp/Common Lisp
Forth - Logo - Scheme
Langages déclaratifs
Clips - Prolog
Voir aussi
Conception - Codage
Tests - Optimisations

Le langage machine est la suite d'octets qui est interprétée par le microprocesseur de l'ordinateur lors de l'exécution d'un programme. C'est le langage natif du processeur. Il est aussi appelé code machine ou langage assembleur. Chaque processeur a son propre langage machine, mais il y a beaucoup de points communs entre tous. Si un processeur A est capable d'exécuter toutes les instructions du processeur B, on dit que A est compatible avec B. L'inverse n'est pas forcément vrai, A peut avoir des instructions supplémentaires que B ne connaît pas.

Les « mots » d'un langage machine sont appelées instructions. Chacune d'elles déclenche une commande de base du processeur (par exemple : va chercher une valeur dans la mémoire pour charger un registre, additionner 2 registres, etc.). Un programme est juste une longue liste d'instructions qui sont exécutées par le processeur. Normalement, elles sont exécutées les unes après les autres, en séquence, mais le déroulement du programme peut-être modifié par des instructions spéciales de saut qui transfèrent l'exécution à une autre instruction que celle qui suit. Des sauts conditionnels sont exécutés (l'exécution continue à une autre adresse) ou pas (l'exécution continue à l'instruction suivante) selon certaines conditions.

Les instructions sont simplement un groupement de bits -- différentes combinaisons correspondent à différentes commandes à la machine. La traduction la plus lisible du langage machine est appelé langage assembleur, qui est une traduction de chaque groupe de bits de l'instruction.

Certains processeurs donne à leurs instructions le même nombre de bits, tandis que la longueur de l'instruction diffère sur d'autres. L'organisation des combinaisons de bits dépend largement du processeur. Le plus commun est la division en champs. Un des champs ou plusieurs spécifie l'opération exacte (par exemple une addition). Les autres champs indiquent le type des opérandes, leur localisation, ou une valeur directement (les opérandes contenus dans une instruction sont appelés immédiat).

Comme exemple spécifique, regardons l'architecture MIPS. Ses instructions ont toujours une longueur de 32 bits. Le type général de l'instruction est donné par le champ op, les 6 bits de poids les plus forts (dans une représentation sur 32 bits, les 6 de gauche). Les instructions de type-J et de type-I sont pleinement spécifiées par le champ op. Les instructions de type-R ont un champ supplémentaire, fonct, pour déterminer la nature exacte de l'opération. Les champs de ces 3 types d'instructions sont :


 6 5 5 5 5 6 bits
[ op | rs | rt | rd |shamt| fonct] type-R
[ op | rs | rt | adresse/immédiat ] type-I
[ op | adresse cible ] type-J

rs, rt, et rd indique des opérandes de type registre ; shamt indique un décalage (shift amount) ; et le champ adresse ou immédiat contient un opérande sous forme de valeur.

Par exemple, ajouter les registres 1 et 2 et placer le résultat dans le registre 6 est codé :

[ op | rs | rt | rd |shamt| fonct]
 0 1 2 6 0 32 décimal
 000000 00001 00010 00110 00000 100000 binaire

Charger une valeur depuis la celulle mémoire 68 cellules après celle pointée par le registre 3 dans le registre 8 :

[ op | rs | rt | adresse/immédiat ]
 35 3 8 68 décimal
 100011 00011 01000 000000000001000100 binaire

Sauter à l'adresse 1025 (la prochaine instruction à exécuter se trouve à l'adresse 1025) :

[ op | adresse cible ]
 2 1025 décimal
 000010 000000000000000000010000000001 binaire

Articles connexes



This site support the Wikimedia Foundation. This Article originally from Wikipedia. All text is available under the terms of the GNU Free Documentation License Page HistoryOriginal ArticleWikipedia