En informatique, un code opération (en anglais, opcode, operation code, machine code, instruction code, instruction syllable, instruction parcel ou opstring) est la partie d'une instruction en langage machine qui spécifie l'opération à effectuer. Outre le code opération lui-même, la plupart des instructions précise également les données qu'elles vont traiter, sous forme d'opérandes. En plus des codes opérations utilisés dans les jeux d'instructions de diverses unités centrales de traitement, qui sont des dispositifs matériels, ils peuvent également être utilisés dans les bytecodes de machines virtuelles. Les spécifications et le format des codes opérations sont définis dans le jeu d'instructions du processeur en question, qui peut être une unité centrale de traitement (UCT ou CPU en anglais) ou une unité de traitement spécialisée (comme un processeur graphique ou GPU) . Les codes opérations pour un jeu d'instructions donné peuvent être décrits à l'aide d'une table de codes opérations détaillant toutes les valeurs de codes opérations possibles. Outre le code opération lui-même, une instruction comporte normalement aussi un ou plusieurs spécificateurs d'opérandes (c'est-à-dire de données) sur lesquels l'opération doit agir, bien que certaines opérations puissent avoir des opérandes implicites, voire aucun opérande. Certains jeux d'instructions ont des champs de longueurs uniformes pour les codes opérations et les opérandes, alors que d'autres (l'architecture x86 par exemple) ont une structure plus compliquée, avec des champs de longueurs variables. Les jeux d'instructions peuvent être étendus par l'utilisation de préfixes au code opération qui ajoutent un sous-ensemble de nouvelles instructions composées de codes opérations existants suivant des séquences d'octets réservées. Selon l'architecture, les opérandes peuvent être des registres de processeur, des valeurs dans la pile d'exécution, des adresses de mémoire vive, des ports d'entrées-sorties, etc. spécifiés et accessibles en utilisant des modes d'adressage plus ou moins complexes.
Christoph Koch, Ioannis Klonatos, Amir Shaikhha