Bytecode

Solo disponible en BuenasTareas
  • Páginas : 5 (1099 palabras )
  • Descarga(s) : 0
  • Publicado : 29 de enero de 2012
Leer documento completo
Vista previa del texto
Instituto politécnico nacional |
Tarea 1 |
Compiladores |
|
Angel Gabriel Blanco Consuelo |
26/01/2012 |

|

Bytecode
Bytecode de Java es la forma de instrucciones que la máquina virtual de Java ejecuta. Cada una de las instrucciones de bytecode tiene una longitud de 8; no obstante no se utilizan todas las 256 instrucciones posibles.
Un aspecto al que muchas veces no se le dala importancia necesaria de Java es el Bytecode generado por el compilador Javac. A pesar del tiempo de ejecución o Hotspot JIT, el bytecode es una parte importante por el tamaño y la velocidad de ejecución de su código.
Máquina Virtual
El concepto de máquina virtual es antiguo. Fue usado por IBM en 1959 para describir uno de los primeros sistemas operativos que existieron en la historia dela computación, el VM. En 1970, el ambiente de programación de SmallTalk llevó la idea a un nuevo nivel y construyó una máquina virtual para soportar abstracciones orientadas a objetos de alto nivel, sobre las máquinas subyacentes.
Las máquinas virtuales tienen varias ventajas importantes. La primera es que presentan un medio excelente para alcanzar la portabilidad. Otra de las ventajasimportantes, es que introduce otro nivel de abstracción y de protección, entre la computadora y el software que ejecuta sobre ella. Esto cobra particular importancia en un ambiente donde el código que ejecutamos proviene de algún lugar del mundo y es escrito por alguna "buena" persona.
La Máquina Virtual Java es el núcleo del lenguaje de programación Java. De hecho, es imposible ejecutar un programaJava sin ejecutar alguna implantación de la MVJ. En la MVJ se encuentra el motor que en realidad ejecuta el programa Java y es la clave de muchas de las características principales de Java, como la portabilidad, la eficiencia y la seguridad.
Siempre que se corre un programa Java, las instrucciones que lo componen no son ejecutadas directamente por el hardware sobre el que subyace, sino que sonpasadas a un elemento de software intermedio, que es el encargado de que las instrucciones sean ejecutadas por el hardware. Es decir, el código Java no se ejecuta directamente sobre un procesador físico, sino sobre un procesador virtual Java, precisamente el software intermedio del que habíamos hablado anteriormente.
La representación de los códigos de instrucción Java (bytecode) es simbólica, en elsentido de que los desplazamientos e índices dentro de los métodos no son constantes, sino que son cadenas de caracteres o nombres simbólicos. Estos nombres son resueltos la primera vez que se ejecuta el método, es decir, el nombre simbólico se busca dentro del archivo de clase (.class) y se determina el valor numérico del desplazamiento. Este valor es guardado para aumentar la velocidad defuturos accesos. Gracias a esto, es posible introducir un nuevo método o sobreescribir uno existente en tiempo de ejecución, sin afectar o romper la estructura del código.

CIL de .NET
CIL es un lenguaje ensamblador orientado a objetos, y está basado en pilas. Es ejecutado por una máquina virtual. Los lenguajes .NET principales son C#, Visual Basic .NET, C++/CLI, y J#.
CIL fue conocidooriginalmente como Microsoft Intermediate Language (MSIL) durante las versiones de prueba de los lenguajes .NET. Debido a esto, CIL es frecuentemente llamado MSIL. Es posible ejecutar este lenguaje en plataformas GNU/Linux gracias al Proyecto Mono, que implementa una maquina virtual similar a la de .NET pero de software libre.
Instrucciones CIL
El código intermedio de CIL incluye un conjunto deinstrucciones para las siguientes grupos de tareas:
* Carga y almacenamiento
* Aritméticas
* Conversión de tipos
* Creación y manipulación de objetos
* Operadores de pila (push / pop)
* Transferencia de control (saltos)
* Invocación y retorno de métodos
* Manejo de excepciones
* Concurrencia basada en monitores
Ejecutar CIL
* El código de fuente se convierte a la...
tracking img