TRIPL TRIPL OS Y CUADRUPLOS n-tuplas En la notación de n-tuplas cada instrucción es una n-tupla. –Tripletas • , , • El resultado se asocia al número de tripleta – Tripletas indirectas • Son tripletas donde el orden de ejecución se especifica aparte. – Cuádruplas • , , ,
Tripletas Tripleta: , , el resultado se asocia al número de tripleta Ejemplo: W*X+(Y+Z) 1. *, W, X 2. +, Y, Z 3. +, (1), (2) – Control de flujo: f lujo:
IF X>Y THEN Z=X ELSE Z=Y+1 1. >, X, Y 2. Saltar si falso, (1), 5 3. =, Z, X 4. Saltar, , 7 5. +, Y, 1 6. =, Z, (5) 7. ... – Problema: La optimización supone mover tripletas y hay que recalcular las referencias
Tripletas Indirectas Tripletas indirectas. Solucionan los problemas de la reordenación mediante indirección Ejemplo: – Fuente: A=B+C*D/E F=C*D – Operaciones 1. (1) 2. (2) 3. (3)
Tripletas (1) *, C, D (2) /, (1), E (3) +, B (2)
4. (4) 5. (1) 6. (5)
(4) =, A, (3) (5) =, F, (1)
Cuádruplas Cuádrupla: , , , T1, T2, T3, T4 son variables temporales. Ejemplo: (A+B)*(C+D)-E +, A, B, T1 +, C, D, T2 *, T1, T2, T3 -, T3, E, T4 • Las cuádruplas facilitan la aplicación de muchas optimizaciones, pero hay que tener un algoritmo para la reutilización de las variables temporales (reutilización de registros del procesador).
Leer una expresión regular en modo posfija, crear el árbol sintáctico, describir el código en triplos y cuádruplos. Expresión Regular a:=b+c*2+20/5 árbol sintáctico :=
a
+
*
/
2
+ 20
b
Triplos:
1) +,b,c 2) *,1),2 3) /,20,5
5
c
4) +,2),3) 5) :=,a,4)
Cuádruplos
1) +,b,c,T1 2) *,2,T1,T2 3) /,20,5,T3
4) +,T2,T3,T4 5) :=,a,T4,T5