Código de operación
# Código de operación

En informática, un opcode (operation code) o código de operación es la porción de una instrucción de lenguaje de máquina que especifica la operación a ser realizada. Su especificación y formato serán determinados por la arquitectura del conjunto de instrucciones (ISA) del componente de hardware de computador - normalmente un CPU, pero posiblemente una unidad más especializada. Una instrucción completa de lenguaje de máquina contiene un opcode y, opcionalmente, la especificación de uno o más operandos - sobre los que la operación debe actuar. Algunas operaciones tienen operandos implícitos, o de hecho ninguno. Algunas ISAs tiene instrucciones con campos definidos para los opcodes y operandos, mientras que otras (ej. la arquitectura Intel x86) tienen una estructura más complicada y de propósito específico. Los operandos sobre los cuales los opcodes aplican pueden, dependiendo de la arquitectura del CPU, consistir de. registros, valores en memoria, valores almacenados en la pila, puertos de I/O, bus, etc. Las operaciones que un opcode puede especificar pueden incluir aritmética, copia de datos, operaciones lógicas, y control del programa.

Los opcodes también pueden ser encontrados en los bytecodes interpretados por un interpretador de código de byte (o la máquina virtual, en un sentido de ese término). En estos, una arquitectura de conjunto de instrucciones es creada para ser interpretada por software en vez de un dispositivo de hardware. A menudo, los interpretadores de código de byte trabajan con tipos de datos y operaciones de más alto nivel, que el de un conjunto de instrucciones por hardware, pero son construidas a lo largo de líneas similares. Ejemplos incluyen la máquina virtual de Java (JVM) del lenguaje de programación Java, el código de byte usado en GNU Emacs para el código compilado de LISP, y muchos otros.

El lenguaje de máquina es tedioso y difícil para que los seres humanos lo programen directamente, así que si la abstracción dada por un lenguaje de programación de alto nivel no es deseada, un lenguaje ensamblador es usado. Aquí, son usadas las instrucciones mnemónicas que corresponden a las especificaciones del opcode y el operando de las instrucciones de lenguaje de máquina generadas. Esto da un mayor nivel de legibilidad y comprensibilidad, que trabajando directamente con operaciones de lenguaje de máquina, mientras que todavía da el control exacto del lenguaje de máquina generado. Un programa llamado ensamblador transforma el lenguaje ensamblador en código de máquina.

