Vous êtes sur la page 1sur 5

Instituto Tecnolgico de Mazatln Departamento de Ingenieras Ingeniera en Sistemas Computacionales

ENSAYO GENERACIN DE CDIGO Alumno: Corpus Pastrano Ana Rosa Materia: Lenguajes Autmatas II

Docente: Silva Hernndez Iliana Amabely

Mazatln, Sinaloa, Octubre 2013

ndice

Introduccin .................................................................................................... 3 Cdigo Intermedio ....................................................................................... 3 Conclusin....................................................................................................... 5 Bibliografa ...................................................................................................... 5

Introduccin

Esta fase del compilador es la se encarga de generar las instrucciones en cdigo objeto o intermedio para un nivel dado de una mquina.

Programa fuente
Anlisis

Anlisis Lxico

Anlisis Sintctico

Anlisis Semntico

rbol de sintaxis abstracta Sntesis

Generacin de cdigo intermedio

Optimizacin de cdigo intermedio

Generacin de cdigo objeto

Optimizacin de cdigo objeto

Programa objeto

La generacin de cdigo no debe influir de ningn modo en el desarrollo y decisiones que se tomen en las fases previas de anlisis sintctico y semntico, ya que lo apropiado es superponer la instrucciones de generacin a las de anlisis. Para realizar la fase de generacin de cdigo, lo primero que se debe establecer es la mquina destino para la cual se a generar el cdigo y en la cual se supone va a ejecutarse el cdigo, a esto se le denomina comnmente requerimientos de sistema. Se debe tener en presente que el programa objeto es quien debe gestionar todas las transferencias de datos, todas las peticiones de entrada/salida, etc., por lo que deber poseer un extremo nivel de detalle. Cdigo Intermedio La tarea de sntesis suele comenzar generando un cdigo intermedio. 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. Existen diversos tipos de
3

cdigos intermedios que varan en cuanto a su sencillez, lo prximos que estn a las mquinas reales y lo fcil que es trabajar con ellos. La forma de las instrucciones del cdigo intermedio puede variar segn sea el diseo de la mquina abstracta. Dentro de cdigo intermedio se encuentran varias tcnicas: Cdigo intermedio o cdigo objetivo como un atributo sintetizado: si el cdigo generado se ve como un atributo de cadena (con instrucciones separadas por caracteres de retorno de lnea), entonces este cdigo se convierte en un atributo sintetizado que se puede definir utilizando una gramtica con atributos, y generado directamente durante el anlisis sintctico o mediante un recorrido postorden del rbol sintctico. Cdigo P: Se considera el caso de la generacin del cdigo P en primer lugar, ya que la gramtica con atributos es ms simple debido a que no es necesario generar nombres para elementos temporales. Sin embargo, la existencia de asignaciones incrustadas es un factor que implica complicaciones. En esta situacin se desea mantener el valor almacenado como el valor resultante de una expresin de asignacin, ya que la instruccin de cdigo P estndar esto es destructiva, pues el valor asignado se pierde. Cdigo de tres direcciones: A diferencia del cdigo P, el cdigo de tres direcciones requiere que se generen nombres temporales para resultados intermedios en las expresiones, y esto requiere que la gramtica con atributos incluya un nueva atributo name para cada nodo. Generacin de Cdigo Prctica: Las tcnicas estndar de generacin de cdigo involucran modificaciones de los recorridos postorden del rbol sintctico implicado por las gramticas con atributos de Los ejemplos precedentes o, si no se genera un rbol sintctico de manera explcita, acciones equivalentes. Durante un anlisis sintctico. El algoritmo bsico puede ser descrito como el siguiente procedimiento recursivo : procedure genCode ( T: treenode ); begin if T no es nil then genere cdigo pares preparar en el caso del cdigo del hijo izquierdo de T ; genCode (hijo izquierdo de T); genere cdigo para preparar en el caso del cdigo del hijo derecho de T; genCode (hijo derecho de T) ; genere cdigo para implementar la accin de T ; end;

Y por ultimo Generacin de cdigo objetivo a partir del cdigo intermedio: Si un compilador genera cdigo intermedio, ya sea directamente durante en anlisis sintctico o desde un rbol sintctico, entonces debe efectuarse otro paso en el cdigo intermedio para generar el cdigo objetivo final (por lo regular despus de algn procesamiento adicional del cdigo intermedio). Este paso puede ser bastante complejo por s mismo, en particular si el cdigo intermedio es muy simblico y contiene poca o ninguna informacin acerca de la mquina objetivo o el ambiente de ejecucin. En este caso, el paso de la generacin de cdigo final debe suministrar todas las ubicaciones reales de variables y temporales, mas el cdigo necesario para mantener el ambiente de ejecucin.

Conclusin Dado que la generacin de cdigo es una tarea compleja, especialmente si desea que sea eficiente y razonablemente compacto, es interesante buscar maneras de evitar esta fase. De hecho existe una manera sencilla de evitar la generacin de cdigo, al menos la generacin de cdigo mquina, que permite obtener ejecutables de muy buena calidad: generar el cdigo en un leguaje que tenga un buen compilador. Por ejemplo, cualquier sistema tiene compiladores de C de gran calidad, es posible por tanto traducir nuestro leguaje a C y despus compilar el programa obtenido con un buen compilador. Tambin es factible esta opcin en el caso de los lenguajes de muy alto nivel o de paradigmas como el funcional y el lgico.

Bibliografa http://repositori.uji.es/xmlui/bitstream/handle/10234/5916/codigo.apun.pdf?sequence=1 http://books.google.com.mx/books?id=gtI_8mer1NgC&pg=PA159&lpg=PA159&dq=generacion+de+codigo& source=bl&ots=53J0KFdqWF&sig=aABZQZqCGVrTS0TjZFoi2ye2cRo&hl=es&sa=X&ei=PA1nUseDAu7gigL20IG oCQ&ved=0CCoQ6AEwADge#v=onepage&q=generacion%20de%20codigo&f=true http://arantxa.ii.uam.es/~alfonsec/docs/compila6.htm http://laurel.datsi.fi.upm.es/~rpons/gjsc/final/node25.html http://ymoyao.cs.buap.mx/wp-content/uploads/2013/09/uncol.pdf

Vous aimerez peut-être aussi