11.07.2015 Views

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Código IntermediárioT1 = a+bT2 = c+dT3 = e-T2T4 = T1-T3T2 = c+dT3 = e-T2T1 = a+bT4 = T1-T3Código ObjetoMOV a, R0ADD b, R0MOV c, R1ADD d, R1MOV, R0, T1MOV E, R0SUB R1, R0MOV T1, R1SUB R0, R1MOV R1, T4MOV c, R0ADD d, R0MOV e, R1SUB R0, R1MOV a, R0ADD b, R0SUB R1, R0MOV R0, T47.2.1 Algoritmo para Construir o GAD de um blocoO algoritmo supõe que cada instrução (de três-endereços) segue um dos seguintes trêsformatos: (1) x = y op z; (2) x = op y; (3) x = y. Instruções if-goto são tratadas como ocaso (1).Passos:1. Se o nó y ainda não existe no grafo, crie uma folha para y (e para z se for o caso 1);2. No caso 1, verifique se existe um nó op com filhos y e z (nessa ordem). Se sim,chame-o, também de x; senão, crie um nó op com nome x e dois arcos dirigidos donó op para y e z. No caso 2, verifique se existe um nó op com um único filho y. Senão existir, cria tal nó e um arco para y; chame de x o nó criado ou encontrado. Nocaso 3, chame também de x o nó y.Exemplo: y = ((a+b)*(a-b))+((a+b)*(a-c))T1 = a+bT2 = a-bT3 = T1*T2T4 = a+bT5 = a-cT6 = T4*T5T7 = T3+T6y = T769

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!