Anda di halaman 1dari 0

1

Generador de Cdigo Objeto


Programacin II
Margarita lvarez
Generador de cdigo objeto
Toma como entrada una representacin intermedia del programa fuente
y produce como salida un programa objeto equivalente.
Etapa
inicial
Tabla de
Smbolos
Optimizador
de cdigo
intermedio
Generador
de Cdigo
Objeto
Programa
fuente
Cdigo
intermedio
Cdigo
intermedio
Programa
objeto
2
Generador de cdigo objeto
Programa Objeto: puede tener distintas formas:
Programa en lenguaje de mquina absoluto: tiene la ventaja que se
puede colocar en una posicin fija de memoria y ejecutarse
inmediatamente.
Programa en lenguaje de mquina relocalizable: permite que los
subprogramas se compilen por separado. Un conjunto de mdulos
objetos relocalizables se pueden enlazar y cargar para su ejecucin
mediante un cargador enlazador.
Programa en lenguaje ensamblador: facilita el proceso de generacin de
cdigo. Se pueden generar instrucciones simblicas y utilizar las macros
del ensamblador para ayudar a generar el cdigo.
Generador de cdigo objeto
Administracin de memoria: la correspondencia entre los nombres del programa
fuente con direcciones de objetos de datos en la memoria durante la ejecucin la
realiza la etapa inicial en cooperacin con el generador de cdigo. Las entradas en la
Tabla de Smbolos se van creando conforme se examina las declaraciones de un
procedimiento. El tipo en una declaracin determina la cantidad de memoria
necesaria para el nombre declarado.
Segn la informacin de la Tabla de Smbolos se pueden determinar una direccin
relativa para el nombre de un rea de datos para el procedimiento.
Seleccin 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 seleccin de
instrucciones es sencilla. Para cada tipo de proposicin de tres direcciones, se puede
disear un esqueleto de cdigo.
MOV y, R0 /* cargar y en el registro R0 */
ADD z, R0 /* suma z a R0 */
MOV R0, x /* almacenar R0 en x */
Ejemplo: cdigo de tres direcciones de:
x := y + z
3
Generador de cdigo objeto
Asignacin de registros: Las instrucciones que implican operandosen registros son
generalmente ms rpidas que las de los operandos en memoria. Por lo tanto,
utilizar eficientemente los registros es fundamental para generar un buen cdigo. El
uso de registros se divide en dos subproblemas:
Durante la asignacin de los registros: se selecciona el conjunto de variables que
residiren los registros en un momento del programa.
Durante la fase posterior de asignacin a los registros, se escoge el registro
especfico en el que residiruna variable.
Eleccin del orden de evaluacin: el orden en que se realizan los clculos puede
variar la eficiencia del cdigo objeto. Algunos ordenamientos de los clculos
necesitan menos registros que otros para guardar resultados intermedios.
Elegir un orden mejor es un problema difcil, NP-completo.