Les processeurs utilisent un ensemble d'instructions appelé code machine. , qui sont des nombres binaires (séquences de 0 et de 1). Ces instructions sont très basiques et effectuent des opérations simples telles que :
* Opérations arithmétiques et logiques : Addition, soustraction, multiplication, division, comparaison (supérieur à, inférieur à, égal à), ET logique, OU, NON, etc.
* Mouvement de données : Déplacement de données entre les registres (mémoire interne du processeur), les emplacements de mémoire et les périphériques d'entrée/sortie. Cela inclut le chargement des données de la mémoire dans un registre, le stockage des données d'un registre dans la mémoire et le transfert de données entre les registres.
* Flux de contrôle : Changer l'ordre dans lequel les instructions sont exécutées. Cela comprend :
* Saut/Branche : Changer le pointeur d'instruction vers une adresse différente en mémoire, permettant une exécution conditionnelle (instructions if-then-else) et des boucles.
* Appel/Retour : Appel de sous-programmes (fonctions) et retour au point d'appel.
* Entrée/Sortie (E/S) : Communiquer avec des périphériques externes tels que des claviers, des souris, des écrans, des disques durs et des interfaces réseau.
* Contrôle du système : Instructions liées à la gestion du processeur lui-même, telles que la gestion des interruptions (signaux indiquant des événements nécessitant une attention immédiate) et la modification des modes du processeur (par exemple, basculer entre le mode utilisateur et le mode noyau).
Ces instructions de base sont combinées pour créer des opérations et des programmes plus complexes. Il est important de noter que les instructions *spécifiques* varient considérablement selon les différentes architectures de processeur (x86, ARM, RISC-V, etc.). Chaque architecture possède sa propre architecture de jeu d'instructions (ISA), définissant les instructions qu'elle comprend. Bien que les catégories d'instructions soient similaires, les opcodes exacts (représentations binaires des instructions) et leurs fonctionnalités diffèrent.
Les programmeurs travaillent rarement directement avec le code machine. Au lieu de cela, ils utilisent des langages de programmation de niveau supérieur (comme C++, Java, Python) qui sont ensuite compilés ou interprétés en code machine que le processeur peut exécuter. Les assembleurs traduisent le langage assembleur (une représentation lisible par l'homme du code machine) en code machine.
|