Le processeur ne comprend pas les commandes de la même manière qu’un humain comprend les mots. Au lieu de cela, il comprend le code machine , qui est une séquence de chiffres binaires (0 et 1). Ces séquences binaires représentent des instructions que les circuits du processeur sont conçus pour exécuter. Ces instructions sont très basiques et impliquent généralement des opérations telles que :
* Opérations arithmétiques et logiques : Addition, soustraction, multiplication, division, AND, OR, XOR, comparaison de valeurs.
* Mouvement de données : Chargement des données de la mémoire dans les registres, stockage des données des registres dans la mémoire, déplacement des données entre les registres.
* Flux de contrôle : Branchement (saut) vers différentes parties du programme en fonction de conditions, boucle (répétition d'instructions), appel de sous-programmes (fonctions).
* Entrée/Sortie (E/S) : Communiquer avec des périphériques comme le disque dur, le clavier, l'écran, etc.
Ces instructions de base sont collectivement appelées architecture du jeu d'instructions (ISA). du processeur. Différentes architectures de processeur (comme x86, ARM, RISC-V) ont des ISA différents, ce qui signifie qu'elles ont différents ensembles d'instructions de code machine.
Il est important de noter :
* Langage assembleur : Les programmeurs écrivent rarement directement en code machine. Au lieu de cela, ils utilisent le langage assembleur, qui est une représentation lisible du code machine. Un assembleur traduit ensuite le code assembleur en code machine.
* Langues de niveau supérieur : La plupart des programmes sont effectués dans des langages de niveau supérieur (comme C++, Java, Python) qui sont encore plus abstraits du code machine. Les compilateurs ou interprètes traduisent ces langages de haut niveau en code machine que le processeur peut exécuter.
Ainsi, alors que le processeur « comprend » uniquement les instructions binaires du code machine, le processus de création et d’exécution de programmes implique plusieurs couches d’abstraction pour rendre la programmation plus gérable pour les humains.
|