You are on page 1of 15

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO

INGENIERA EN SISTEMAS COMPUTACIONALES Materia:


LENGUAJES Y AUTOMATAS II

Semestre-Grupo:
7WA

Producto Acadmico:
INVESTIGACIN

Tema:
CDIGO INTERMEDIO

Presenta:
CRUZ MARTINEZ YESSICA, 106Z0162

H. Y G. ALVARADO, VER. AGOSTO-DICIEMBRE 2013

INSTITUTO TECNOLOGICO SUPERIOR DE ALVARADO

INGENIERA EN SISTEMAS COMPUTACIONALES Materia:


LENGUAJES Y AUTOMATAS II

Semestre-Grupo:
7WA

Producto Acadmico:
INVESTIGACIN

Tema:
CDIGO INTERMEDIO

Presenta:
CRUZ MARTINEZ YESSICA, 106Z0162

Docente:
I.S.C. GABRIELA CRUZ HERNANDEZ
H. Y G. ALVARADO, VER. AGOSTO-DICIEMBRE 2013

OBJETIVO
Conocer que es el cdigo intermedio, as como que es lo que este realiza y cules son sus funciones en los compiladores, tambin conocer cuntos recursos y cunto tiempo consume cada una de las instrucciones de este mismo.

INDICE

Introduccin ................................................................................................................. 1

Cdigo Intermedio ....................................................................................................... 2

Recursos que consume cada instruccin de mquina virtual java utilizando cdigo
intermedio3

Tiempo que Consume ................................................................................................. 6

Conclusin................................................................................................................. 10

Referencias Bibliograficas ......................................................................................... 11

INVESTIGACIN

INTRODUCCIN

En este presente trabajo abordarn los conceptos pertenecientes al componente de anlisis de cdigo intermedio, se analizaran los recursos y el tiempo que consume cada instruccin de cdigo, a partir de cualquier lenguaje previamente indicado en este caso Mquina Virtual Java(MVJ).

El cdigo intermedio no es el lenguaje de programacin de ninguna mquina real, sino que corresponde a una mquina abstracta, que se debe de definir lo ms general posible, de forma que sea posible traducir este cdigo intermedio a cualquier mquina real.

MVJ es una mquina virtual de proceso nativo, es decir, ejecutable en una plataforma especfica, capaz de interpretar y ejecutar instrucciones expresadas en uncdigo binario especial (el bytecode Java), el cual es generado por

el compilador del lenguaje Java.

UNIDAD 3: Optimizacin

Pgina 1

INVESTIGACIN

CDIGO INTERMEDIO

En el modelo de compilacin anlisis-sntesis, el

front-end traduce el

programa fuente en una representacin de cdigo intermedio, y el back-end traduce esta representacin en cdigo final. Permite crear fcilmente un compilador para diferentes maquinas La representacin intermedia puede ser optimizada por un optimizador independiente del cdigo final. Lenguajes Intermedios: Arboles de Sintaxis Cdigo de tres direcciones Despus de los anlisis sintctico y semntico, algunos compiladores generan una representacin intermedia explicita del programa fuente. Se puede considerar esta representacin intermedia como un programa para una mquina abstracta. Esta representacin intermedia debe tener dos propiedades; debe ser fcil de producir y fcil de traducir al programa objeto.

La representacin intermedia puede tener diversas formas, pero una eleccin estndar es el cdigo en tres direcciones, denominado as porque contiene las direcciones de tres localidades en memoria.

Un ejemplo es el cdigo en tres direcciones podra parecerse a esto: t = 4+2 aindex = t

UNIDAD 3: Optimizacin

Pgina 2

INVESTIGACIN

(Advierta el uso de una variable temporal adicional t para almacenar el resultado intermedio de la suma). Ahora se mejora este cdigo en dos etapas, en primer lugar calculando el resultado de la suma.

t=6 aindex = t y despus reemplazando a t por su valor para obtener la sentencia en tres direcciones aindex = 6

Esta representacin intermedia tiene varias propiedades. Primera, cada instruccin de tres direcciones tiene a lo sumo un operador, adems de la asignacin. Por tanto, cuando se generan las instrucciones, el compilador tiene que decidir el orden en que deben efectuarse las operaciones. Segunda, el compilador debe generar un nombre temporal para guardar los valores calculados para cada instruccin. Tercera, algunas instrucciones de tres direcciones tienen menos de tres operandos.

Recursos que consume cada instruccin de mquina virtual java utilizando cdigo intermedio.

La Mquina Virtual Java es el ncleo del lenguaje de programacin Java. De hecho, es imposible ejecutar un programa Java sin ejecutar alguna implantacin 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 caractersticas principales de Java, como la portabilidad, la eficiencia y la seguridad.

UNIDAD 3: Optimizacin

Pgina 3

