generacion de codigo objeto

Páginas: 7 (1722 palabras) Publicado: 29 de noviembre de 2014
Generación de código. Procesadores de Lenguaje II

Generación de Código Máquina

Programa
fuente

front
end

Código
intermedio

Código

optimización intermedio

generador
de código

Código
máquina

Generación de código. Procesadores de Lenguaje II

Generación de Código Máquina
Traducción de la representación intermedia a código objeto
(normalmente ensamblador)
Hay quetener en cuenta la arquitectura de la máquina para
realizar una gestión eficiente de la memoria y de los registros
Primero se generan las directivas para reservar memoria para
las variables y datos
Luego se genera el resto del código. Por ejemplo, los árboles
de sintaxis abstracta se recorren para generar código
directamente
Hay que tener en cuenta:
„
„
„
„

Los lenguajes fuente yobjeto
Gestión de memoria y registros
Juego de instrucciones
Orden de evaluación

Generación de código. Procesadores de Lenguaje II

Generación de Código
Se debe generar código correcto y de “alta calidad”
„

Asignación de recursos eficiente (optimizaciones dependientes de la
máquina)
Š Uso de registros (restricciones HW…)
Š Uso de memoria
Š Selección y orden de instrucciones (INC,ADD, …)

„

Asegurar que el código generado es el óptimo para cualquier entrada es
un problema “indecidible” (¿mejorar al programador de ensamblador?)

Enfoques:
„

Traducción directa de bloques de código intermedio
Š Uso de información de uso de variables en el bloque

„

Generación global de código
Š Análisis de flujo para asignación “óptima” de registros (cada bloque tienecontexto)

Generación de código. Procesadores de Lenguaje II

Sistema Procesador de Lenguaje
skeletal source program
preprocessor

assembler

source program

relocatable machine code

compiler

loader/link editor

target assembly program

absolute machine code

Generación de código. Procesadores de Lenguaje II

Ensambladores
Código ensamblador: nemónicos para instrucciones,y nombres para direcciones de memoria.
MOV a, R1
ADD #2, R1
MOV R1, b

Ensamblador en dos pasos:
„

„

Primera pasada: los identificadores se asignan a
direcciones de momria (0-offset)
e.g. asignar 0 a a, 4 a b …
Segunda pasada: produce código máquina (reasignable) :

0001 01 00 00000000 *
0011 01 10 00000010
0010 01 00 00000100 *

relocation
bit

Generación de código.Procesadores de Lenguaje II

Cargador y Editor de Enlace
Cargador(loader): toma código máquina
reasignable (relocatable) y mueve
direcciones para cargarlas en memoria.
Enlazador (linker): toma varios programas
reasignables, con referencias cruzadas, para
generar un solo fichero.
„

Necesita una correspondencia entre nombres de
variables y direcciones en cada instrucción.

Generación decódigo. Procesadores de Lenguaje II

Ejemplos Generación de Código (2)
Expresión

Código

X::=Y
X::=Y op Z

Comienzo:
Comienzo:

IF C THEN E1 ELSE E2

Comienzo:

WHILE C DO S

et1:
et2:
Comienzo:

et1:

MOV Y,X
MOV Y, R0
OP Z, R0
MOV R0,X
Código para C
IF-FALSE-GOTO et1
Código para E1
GOTO et2
Código para E2
Código para C
IF-FALSE-GOTO et1
Código para S
GOTOComienzo

Generación de código. Procesadores de Lenguaje II

Máquina Objeto
Máquina de registros R0 … RN-1
Instrucciones de dos direcciones: ins fuente, destino
MOV f,d (mover fuente a destino)
ADD f,d (sumar fuente a destino, resultado en destino)
SUB
f,d (restar fuente a destino, resultado en destino)
MULT f,d (multiplicar, idem)
DIV
f,d (dividir, idem)
GOTO d
(salto haciaposición)
CJ<
d
(salto condicional según última operación a registro)
Modos de direccionamiento:
Modo

Absoluto
Constante
Registo
Registro ind
Con R’s Indexado
Indexado reg

Forma
M
#2
Ri
*Ri
C(Ri)
*C(Ri)

Dirección

Coste extra

M
Ri
contenido(Ri)
C+contendido(Ri)
contenido(C+contendido(Ri))

1
1
0
0
1
1

Generación de código. Procesadores de Lenguaje II...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Generacion de codigo objeto
  • Unidad 8. generacion de codigo objeto
  • generacion de codigo objeto
  • Generacion de codigo objeto
  • Generacion de codigo
  • Generación de código
  • Generación de código intermedio
  • Generación de código final

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS