You are on page 1of 5

DIRECCIÓN ACADÉMICA

Formato de entrega de evidencias


FO-205P11000-14

División: (1) INGENIERÍA EN SISTEMAS COMPUTACIONALES Grupo: (2) 363-M


Asignatura: (3) Lenguajes y autómatas ll Docente: (4) Elva Bernal
Nombre y número de control: (5) Navarro Espinosa Diego Alberto 163107135
Fecha de entrega: (6) 22/Mayo/2019
Competencia No.: (7) Descripción: (8)
Indicador de alcance: (9)
Evidencia de aprendizaje: (10)

Generación de código.
1. Es el proceso de traducir un programa fuente a código destino, un
compilador puede construir una o más representaciones intermedias, las
cuales pueden tener una variedad de formas. Los árboles sintácticos son
una forma de representación intermedia; por lo general, se utilizan durante el
análisis sintáctico y semántico.
Después del análisis sintáctico y semántico del programa fuente, muchos
compiladores generan un nivel bajo explicitó o una representación
intermedia similar al código máquina, que podemos considerar como un
programa para maquina abstracta. Esta representación debe ser fácil de
producir y fácil de traducir en la maquina destino.

 El código fuente puede ser traducido en su código de la maquina destino.


Código Intermedio

Código Fuente Código de Destino

 Si un compilador traduce el idioma de origen a su ordenador de destino sin


tener la opción de generar código intermedio, a continuación, en cada
nueva máquina, una nativa del compilador completo es necesario.
 Código intermedio elimina la necesidad de un nuevo compilador completo
para cada máquina de la sección de análisis mismo de todos los
compiladores.
 La segunda parte del compilador, síntesis, se modifica de acuerdo a la
máquina de destino.
 Es más fácil de aplicar las modificaciones del código fuente para mejorar el
rendimiento del código mediante la aplicación de técnicas de optimización
código el código intermedio.

2. REPRESENTACION:
 ALTO NIVEL IR- Pueden ser fácilmente generados desde el código fuente
y podemos aplicar fácilmente modificaciones de código para mejorar el
rendimiento.
 BAJO NIVEL IR-Este es cerca de la máquina de destino, lo que lo hace
adecuado para registro y asignación de memoria, un conjunto de
instrucciones selección, es bueno para optimizaciones dependientes de la
máquina.
 CODIGO THRRE-ADDRESS- Recibe la entrada de su predecesor,
analizador semántico, en la forma de un árbol de sintaxis anotado. Árbol de
sintaxis que luego se puede convertir en una representación lineal.

3. ESQUEMAS DE GENERACIÓN
Los esquemas de generación son las estrategias o acciones que se deberán
realizarse y tomarse en cuenta en el momento de generar código intermedio.
Los esquemas de generación dependen de cada lenguaje. Tomaremos
algunos esquemas de generación del lenguaje C.
Tema: Generación de término intermedio
Esquema: Código de 3 direcciones

¿Qué es?
Es un lenguaje intermedio usado por compiladores optimizados para ayudar en las
transformaciones de mejora del código.

La estructura TAC tiene 3 operaciones con una combinación de asignación y


operador binario.

t1: = t2 + t3

Ejemplo:

X = (- b + sqrt (b ^ 2 – 4 * a * c) ) / ( 2 * a )

t1 = b*b
t2 = 4*a
t3 = t2*c
t4 = t1 - t3
t5 = sqrt (t4)
t6 = 0 - b
t7 = t6 + t5
t8 = 2 * a
t9 = t7 / t8

x = t9
Ejercicios.

Realiza el código de tres direcciones para cada una de las siguientes expresiones

a) r²=e(x-a)² +(y-b)²
T1=(x-a)
T2=T1*T1
T3=(y-b)
T4=T3*T3
T5=T2+T4
r²=T5

b) a²=b²+c²
T1=B*B
T2=C*C
T3=T1+T2
a²=T3

c) a=√r²-(1/2) ²
T1=1/2*1/2
T2=r*r
T3=T2-T1
T4=√T3
a=T4

d) A=π*(R²-r²) *ángulo/360
T1=R*R
T2=r*r
T3=T1-T2
T4= π*T3
T5=T4*ángulo
T6=T5/360
A=T6

e) m= y2+y1 / x2-x1
T1=y2+y1
T2=x2-x1
T3=T1/T2
m=T4
f) y=mx+b
T1=m*x
T2=T1+b
y=T2

g) (y-b) ²=2p(x-a)
T1=x-a
T2=2*p
T3=T2*T1
(y-b) ²=T3

h) V= 5/12*(3+√5)*a³
T1=√5
T2=3+T1
T3=a*a*a
T4=5/12
T5=T4*T2
T6=T5*T3
V=T6

i) A=P*Ap/2
T1=A*p
T2=P*T1
T3=T2/2
A=T3

j) V=h/3 * (A+A’+√A*A’)
T1=A*A’
T2=√T1
T3=A+A’
T4=T3+T2
T5=h/3
T6=T5*T4
V=6

You might also like