Ir al contenido
Menú principal
Menú principal
mover a la barra lateral
ocultar
Navegación
Página principal
Cambios recientes
Página aleatoria
Ayuda sobre MediaWiki
Buscar
Buscar
español
Apariencia
Crear una cuenta
Acceder
Herramientas personales
No has accedido
Discusión
Contribuciones
Crear una cuenta
Acceder
Edición de «
Bytecode
»
Página
Discusión
español
Leer
Editar
Editar código
Ver historial
Herramientas
Herramientas
mover a la barra lateral
ocultar
Acciones
Leer
Editar
Editar código
Ver historial
General
Lo que enlaza aquí
Cambios relacionados
Información de la página
Apariencia
mover a la barra lateral
ocultar
Advertencia:
no has iniciado sesión. Tu dirección IP se hará pública si haces cualquier edición. Si
inicias sesión
o
creas una cuenta
, tus ediciones se atribuirán a tu nombre de usuario, además de otros beneficios.
Comprobación antispam. ¡
No
rellenes esto!
{{Problemas artículo|refs|t=20140120235800|informática}} El '''''bytecode''''' o '''código intermedio'''<ref>{{Cita libro|título=Fundamentos de sistemas operativos|url=https://books.google.es/books?id=836YCgAAQBAJ&pg=PA312&dq=bytecode+%22c%C3%B3digo+intermedio%22&hl=es&sa=X&ved=2ahUKEwjSj4nK86_5AhUEqaQKHTXPCToQ6AF6BAgCEAI#v=onepage&q=bytecode%20%22c%C3%B3digo%20intermedio%22&f=false|editorial=Lulu.com|fecha=2015-09-09|fechaacceso=2022-08-05|isbn=978-607-02-6544-0|idioma=es|nombre=Gunnar|apellidos=Wolf}}</ref><ref>{{Cita libro|título=Programación Orientada a Objetos|url=https://books.google.es/books?id=FI6fDwAAQBAJ&pg=PA31&dq=bytecode+%22c%C3%B3digo+intermedio%22&hl=es&sa=X&ved=2ahUKEwjSj4nK86_5AhUEqaQKHTXPCToQ6AF6BAgLEAI#v=onepage&q=bytecode%20%22c%C3%B3digo%20intermedio%22&f=false|editorial=Grupo Editorial RA-MA|fechaacceso=2022-08-05|idioma=es|nombre=Juan Carlos Moreno|apellidos=Pérez}}</ref><ref>{{Cita libro|título=Apex Computer Science Terminology for Interpreters. English-Spanish glossary.|url=https://books.google.es/books?id=QiXVUtyGxGAC&pg=PA41&dq=bytecode+%22c%C3%B3digo+intermedio%22&hl=es&sa=X&ved=2ahUKEwis_OKM9K_5AhXZOuwKHfjFA_sQ6AF6BAgEEAI#v=onepage&q=bytecode%20%22c%C3%B3digo%20intermedio%22&f=false|editorial=Rosie Zapien|fecha=2005|fechaacceso=2022-08-05|isbn=978-0-9772521-4-5|idioma=|nombre=Rosa Hernández de Lapién|apellidos=Zapien}}</ref> es un [[lenguaje intermedio]] más abstracto que el [[lenguaje de máquina|lenguaje máquina]]. Habitualmente, es tratado como un archivo [[sistema binario|binario]] que contiene instrucciones destinadas a ser ejecutadas por una [[máquina virtual]], a diferencia de un módulo objeto tradicional producido por el [[compilador]], cuyo contenido es [[código objeto]] o código máquina. El código intermedio recibe su nombre porque usualmente el [[código de operación]] (''opcode'') tiene una longitud de un [[byte]], si bien la longitud total de las instrucciones puede variar. 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 o ejecución en distintos entornos. Menos frecuentemente se utiliza el bytecode como código intermedio en un compilador. Algunos sistemas, llamados traductores dinámicos o ''compiladores justo a tiempo,'' traducen el ''bytecode'' a código máquina inmediatamente antes o durante su ejecución para mejorar la velocidad de ejecución. Los programas en ''bytecode'' suelen ser interpretados por un [[intérprete (informática)|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 depender del diseño de la máquina virtual y de las técnicas de ejecución empleadas. 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 (lenguaje de programación)|Java]] se suele transmitir como ''bytecode'' a la máquina receptora, que puede utilizar un compilador ''[[Compilación_en_tiempo_de_ejecución|just-in-time]]'' para compilar el ''bytecode'' en código máquina nativo antes o durante su ejecución. Son asimismo interesantes los denominados códigos p, similares a los códigos intermedios 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 CPU. 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, Fastly, 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.<ref>{{Cita web|url=https://www.muycomputerpro.com/2019/11/13/bytecode-alliance-para-ampliar-webassembly|título=Mozilla, Fastly, Intel y Red Hat forman la Bytecode Alliance.}}</ref> == Ejemplos == <syntaxhighlight lang="python"> >>> 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 </syntaxhighlight> * [[ActionScript]] se ejecuta en la máquina virtual de ActionScript (AVM), que forma parte de Flash Player y [[Adobe AIR|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 Sharp|C#]]. * Dalvik bytecode, diseñado para la plataforma [[Android (sistema operativo)|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 (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 (lenguaje de programación)|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 código p ejecutadas por un intérprete dentro del controlador residente. * LSL, un lenguaje de ''script'' 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'' * Código p de la implementación [[UCSD Pascal]] del lenguaje [[Pascal (lenguaje de programación)|Pascal]] * [[Máquina virtual Parrot]] * Pick BASIC también conocido como Data BASIC o MultiValue BASIC * El [[R (lenguaje de programación)|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 interprete ''spin'' integrado en el microcontrolador Propeller de [[Parallax (compañía)|Parallax]] * 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#Implementación en una máquina virtual|Tiny BASIC]] * [[Visual FoxPro]] compila a bytecode * [[WebAssembly]] * YARV y [[Rubinius]] para [[Ruby (lenguaje de programación)|Ruby]] == Referencias == {{listaref}} {{Control de autoridades}} [[Categoría:Compiladores]]
Resumen:
Al guardar los cambios aceptas los
términos de uso
y liberas de forma irrevocable tu contribución conforme a los términos de las licencias
licencia CC BY-SA 4.0
y
GFDL
. Aceptas igualmente que un hipervínculo o URL es atribución suficiente conforme a la licencia Creative Commons.
Cancelar
Ayuda de edición
(se abre en una ventana nueva)
Plantillas usadas en esta página:
Plantilla:Aviso
(
editar
)
Plantilla:Cita libro
(
editar
)
Plantilla:Cita web
(
editar
)
Plantilla:Coincidir
(
editar
)
Plantilla:Control de autoridades
(
editar
)
Plantilla:Listaref
(
editar
)
Plantilla:Problemas artículo
(
editar
)
Plantilla:Problemas artículo/contar
(
editar
)
Plantilla:Problemas artículo/parámetro
(
editar
)
Plantilla:Problemas artículo/validar
(
editar
)
Plantilla:Si existe
(
editar
)
Plantilla:Str mid
(
editar
)
Plantilla:Temas PA
(
editar
)
Plantilla:Temas PA/Contar si existen
(
editar
)
Plantilla:Temas PA/base
(
editar
)
Plantilla:Trim
(
editar
)
Módulo:Citas
(
editar
)
Módulo:Citas/Configuración
(
editar
)
Módulo:Citas/ValidaciónFechas
(
editar
)
Módulo:Citas/Whitelist
(
editar
)
Módulo:Control de autoridades
(
editar
)
Módulo:Date
(
editar
)
Módulo:Identificadores
(
editar
)
Módulo:No globals
(
editar
)
Módulo:String
(
editar
)
Módulo:Unsubst
(
editar
)
Esta página pertenece a 1 categoría oculta:
Categoría:Wikipedia:Referenciar informática
Buscar
Buscar
Edición de «
Bytecode
»
Añadir idiomas
Añadir tema