En la computación , un código de operación (en Inglés, código de operación , código de operación , el código máquina , código de comando , la instrucción sílaba , la instrucción de paquetes o OPSTRING ) es la parte de una investigación en lenguaje de máquina que especifica la operación a realizar.
Además del código de operación en sí, la mayoría de las instrucciones también especifican los datos que procesarán, en forma de operandos .
Además de los códigos de operación utilizados en conjuntos de instrucciones de varias unidades centrales de procesamiento , que son dispositivos de hardware, también se pueden utilizar en códigos de bytes de máquinas virtuales .
Las especificaciones y el formato de los códigos de operación se definen en el conjunto de instrucciones del procesador en cuestión, que puede ser una unidad central de procesamiento (CPU) o una unidad de procesamiento especializada (como un procesador gráfico o GPU). Los códigos de operación para un conjunto de instrucciones dado se pueden describir usando una tabla de códigos de operación que detalla todos los valores de códigos de operación posibles. Además del código de operación en sí, una instrucción normalmente también tiene uno o más especificadores de operandos (es decir, datos) sobre los cuales actuará la operación, aunque algunas operaciones pueden tener operandos implícitos o incluso ningún operando.
Algunos conjuntos de instrucciones tienen campos de longitud uniforme para códigos de operación y operandos, mientras que otros (la arquitectura x86, por ejemplo) tienen una estructura más complicada, con campos de longitud variable. Los conjuntos de instrucciones se pueden ampliar mediante el uso de prefijos de código de operación que agregan un subconjunto de nuevas instrucciones compuestas por códigos de operación existentes siguiendo secuencias de bytes reservadas.
Dependiendo de la arquitectura, los operandos pueden ser registros de procesador , valores en la pila de ejecución , direcciones RAM , puertos de E / S , etc. especificado y accesible mediante modos de direccionamiento más o menos complejos. Los tipos de operaciones incluyen la aritmética , las operaciones lógicas , la manipulación de bits , copia de datos y programa de control e instrucciones especiales (como la instrucción CPUID , que permite conocer ciertas características del procesador ).
El lenguaje ensamblador , o simplemente el ensamblador , es un lenguaje de programación de bajo nivel , que usa mnemónicos (para códigos de operación y operandos) para representar el código de máquina , mejorando la legibilidad y brindando un control preciso sobre las instrucciones. Hoy en día, la mayoría de los programas están hechos con lenguajes de programación de alto nivel , que son más fáciles de leer y escribir. Estos lenguajes deben ser compilados (traducidos al lenguaje ensamblador) o ejecutados por intérpretes .
Los códigos de operación también se utilizan en códigos de bytes y otras representaciones destinadas a un intérprete de software en lugar de un dispositivo de hardware. Estos conjuntos de instrucciones para software a menudo utilizan tipos de datos y operaciones de nivel ligeramente más alto que la mayoría de los equivalentes de hardware, pero no obstante se basan en principios similares. Los ejemplos incluyen el código de bytes que se encuentra en los archivos de clases de Java que luego son interpretados por la JVM , el código de bytes que se usa en GNU Emacs para el código Lisp compilado, Common Intermediate Language .NET y muchos más.
“[…] Cada operación que puede realizar el procesador se identifica mediante un número binario único conocido como código de instrucción. […] "