Está en la página 1de 3

Bytecode

El bytecode es un código intermedio más abstracto que el código máquina. Habitualmente, es tratado como
un archivo binario que contiene un programa ejecutable similar a un módulo objeto, que es un archivo
binario producido por el compilador cuyo contenido es el código objeto o código máquina .

El bytecode recibe su nombre porque usualmente cada código de operación tiene una longitud de un byte,
si bien la longitud del código de las instrucciones varía. Cada instrucción tiene un código de operación
entre 0 y 255 seguido de parámetros tales como los registros o las direcciones de memoria. Esta sería la
descripción de un caso típico, si bien la especificación del bytecode depende ampliamente del lenguaje.

Como código intermedio, se trata de una forma de salida utilizada por los implementadores de lenguajes
para reducir la dependencia respecto del hardware específico y facilitar la interpretación. Menos
frecuentemente se utiliza el bytecode como código intermedio en un compilador. Algunos sistemas,
llamados traductores dinámicos o compiladores just-in-time, traducen el bytecode a código máquina
inmediatamente antes de su ejecución para mejorar la velocidad de ejecución.

Los programas en bytecode suelen ser interpretados por un intérprete de bytecode (en general, llamado
máquina virtual, dado que es análogo a un ordenador). Su ventaja es su portabilidad: el mismo código
binario puede ser ejecutado en diferentes plataformas y arquitecturas. Es la misma ventaja que presentan los
lenguajes interpretados. Sin embargo, como el bytecode es en general menos abstracto, más compacto y
más orientado a la máquina que un programa pensado para su modificación por humanos, su rendimiento
suele ser mejor que el de los lenguajes interpretados. A causa de esa mejora en el rendimiento, muchos
lenguajes interpretados, de hecho, se compilan para convertirlos en bytecode y después son ejecutados por
un intérprete de bytecode. Entre esos lenguajes se encuentran Perl, Gambas, PHP y Python. En el caso de
Java se suele transmitir como bytecode a la máquina receptora, que utiliza un compilador just-in-time para
compilar el bytecode en código máquina nativo antes de su ejecución, ahorrando así procesos de
interpretación.

Son asimismo interesantes los denominados p-Codes, similares a bytecodes pero cuyos códigos de
operación pueden constar de más de un byte y pueden ser variables en tamaño, como los opcodes de
muchas CPUs. Estos códigos trabajan a muy alto nivel, incluyendo instrucciones del estilo de «imprime
esta cadena» o «borra la pantalla». Por ejemplo, BASIC utiliza p-Code.

En noviembre de 2019, Mozilla, Fasty, Intel y Red Hat forman la Bytecode Alliance, una empresa que
tiene por finalidad promover el uso del lenguaje WebAssembly en entornos Linux e integrando cualquier
navegador; como Safari, Chrome o Firefox.1 ​

Ejemplos
>>> import dis # "dis" - Desensamblador de código de bytes de Python en mnemónicos.

>>> dis.dis('print("¡Hola, Mundo!")')

1 0 LOAD_NAME 0 (print)

2 LOAD_CONST 0 ('¡Hola, mundo!')

4 CALL_FUNCTION 1

6 RETURN_VALUE

ActionScript se ejecuta en la máquina virtual de ActionScript (AVM), que forma parte de


Flash Player y AIR. El código ActionScript se transforma normalmente en formato bytecode
mediante un compilador. Entre los ejemplos de compiladores se incluyen uno incorporado a
Adobe Flash Professional y otro incorporado a Adobe Flash Builder y disponible en el
Adobe Flex SDK.
Objetos de Adobe Flash
BANCStar, originalmente bytecode para una herramienta de construcción de interfaces
pero utilizado también como lenguaje
Berkeley Packet Filter
Biblioteca de ingeniería de código de bytes
Compiladores de C a máquina virtual Java
CLISP implementación de Common Lisp solía compilar sólo a bytecode durante muchos
años; sin embargo, ahora también soporta la compilación a código nativo con la ayuda de
GNU lightning
CMUCL y Scieneer Common Lisp implementaciones de Common Lisp pueden compilar
tanto a código nativo como a bytecode, que es mucho más compacto
Common Intermediate Language ejecutado por Common Language Runtime, utilizado por
lenguajes de .NET Framework como C#
Dalvik bytecode, diseñado para la plataforma Android, es ejecutado por la máquina virtual
Dalvik
El bytecode Dis, diseñado para el Inferno (sistema operativo), es ejecutado por la máquina
virtual Dis
EiffelStudio para el lenguaje de programación Eiffel
EM, la máquina virtual Amsterdam Compiler Kit utilizada como lenguaje intermedio de
compilación y como lenguaje moderno de bytecode
Emacs es un editor de texto con la mayoría de sus funciones implementadas por Emacs
Lisp, su dialecto incorporado de Lisp. Estas funciones se compilan en bytecode. Esta
arquitectura permite a los usuarios personalizar el editor con un lenguaje de alto nivel, que
después de la compilación en bytecode produce un rendimiento razonable.
La implementación de Embeddable Common Lisp de Common Lisp puede compilar a
bytecode o código C
La implementación Ericsson de Erlang utiliza bytecodes BEAM
Icon y Unicon lenguajes de programación
Infocom utilizó el Z-machine para hacer más portables sus aplicaciones de software
Java bytecode, que es ejecutado por la máquina virtual Java
ASM
BCEL
Javassist
JMangler
KEYB, el controlador de teclado de MS-DOS/PC  DOS con su archivo de recursos
KEYBOARD.SYS que contiene información de diseño y secuencias cortas de p-code
ejecutadas por un intérprete dentro del controlador residente.
LSL, un lenguaje de scripting utilizado en los mundos virtuales compila en bytecode que se
ejecuta en una máquina virtual. Second Life tiene la versión original Mono, Inworldz
desarrolló la versión Phlox.
Lua el lenguaje utiliza una máquina virtual bytecode basada en registros
m-code del lenguaje MATLAB
Multiplan
O-code del lenguaje de programación BCPL
OCaml del lenguaje compila opcionalmente a una forma compacta de bytecode
p-code de la implementación UCSD Pascal del lenguaje Pascal
Máquina virtual Parrot
Pick BASIC también conocido como Data BASIC o MultiValue BASIC
El Entorno R para la computación estadística ofrece un compilador de bytecode a través del
paquete compilador, ahora estándar con la versión 2.13.0 de R. Es posible compilar esta
versión de R para que los paquetes base y recomendados lo exploten.
Pyramid 2000 juego de aventuras
Scheme 48 implementación de Scheme usando el intérprete de bytecode
Bytecodes de muchas implementaciones del lenguaje Smalltalk
El Spin interpreter integrado en el Parallax Propeller microcontrolador
El motor de base de datos SQLite traduce las sentencias SQL a un formato de código de
bytes a medida.
SWEET16
Tcl
Tiny BASIC
Visual FoxPro compila a bytecode
WebAssembly
YARV y Rubinius para Ruby

Referencias
1. «Mozilla, Fasty, Intel y Red Hat forman la Bytecode Alliance.» (https://www.muycomputerpro.
com/2019/11/13/bytecode-alliance-para-ampliar-webassembly).

Obtenido de «https://es.wikipedia.org/w/index.php?title=Bytecode&oldid=138835035»

Esta página se editó por última vez el 7 oct 2021 a las 03:32.

El texto está disponible bajo la Licencia Creative Commons Atribución Compartir Igual 3.0;
pueden aplicarse
cláusulas adicionales. Al usar este sitio, usted acepta nuestros términos de uso y nuestra política de privacidad.
Wikipedia® es una marca registrada de la Fundación Wikimedia, Inc., una organización sin ánimo de lucro.

También podría gustarte