You are on page 1of 35

C odigo de tres direcciones

Comparaci on Cu adruplas - Triplas


Conclusiones
Compiladores:
Traduccion Dirigida por la Sintaxis
Joel Huillca - Xander Cortez - Amanda Le on
Universidad Nacional Mayor de San Marcos
E.A.P. Computacion Cientca
CIENCIAS DE LA COMPUTACI

ON IV
Lima, 10 de Julio del 2014.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Contenido
1
C odigo de tres direcciones
Denici on
Ejemplos
Implementaci on de proposiciones de tres direcciones
2
Comparaci on Cuadruplas - Triplas
3
Conclusiones
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Codigo de tres direcciones
El c odigo de tres direcciones es una representaci on linealizada del arbol
sintactico abstracto.
Instrucciones de tres direcciones
El c odigo de tres direcciones es una secuencia de instrucciones de la forma:
x := y op z
en donde x, y y z son nombres, constantes(a excepci on de x) o variables
temporales generados por el compilador; y op representa cualquier operador.
Estructura general del c odigo de tres direcciones
(<OPERADOR>,<Operando1>,<Operando2>,<Resultado>)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Codigo de tres direcciones
El c odigo de tres direcciones es una representaci on linealizada del arbol
sintactico abstracto.
Instrucciones de tres direcciones
El c odigo de tres direcciones es una secuencia de instrucciones de la forma:
x := y op z
en donde x, y y z son nombres, constantes(a excepci on de x) o variables
temporales generados por el compilador; y op representa cualquier operador.
Estructura general del c odigo de tres direcciones
(<OPERADOR>,<Operando1>,<Operando2>,<Resultado>)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Codigo de tres direcciones
El c odigo de tres direcciones es una representaci on linealizada del arbol
sintactico abstracto.
Instrucciones de tres direcciones
El c odigo de tres direcciones es una secuencia de instrucciones de la forma:
x := y op z
en donde x, y y z son nombres, constantes(a excepci on de x) o variables
temporales generados por el compilador; y op representa cualquier operador.
Estructura general del c odigo de tres direcciones
(<OPERADOR>,<Operando1>,<Operando2>,<Resultado>)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Instrucciones Comunes
Instrucciones de Asignaci on:
x := y op z (op es un operador binario, aritmetico o logico)
x := op y (op es un operador unario : menos, conversion)
x := y
Asignaciones Indexadas:
x := y[i]
x[i] := y
Apuntadores:
x := & y (asigna la direccion de y)
x := *y (y es un apuntador)
*x := y (x es un apuntador)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Instrucciones Comunes
Instrucciones de Asignaci on:
x := y op z (op es un operador binario, aritmetico o logico)
x := op y (op es un operador unario : menos, conversion)
x := y
Asignaciones Indexadas:
x := y[i]
x[i] := y
Apuntadores:
x := & y (asigna la direccion de y)
x := *y (y es un apuntador)
*x := y (x es un apuntador)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Instrucciones Comunes
Instrucciones de Asignaci on:
x := y op z (op es un operador binario, aritmetico o logico)
x := op y (op es un operador unario : menos, conversion)
x := y
Asignaciones Indexadas:
x := y[i]
x[i] := y
Apuntadores:
x := & y (asigna la direccion de y)
x := *y (y es un apuntador)
*x := y (x es un apuntador)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Instrucciones Comunes
Instrucciones de Asignaci on:
x := y op z (op es un operador binario, aritmetico o logico)
x := op y (op es un operador unario : menos, conversion)
x := y
Asignaciones Indexadas:
x := y[i]
x[i] := y
Apuntadores:
x := & y (asigna la direccion de y)
x := *y (y es un apuntador)
*x := y (x es un apuntador)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Instrucciones Comunes
Saltos:
Incondicional: goto L
Condicional: if x rel-op y goto L
Llamado a procedimientos y retorno:
param x1
param x2
....
param xn
call p n
return y
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Instrucciones Comunes
Saltos:
Incondicional: goto L
Condicional: if x rel-op y goto L
Llamado a procedimientos y retorno:
param x1
param x2
....
param xn
call p n
return y
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Ejemplo 1
Expresi on en lenguaje C - C odigo de tres direcciones.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Ejemplo 2
Expresemos en C odigo de tres direcciones lo siguiente:
c := a*b / 32 + a*b
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Implementacion de proposiciones de tres direcciones
Una proposici on de tres direcciones es una forma abstracta de c odigo
intermedio. En un compilador estas proposiciones se pueden implementar
como registro con campos para el operador y los operandos.
Las implementaciones pueden ser:
Cu adruplos
Triplos
Triplos indirectos
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Cuadruplas
Estructura con 4 campos: operador, operando1, operando2, resultado.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Cuadruplas
Estructura con 4 campos: operador, operando1, operando2, resultado.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Cuadruplas
Estructura con 4 campos: operador, operando1, operando2, resultado.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Cuadruplas
Estructura con 4 campos: operador, operando1, operando2, resultado.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas
Estructura con 3 campos: operador, operando1, operando2. Los resultados
temporales se referecian por la posici on en que fueron calculados.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas
Estructura con 3 campos: operador, operando1, operando2. Los resultados
temporales se referecian por la posici on en que fueron calculados.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas
Estructura con 3 campos: operador, operando1, operando2. Los resultados
temporales se referecian por la posici on en que fueron calculados.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas
Estructura con 3 campos: operador, operando1, operando2. Los resultados
temporales se referecian por la posici on en que fueron calculados.
Ejemplo
Implementar la cu adrupla de: a * b + c * d (expresi on en lenguaje C)
Soluci on:
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sint axis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Otros ejemplos por medio de Triplas
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas Indirectas
Se numeran arbitrariamente los tripletes y se da el orden de ejecuci on.
Solucionan el problema de la reordenacion mediante indirecciones.
Ejemplo, sean las instrucciones:
a = b * c
b = b * c
Equivalen a los tripletes:
(1) (*,b,c)
(2) (=,(1),a)
(3) (=,(1),b)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas Indirectas
Se numeran arbitrariamente los tripletes y se da el orden de ejecuci on.
Solucionan el problema de la reordenacion mediante indirecciones.
Ejemplo, sean las instrucciones:
a = b * c
b = b * c
Equivalen a los tripletes:
(1) (*,b,c)
(2) (=,(1),a)
(3) (=,(1),b)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas Indirectas
Se numeran arbitrariamente los tripletes y se da el orden de ejecuci on.
Solucionan el problema de la reordenacion mediante indirecciones.
Ejemplo, sean las instrucciones:
a = b * c
b = b * c
Equivalen a los tripletes:
(1) (*,b,c)
(2) (=,(1),a)
(3) (=,(1),b)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas Indirectas
Se numeran arbitrariamente los tripletes y se da el orden de ejecuci on.
Solucionan el problema de la reordenacion mediante indirecciones.
Ejemplo, sean las instrucciones:
a = b * c
b = b * c
Equivalen a los tripletes:
(1) (*,b,c)
(2) (=,(1),a)
(3) (=,(1),b)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Definici on
Ejemplos
Implementacion de proposiciones de tres direcciones
Triplas Indirectas
Se numeran arbitrariamente los tripletes y se da el orden de ejecuci on.
Solucionan el problema de la reordenacion mediante indirecciones.
Ejemplo, sean las instrucciones:
a = b * c
b = b * c
Equivalen a los tripletes:
(1) (*,b,c)
(2) (=,(1),a)
(3) (=,(1),b)
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Comparacion Cuadruplas - Triplas
Las triplas necesitan menos espacio y el compilador genera
identicadores temporales, pero cambiar de sitio una proposici on que
dena un valor temporal exige modicar todas las referencias.
Esto representa un inconveniente a la hora de optimizar el c odigo, ya
que en cada paso del proceso de optimizaci on hay que cambiar
constantemente las proposiciones de lugar.
En la practica se utiliza la notaci on de cu adruplas como
implementaci on del codigo de tres direcciones.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Comparacion Cuadruplas - Triplas
Las triplas necesitan menos espacio y el compilador genera
identicadores temporales, pero cambiar de sitio una proposici on que
dena un valor temporal exige modicar todas las referencias.
Esto representa un inconveniente a la hora de optimizar el c odigo, ya
que en cada paso del proceso de optimizaci on hay que cambiar
constantemente las proposiciones de lugar.
En la practica se utiliza la notaci on de cu adruplas como
implementaci on del codigo de tres direcciones.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Comparacion Cuadruplas - Triplas
Las triplas necesitan menos espacio y el compilador genera
identicadores temporales, pero cambiar de sitio una proposici on que
dena un valor temporal exige modicar todas las referencias.
Esto representa un inconveniente a la hora de optimizar el c odigo, ya
que en cada paso del proceso de optimizaci on hay que cambiar
constantemente las proposiciones de lugar.
En la practica se utiliza la notaci on de cu adruplas como
implementaci on del codigo de tres direcciones.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Conclusiones
La generacion de c odigo intermedio transforma todo lo que se realizo
en las etapas anteriores de un compilador en un lenguaje intermedio,
que suele ser c odigo sucientemente sencillo para pode luego generar
c odigo maquina.
El c odigo intermedio es el mas parecido al c odigo ensamblador.
El c odigo intermedio se puede reutilizar en otro compilador para una
computadora con diferente procesador, la desventaja obviamente es la
lentitud que esto conlleva.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Conclusiones
La generacion de c odigo intermedio transforma todo lo que se realizo
en las etapas anteriores de un compilador en un lenguaje intermedio,
que suele ser c odigo sucientemente sencillo para pode luego generar
c odigo maquina.
El c odigo intermedio es el mas parecido al c odigo ensamblador.
El c odigo intermedio se puede reutilizar en otro compilador para una
computadora con diferente procesador, la desventaja obviamente es la
lentitud que esto conlleva.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Conclusiones
La generacion de c odigo intermedio transforma todo lo que se realizo
en las etapas anteriores de un compilador en un lenguaje intermedio,
que suele ser c odigo sucientemente sencillo para pode luego generar
c odigo maquina.
El c odigo intermedio es el mas parecido al c odigo ensamblador.
El c odigo intermedio se puede reutilizar en otro compilador para una
computadora con diferente procesador, la desventaja obviamente es la
lentitud que esto conlleva.
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis
C odigo de tres direcciones
Comparaci on Cu adruplas - Triplas
Conclusiones
Joel Huillca - Xander Cortez - Amanda Le on Compiladores: Traducci on Dirigida por la Sintaxis

You might also like