INVESTIGACIN

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 son pasadas a un elemento de software intermedio, que es el encargado de que las instrucciones sean ejecutadas por el hardware. Es decir, el cdigo Java no se ejecuta directamente sobre un procesador fsico, sino sobre un procesador virtual Java, precisamente el software intermedio del que habamos hablado anteriormente. La representacin de los cdigos de instruccin Java (bytecode) es simblica, en el sentido de que los desplazamientos e ndices dentro de los mtodos no son constantes, sino que son cadenas de caracteres o nombres simblicos. Estos nombres son resueltos la primera vez que se ejecuta el mtodo, es decir, el nombre simblico se busca dentro del archivo de clase (.class) y se determina el valor numrico del desplazamiento. Este valor es guardado para aumentar la velocidad de futuros accesos. Gracias a esto, es posible introducir un nuevo mtodo o sobreescribir uno existente en tiempo de ejecucin, sin afectar o romper la estructura del cdigo. En la figura 1 puede observarse la capa de software que implementa a la mquina virtual Java. Esta capa de software oculta los detalles inherentes a la plataforma, a las aplicaciones Java que se ejecuten sobre ella. Debido a que la plataforma Java fue diseada pensando en que se implementara sobre una amplia gama de sistemas operativos y de procesadores, se incluyeron dos capas de software para aumentar su portabilidad. La primera dependiente de la plataforma es llamada adaptador, mientras que la segunda, que es independiente de la plataforma, se le llama interfaz de portabilidad. De esta manera, la nica parte que se tiene que escribir para una plataforma nueva, es el adaptador. El sistema operativo proporciona los servicios de manejo de ventanas, red, sistema de archivos, etctera.

UNIDAD 3: Optimizacin

Pgina 4

INVESTIGACIN

Figura 1. La Mquina Virtual Implementada para una variedad de plataformas.

El Conjunto de Instrucciones del Procesador Virtual Muchas de las instrucciones del procesador virtual Java, son muy similares a las que se pueden encontrar para los procesadores comunes y corrientes, como los Intel, es decir, incluyen los grupos de instrucciones tpicos como los aritmticos, los de control de flujo, de acceso a memoria, a la pila, etctera. Una de las caractersticas ms significativas del conjunto de instrucciones del procesador virtual Java, es que estn basadas en la pila y utilizan "posiciones de memoria" numeradas, en lugar de registros. Esto es hasta cierto punto lgico, debido a que la mquina virtual est pensada para correr sobre sistemas con procesadores sustancialmente diferentes. Es difcil hacer suposiciones sobre el nmero o tipo de registros que estos pudiesen tener. Esta caracterstica de estar basada en operaciones sobre la pila, impone una desventaja a los programas escritos en Java, contra los lenguajes completamente compilados, como C o C++, debido a que los compiladores de estos pueden generar cdigo optimizado para la plataforma particular sobre la que se est trabajando, haciendo uso de los registros, etctera.
UNIDAD 3: Optimizacin

Pgina 5

INVESTIGACIN

Varias de las instrucciones que componen el conjunto de instrucciones del procesador virtual de Java, son bastante ms complejas que las que se pueden encontrar en procesadores comunes. Ejemplo de ello, tenemos las casi 20 instrucciones para realizar operaciones, tales como invocar mtodos de objetos, obtener y establecer sus propiedades o generar y referenciar nuevos objetos. Es evidente que operaciones de este estilo son de una complejidad considerable y la proyeccin a sus respectivas instrucciones, sobre el conjunto de instrucciones del procesador de la mquina, implicar a varias decenas de esas instrucciones.

TIEMPO QUE CONSUME.

La plataforma Java (Sistema en tiempo de ejecucin) Se utiliza el trmino "Mquina Virtual Java", para referirse a la especificacin abstracta de una mquina de software para ejecutar programas Java. La especificacin de esta mquina virtual, define elementos como el formato de los archivos de clases de Java (.class), as como la semntica de cada una de las instrucciones que componen el conjunto de instrucciones de la mquina virtual. A las implantaciones de esta especificacin se les conocen como "Sistemas en Tiempo de Ejecucin Java". En la figura 2 se puede observar los componentes tpicos de un sistema de tiempo de ejecucin. Ejemplos de Sistemas de tiempo de ejecucin son el Navegador de Nestcape, el Explorador de Microsoft y el programa Java (incluido en el JDK). Un sistema de tiempo de ejecucin incluye tpicamente:

UNIDAD 3: Optimizacin

Pgina 6

INVESTIGACIN

Figura 2. Arquitectura del Sistema de Tiempo de Ejecucin Java.

Motor de ejecucin. El procesador virtual que se encarga de ejecutar el cdigo (bytecode), generado por algn compilador de Java o por algn ensamblador del procesador virtual Java.

Manejador de memoria. Encargado de obtener memoria para las nuevas instancias de objetos, arreglos, etctera, y realizar tareas de recoleccin de basura.

