Qu'est-ce qu'un jeu d'instructions ?

click fraud protection

Tout processeur est conçu dès le départ pour prendre en charge un jeu d'instructions particulier. Un jeu d'instructions est un ensemble d'opérations codées en dur que le processeur peut effectuer. Ces opérations peuvent être, par exemple, l'addition de deux nombres, le saut à une autre partie du programme ou la comparaison de deux valeurs. Chaque opération qu'un ordinateur peut effectuer est représentée de manière unique par un opcode.

Opcodes

Lors de l'exécution d'un programme, la CPU utilise un compteur de programme pour suivre quelle instruction doit être exécutée ensuite. Lorsqu'une instruction est extraite, le compteur de programme est incrémenté de la longueur de l'instruction de sorte qu'il pointe vers le début de l'instruction suivante. Chaque instruction est constituée d'un opcode. Selon l'instruction, elle peut inclure ou non des opérandes. Les opérandes peuvent être une valeur constante ou un pointeur vers l'emplacement d'une valeur dans le registre CPU ou dans la RAM système.

Une fois que l'instruction complète a été récupérée, elle doit être décodée. C'est le processus où le CPU sépare l'opcode et tous les opérandes. L'opcode décodé est utilisé pour activer ou désactiver des voies électriques spécifiques dans le CPU qui se traduiront par un fonctionnement correct.

Une fois l'instruction décodée, elle sera exécutée. Le comportement exact du CPU dépendra de l'opération. Une opération d'addition additionnera deux valeurs ensemble. Une opération de saut calculera où dans le programme aller. Une opération de comparaison comparera deux valeurs. Une opération NOP restera inactive, car NOP signifie Aucune opération.

La plupart des instructions afficheront alors le résultat de l'opération. Cette sortie peut aller dans les registres du processeur et, si nécessaire, dans la RAM système. Chacune de ces opérations prend un seul cycle d'horloge pour se terminer.

Opcodes illégaux

Chaque architecture de CPU a sa liste spécifique d'opcodes publiée par le fabricant. Les valeurs de ces opcodes ne sont pas nécessairement les mêmes sur plusieurs plates-formes, c'est pourquoi les logiciels doivent être compilés pour différentes architectures. Dans certains cas, le fabricant inclut également des opcodes non documentés. Ceux-ci sont appelés «opcodes illégaux». Les opcodes illégaux, bien que non documentés, rempliront la même fonction à chaque fois qu'ils seront appelés. Cependant, en tant que fonctionnalités non documentées et non standard, les mises à jour de l'architecture du processeur peuvent simplement les supprimer.

Certains premiers jeux informatiques sur Apple II reposaient sur des opcodes illégaux spécifiques. Ils ont ensuite souffert de problèmes de performances et de stabilité sur la dernière révision du processeur Apple IIc, car l'IIc a supprimé les opcodes illégaux requis par les jeux. Des opcodes illégaux ont également été utilisés dans les cercles de protection du droit d'auteur comme méthode de sécurité par le biais de l'obscurité dans leur lutte contre les pirates craquant leur contenu. Certains opcodes illégaux sont simplement conçus comme des outils de débogage et des gestionnaires d'erreurs.

Le jeu d'instructions x86 contient un grand nombre d'opcodes illégaux non documentés. Fait intéressant, certains d'entre eux sont partagés entre les processeurs Intel et AMD, ce qui indique que les deux sociétés sont publiquement conscientes de leur objectif sans papiers.

Compilateurs et assembleur

La plupart des programmes sont écrits dans des langages de haut niveau. Ceux-ci sont relativement faciles à lire, utilisant souvent des mots anglais ou des raccourcis pour minimiser les courbes d'apprentissage. Pour qu'un ordinateur puisse exécuter ces programmes, ils doivent être compilés. Un compilateur est essentiellement un traducteur. Il prend le code de haut niveau et le convertit en code informatique, les instructions que le CPU peut comprendre.

Il est également possible, dans certains langages, d'exécuter du code non compilé via un programme préalablement compilé qui génère du code machine à la volée. L'assemblage est un langage de programmation de bas niveau qui utilise des raccourcis pour permettre aux développeurs une visibilité et un contrôle directs sur les opérations effectuées. NOP est un exemple de raccourci d'assemblage.

Conclusion

Un jeu d'instructions est une liste de fonctions officielles qu'une architecture CPU peut exécuter. Il s'agit d'une liste d'opérations pouvant être effectuées. Ces opérations sont codées en dur dans le processeur et appelées à l'aide de leurs opcodes respectifs.

Le logiciel utilise généralement un compilateur pour traduire du code de haut niveau lisible par l'homme en code machine que le processeur peut lire. Parfois, une architecture CPU peut avoir des opcodes non documentés, appelés opcodes illégaux. Les opcodes illégaux font techniquement partie du jeu d'instructions. Cependant, ils peuvent ne pas être disponibles de manière fiable dans les futures itérations de la plate-forme. N'oubliez pas de laisser vos pensées dans les commentaires ci-dessous.