Langage machine
Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.
Langages à objets
C++ - C# - D
Delphi - Eiffel - Groovy
Java - Lisaac - Python - Ruby
Simula - Smalltalk
Visual Basic - WLangage
Langages impératifs
APL - ASP - Assembleur
BASIC (En programmation, BASIC est un acronyme pour Beginner's All-purpose Symbolic Instruction Code. qui désigne une famille de langages de programmations de haut niveau.) - C - Cobol (COBOL est un langage de programmation de troisième génération créé en 1959 (officiellement le 18 Septembre 1959). Son nom est...) - Natural (Natural est un langage de programmation semi-compilé, édité par la société allemande Software AG.)
Forth - Fortran - Limbo
Logo - Pascal - Perl - PHP (PHP (sigle de PHP: Hypertext Preprocessor), est un langage de scripts libre principalement utilisé pour produire des pages Web dynamiques via un...)
Langages fonctionnels
Haskell - ML/OCaml
Lisp/Common Lisp
Scheme - XSLT
Langages déclaratifs
Clips - Prolog
Langages concurrents
Ada 95 - Erlang
Voir aussi
Conception - Codage (De façon générale un codage permet de passer d'une représentation des données vers une autre.)
Tests - Optimisations

Le langage machine (Le langage machine est la suite de bits qui est interprétée par le processeur de l'ordinateur lors de l'exécution d'un programme. C'est le langage natif du processeur. Il est aussi appelé code machine. Chaque...) est la suite de bits qui est interprétée par le processeur (Le processeur, ou CPU (de l'anglais Central Processing Unit, « Unité centrale de traitement »), est le composant de l'ordinateur qui exécute...) de l'ordinateur (Un ordinateur est une machine dotée d'une unité de traitement lui permettant d'exécuter des programmes enregistrés. C'est un ensemble de circuits...) lors de l'exécution d'un programme. C'est le langage natif du processeur. Il est aussi appelé code machine. 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 (En mathématiques, l'inverse d'un élément x d'un ensemble muni d'une loi de composition interne · notée multiplicativement, est un...) 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 (Commande : terme utilisé dans de nombreux domaines, généralement il désigne un ordre ou un souhait impératif.) de base du processeur (par exemple : chercher une valeur dans la mémoire (D'une manière générale, la mémoire est le stockage de l'information. C'est aussi le souvenir d'une information.) pour charger un registre, additionner deux registres, etc.). Un programme est juste une longue séquence d'instructions qui sont exécutées par le processeur. Elles sont exécutées séquentiellement sauf quand une instruction (Une instruction est une forme d'information communiquée qui est à la fois une commande et une explication pour décrire l'action, le comportement, la méthode ou la tâche qui devra commencer, se...) de saut transfère 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.

Chaque instruction est caractérisée par un numéro appelé opcode ou code opération. Ainsi, une instruction est 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. Par exemple, pour les ordinateurs d'architecture (L’architecture peut se définir comme l’art de bâtir des édifices.) x86 (La famille x86 regroupe les microprocesseurs compatibles avec le jeu d'instructions de l'Intel 8086. Cette série est nommée IA-32 (pour Intel architecture 32 bits) par Intel pour ses processeurs à...), l'opcode 0x6A correspond à l'instruction push et l'opcode 0x74 à je (jump if equal).

Certains processeurs donnent à leurs instructions le même nombre (La notion de nombre en linguistique est traitée à l’article « Nombre grammatical ».) de bits, tandis que la longueur (La longueur d’un objet est la distance entre ses deux extrémités les plus éloignées. Lorsque l’objet est filiforme ou en...) de l'instruction diffère sur d'autres. L'organisation (Une organisation est) des combinaisons de bits dépend largement du processeur. Le plus commun est la division (La division est une loi de composition qui à deux nombres associe le produit du premier par l'inverse du second. Si un nombre est non nul, la fonction "division par ce nombre" est la réciproque de la fonction...) 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 littéral (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 (Un champ correspond à une notion d'espace défini:) op, les 6 bits de poids (Le poids est la force de pesanteur, d'origine gravitationnelle et inertielle, exercée par la Terre sur un corps massique en raison uniquement du voisinage de la Terre. Elle est égale à l'opposé de la...) 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 (Les adresses forment une notion importante en communication, elles permettent à une entité de s'adresser à une autre parmi un ensemble d'entités. Pour qu'il n'y ait pas d'ambiguïté, chaque adresse doit correspondre à une unique entité,...) 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 cellule 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 
 
 
 OIIOOIOI OIIIIOIO   OIIOOOOI OIIOIOOI OIIOOIOO 
 
Page générée en 0.058 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique