BYTECODE
El bytecode es un código intermedio más abstracto que el código maquina.
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 maquina.
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 interprete de bytecode (en general llamado maquina 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, Phyton. En el caso de Java se suele trasmitir 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.
No hay comentarios.:
Publicar un comentario