Manejador de errores y excepciones. Encargado de generar, lanzar y atrapar excepciones.

Soporte de mtodos nativos. Encargado de llamar mtodos de C++ o funciones de C, desde mtodos Java y viceversa.

Interfaz multihilos. Encargada de proporcionar el soporte para hilos y monitores.

Cargador de clases. Su funcin es cargar dinmicamente las clases Java a partir de los archivos de clase (.class).

UNIDAD 3: Optimizacin

Pgina 7

INVESTIGACIN

Administrador de seguridad. Se encarga de asegurar que las clases cargadas sean seguras, as como controlar el acceso a los recursos del sistema.

Adicionalmente, existe un conjunto de clases Java estndar, fuertemente ligadas a la implantacin de cada MVJ en particular. Ejemplos de esto los tenemos en las clases encargadas de funciones, como los accesos a los recursos de la red, manejar el sistema de ventanas, los hilos y el sistema de archivos local. Todos estos elementos en conjunto actan como una interfaz de alto nivel, para acceder a los recursos del sistema operativo. Es esta interfaz la clave de la portabilidad de los programas Java, debido a que independientemente del hardware o sistema operativo sobre el que se est trabajando, la mquina virtual Java oculta todas estas diferencias. Administrador de Memoria Java utiliza un modelo de memoria conocido como "administracin automtica del almacenamiento" (automatic storage management), en el que el sistema en tiempo de ejecucin de Java mantiene un seguimiento de los objetos. En el momento que no estn siendo referenciados por alguien, automticamente se libera la memoria asociada con ellos. Existen muchas maneras de implementar recolectores de basura, entre ellas tenemos:

Contabilizar referencias. La mquina virtual Java asocia un contador a cada instancia de un objeto, donde se refleja el nmero de referencias hacia l. Cuando este contador es 0, la memoria asociada al objeto es susceptible de ser liberada. An cuando este algoritmo es muy sencillo y de bajo costo (en trminos computacionales), presenta problemas con estructuras de datos circulares.

UNIDAD 3: Optimizacin

Pgina 8

INVESTIGACIN

Marcar e intercambiar (Mark-and-Sweep). Este es el esquema ms comn para implementar el manejo de almacenamiento automtico. Consiste en almacenar los objetos en un montculo (heap) de un tamao considerable y marcar peridicamente (generalmente mediante un bit en un campo que se utiliza para este fin) los objetos que no tengan ninguna referencia hacia ellos. Adicionalmente existe un montn alterno, donde los objetos que no han sido marcados, son movidos peridicamente. Una vez en el montculo alterno, el recolector de basura se encarga de actualizar las referencias de los objetos a sus nuevas localidades. De esta manera se genera un nuevo montculo, que contiene nicamente objetos que estn siendo utilizados.

Existen muchos otros algoritmos para implementar sistemas que cuenten con recoleccin de basura. En [6] se puede encontrar una panormica bastante completa del estado del arte actual a ese respecto.

UNIDAD 3: Optimizacin

Pgina 9

INVESTIGACIN

CONCLUSIN
El cdigo intermedio es independiente del lenguaje de programacin fuente. En la prctica, es habitual que se denan cdigos intermedios que faciliten la representacin de determinadas caractersticas del lenguaje fuente. As, el P-code est pensado para traducir Pascal y el Java-bytecode es muy bueno para el Java.

Otra cosa tambin del

cdigo intermedio es que facilita la escritura de

compiladores para distintas maquinas. La traduccin del lenguaje a cdigo intermedio seria idntica en todas y lo nico que cambiara seria el traductor de cdigo intermedio a cdigo de mquina.

UNIDAD 3: Optimizacin

Pgina 10

INVESTIGACIN

Referencias bibliogrficas
De internet:

Gloria Ins lvarez V. (2008). Compiladores: Generacin de Cdigo . 03 de octubre de 2013, de Pontificia Universidad Javeriana Cali Sitio web:

http://cic.puj.edu.co/wiki/lib/exe/fetch.php?media=materias:compi:comp_sesion21_20 08-1.pdf

Dr. Flix Garca Carballeira. (1 de octubre de 2000). Arquitectura de la Mquina Virtual Java. 03 de octubre de 2013, de Revista Digital Universitaria Sitio web: http://www.revista.unam.mx/vol.1/num2/art4/

De Libro:

Traduccin autoriza a de la edicin en idioma ingls. Compilers: Principles, techniques and tools, 2nd edition de Alfred V. Aho, Monica S. Lam Ravi Sethi, Jefrev D. llllman, publicada por Pearson Education, Inc., publicada con Addison- Wesley, C o pyright 2007. T o d o s los derechos reservados.

Fecha de Consulta: 03 / 11 / 13

UNIDAD 3: Optimizacin

Pgina 11

You might also like