generacion_de_codigo - Traductores, Compiladores e...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
Traductores, Compiladores e Intérpretes 1 Generación de código intermedio. Realizados por: María del Mar Aguilera Sierra y Sergio Gálvez Rojas Tema 7 Generación de Código En el modelo de análisis y síntesis de un compilador, la etapa inicial traduce un programa fuente a una representación intermedia a partir de la cual la etapa final genera el código objeto. Los detalles del lenguaje objeto se confinan en la etapa final, si esto es posible. Aunque un programa fuente se puede traducir directamente al lenguaje objeto, algunas ventajas de utilizar una forma intermedia independiente de la máquina son: 1. Se facilita la redestinación; se puede crear un compilador para una máquina distinta uniendo una etapa final para la nueva máquina a una etapa inicial ya existente. 2. Se puede aplicar a la representación intermedia un optimizador de código independiente de la máquina. Hay lenguajes que son pseudointerpretados que utilizan un código intermedio llamado código-P que utiliza lo que se denomina bytecodes (sentencias de un μP hipotético). Por ejemplo Java utiliza los ficheros .class, éstos tienen unos bytecodes que se someten a una JavaVirtualMachine, para que interprete esas sentencias. En este capítulo se muestra cómo se pueden utilizar los métodos de analizadores dirigidos por la sintaxis para traducir a un código intermedio, construcciones de lenguajes de programación como declaraciones, asignaciones y proposiciones de flujo de control. La generación de código intermedio se puede intercalar en el análisis sintáctico.
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Traductores, Compiladores e Intérpretes 2 Generación de código intermedio. Realizados por: María del Mar Aguilera Sierra y Sergio Gálvez Rojas Código de Tercetos Para facilitar la comprensión de esta fase, no generaremos código máquina puro, sino un código intermedio cercano a la máquina, que además facilitará la optimización de código. El código intermedio que vamos a usar , posee cuatro apartados: Operando 1º Operando 2º Operador Resultado y se denomina código de 3 direcciones, de tercetos, o máximo 3 operandos. Las instrucciones de tres direcciones son análogas al código ensamblador, pueden tener etiquetas simbólicas y existen instrucciones para el flujo de control. Hay algunas instrucciones que carecen de algunos de estos apartados; los tercetos que podemos usar son: Asignación binaria: x := y op z , donde op es una operación binaria aritmética o lógica. Asignación unaria: x := op , donde op es una operación unaria. Las operaciones unarias principales incluyen el menos unario, la negación lógica, los operadores de desplazamiento y operadores de conversión de tipos. Asignación simple o copia: x := y , donde el valor de y se asigna a x .
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 43

generacion_de_codigo - Traductores, Compiladores e...

This preview shows document pages 1 - 3. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online