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.
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.
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).
0 comentarios:
Publicar un comentario