Está en la página 1de 10

EQUIPO:

JUAN CARLOS CANUL PECH


FELIPE PUC UC
DANIEL US
Lenguajes y Autómatas I

Compiladores:

I.S.C. Luis Gilberto Tec Cetz,

M.T.I.
Generación de Código
Generación de Código

Mantener la semántica del programa

El programa traducido debe tener alta calidad:

Producir código correcto


• Uso efectivo de los recursos

• Correr eficientemente = “buen código” (generar la traducción óptima es un problema indecidible)

4
Compiladores

Generador de código objeto:


Toma como entrada la representación intermedia y genera el código objeto. La
optimización depende de la máquina, es necesario conocer el conjunto de
instrucciones, la representación de los datos (número de bytes), modos de
direccionamiento, número y propósito de registros, jerarquía de memoria,
encauzamientos, etc.
Suelen implementarse a mano, y son complejos porque la generación de un buen
código objeto requiere la consideración de muchos casos particulares.

5
Generador de código objeto
Aspectos generales

Administración de memoria:
La correspondencia entre los nombres del programa fuente con direcciones de objetos de datos en la memoria durante
la ejecución la realiza la etapa inicial en cooperación con el generador de código. Las entradas en la Tabla de Símbolos
se van creando conforme se examina las declaraciones de un procedimiento. El tipo en una declaración determina la
cantidad de memoria necesaria para el nombre declarado.

Selección de instrucciones:
Es importante que el conjunto de instrucciones sea uniforme y completo. Las velocidades de las instrucciones es un
factor importante. Si no se tiene en cuenta la eficiencia del programa objeto, la selección de instrucciones es sencilla.
Para cada tipo de proposición de tres direcciones, se puede diseñar un esqueleto de código.

Asignación de registros:
Las instrucciones que implican operando en registros son generalmente más rápidas que las de los operando en
memoria. Por lo tanto, utilizar eficientemente los registros es fundamental para generar un buen código. El uso de
registros se divide en dos subproblemas:

6
Selección de
instrucciones: Ejemplo: código de tres direcciones de:

X:= y + z

MOV R0 , y /* cargar y en el registro R0 */

ADD R0 ,z /* suma z a R0 */

MOV R0, x /* almacenar R0 en x */

7
Generador de Código
subproblemas:

Durante la asignación Durante la fase posterior de


de los registros: asignación a los registros
Se selecciona el conjunto de Se escoge el registro específico en
variables que residirá en los el que residirá una variable.
registros en un momento del Elección del orden de evaluación: el
programa. orden en que se realizan los
cálculos puede variar la eficiencia
del código objeto. Algunos
ordenamientos de los cálculos
necesitan menos registros que otros
para guardar resultados
intermedios.

8
Biografia

https://es.wikipedia.org/wiki/Generaci%C3%B3n_de_c%C3%B3digo

The Power of PowerPoint |


thepopp.com
9
Thank You for
Watching!

También podría gustarte