Leçon 8 : Le code machine et l'assembleur
On a vu que le CPU exécute des instructions via le cycle chercher-décoder-exécuter, mais qu'y a-t-il exactement à l'intérieur de ces instructions ? Tout en bas se trouve le code machine — un flux de 0 et de 1 où chaque instruction est composée d'un opcode (quelle opération effectuer) et d'opérandes
Le code machine, ce sont des instructions en 0 et en 1 que le CPU exécute. L'assembleur, ce sont ces mêmes instructions exactement, mais écrites avec des noms courts que les humains peuvent lire — comme « ADD » au lieu d'une rangée de zéros et de uns.
- Code machine
- Des instructions binaires (des suites de 0 et de 1) que le CPU exécute directement, sans traduction supplémentaire.
- Opcode
- La partie d'une instruction qui indique quelle opération effectuer (additionner, copier, sauter). Le nom est une contraction d'« Operation Code ».
- Opérande
- La partie d'une instruction qui désigne sur quoi agir : un registre, une valeur numérique, ou une adresse mémoire.
- Jeu d'instructions (ISA)
- Le contrat qui définit chaque instruction qu'un CPU peut exécuter et comment chacune est encodée ; x86 et ARM en sont des exemples réels.
- Assembleur
- Une représentation lisible par l'humain et en correspondance directe du code machine : chaque ligne d'assembleur correspond à une instruction machine.
- Mnémonique
- Le nom court d'une opération en assembleur, comme MOV, ADD ou JMP, qui tient lieu de l'opcode binaire.
- Registre
- Une minuscule cellule de stockage extrêmement rapide, à l'intérieur même du CPU, qui retient les valeurs sur lesquelles opèrent les instructions.
- Encodage des instructions
- Le motif binaire exact qu'un mnémonique et ses opérandes deviennent pour que le CPU puisse l'exécuter.
- RISC contre CISC
- Deux approches de conception d'un jeu d'instructions : RISC avec peu d'instructions simples (comme ARM), CISC avec beaucoup d'instructions complexes (comme x86).
- Saut / branchement
- Une instruction qui change quelle instruction s'exécute ensuite — parfois de façon conditionnelle — ce qui permet d'implémenter boucles et conditions en code machine.