En informática, un código de operación u opcode (acrónimo inglés de operation code) 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 en 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 encontrarse 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 de ello son 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, de modo que, si no se desea la abstracción dada por un lenguaje de programación de alto nivel, se emplea un lenguaje ensamblador. Aquí, se usan 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 al trabajar directamente con operaciones de lenguaje de máquina, a la vez que sigue dando un control preciso del lenguaje de máquina generado. Un programa llamado ensamblador transforma el lenguaje ensamblador en código de máquina.

Referencias

editar

📚 Artikel Terkait di Wikipedia

Bytecode Java

Java oficial, desde su versión 7, también incluye el opcode invokedynamic. VM Spec - Reserved Opcodes Nutter, Charles (3 de enero de 2007). «InvokeDynamic:

Halt and Catch Fire

microprocesador Motorola 6800 fue el primero en incluir un opcode 'HCF' que se hiciera conocido. El origen del opcode HCF del 6800 (0xDD o 0xD9) está en un artículo

MOS 6510

en el Commodore 128. Todas estas CPU eran compatibles a nivel opcode (incluyendo opcodes no documentados).​ La unidad de disco Commodore 1551 usaba el

R800 (CPU)

la causa de fallar en los test ZEXALL) y el opcode indocumentado llamado SLL es reemplazado por otro opcode indocumentado llamado TST. En la parte hardware

Lenguaje ensamblador

(hexadecimal: B061) El mnemónico MOV es un código de operación u "opcode". El opcode es seguido por una lista de argumentos o parámetros, completando una

PHP accelerator

código como los esfuerzos de optimización se realiza solo una vez. Benchmark OPCode Cache para PHP Benchmarking Drupal with PHP op-code caches: APC, eAccelerator

Shellcode

Prototipo Ejec ' Variables. Var ShellCode[]:Byte ' Matriz de byte para los OpCode.. Var Prototipo:Ejec ' Prototipo que ejecutara el ShellCode. ' Inicializamos/cargamos

Zilog Z800

2008). «R800 additional opcodes over Z80». Consultado el 16 de julio de 2009.  Harston, J.G. (9 de septiembre de 1997). «Z80 Opcode Map». Archivado desde