Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Slides

(Price, 2005) Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

A = B + C * D;
B = A * (C * D);
C = (C * D) * 2;

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

X = (Z * 2) + (Y - 1);
W = (Y - 1) / (K + 5);
K = (2 * Z) - (Y - (K + 5));

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

A = (A + 3) * (B - 5);
B = (A * 2) + (B - 5);
C = (7 + (A * 2));

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

A = B + 5 * C;
B = 5 * C - 10;
C = B + 5 * C;

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

X = C * (A + B);
A = A + B;
Y = B + D * E;
Z = A + B + D * E;

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

X = X + 2 * Y;
Y = 2 * Y + X;
Z = Y + X + 5;

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

A = X + Y - Z * K;
B = Z * K - Y;
C = K * (X + Y);
D = Z * K - X + Y;

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

x = x + y * z;
y = z * x + y * z;
z = z * x + y * z;

sobre a gramática livre de contexto apresentada a seguir:

G = ({A, E, T, F, V}, {x, y, z, =, +, -, *, /, (, )}, P, A)
P = {AV=E
EE+T | E-T | T
TT*F | T/F | F
F → (E) | V
V → x | y | z}

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

x = (a + b) * (b - c);
y = (a + b) * (b - c) * (c + d);
z = (a + b) * ((a + b) * (b - c) * (c + d));

sobre a gramática livre de contexto apresentada a seguir:

G = ({A, E, T, F, V}, {a, b, c, d, x, y, z, =, +, -, *, /, (, )}, P, A)
P = {AV=E
EE+T | E-T | T
TT*F | T/F | F
F → (E) | V
V → a | b | c | d | x | y | z}

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

x = b * c * d;
y = a + b * c * d + e;
z = a + b * c * d + e + f;

sobre a gramática livre de contexto apresentada a seguir:

G = ({A, E, T, F, V}, {a, b, c, d, e, f, x, y, z, =, +, -, *, /, (, )}, P, A)
P = {AV=E
EE+T | E-T | T
TT*F | T/F | F
F → (E) | V
V → a | b | c | d | e | f | x | y | z}

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

x = a * (b + c);
y = e * d + b + c;
z = (b + c) / e * d;

sobre a gramática livre de contexto apresentada a seguir:

G = ({A, E, T, F, V}, {a, b, c, d, e, f, x, y, z, =, +, -, *, /, (, )}, P, A)
P = {AV=E
ET+E | T-E | T
TF*T | F/T | F
F → (E) | V
V → a | b | c | d | e | f | x | y | z}

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

x = a + b;
y = a + b + c;
z = a + b + c + d;

sobre a gramática livre de contexto apresentada a seguir:

G = ({A, E, T}, {a, b, c, d, x, y, z, =, +, ;}, P, A)
P = {AAT=E; | T=E;
EE+T | T
T → a | b | c | d | x | y | z}

Apresente o código de três endereços, otimizado pela aplicação do método de construção de um grafo acíclico dirigido para blocos básicos, da seguinte sequência de comandos:

x = a + b + c;
y = (b + c) * a * d;
z = a * d + b + c;

sobre a gramática livre de contexto apresentada a seguir:

G = ({A, E, T, F, V}, {a, b, c, d, e, f, x, y, z, =, +, -, *, /, (, )}, P, A)
P = {AV=E
ET+E | T-E | T
TF*T | F/T | F
F → (E) | V
V → a | b | c | d | e | f | x | y | z}

Price, Ana Maria de Alencar. (2005). Implementação de Linguagens de Programação: compiladores. 3ª edição. Porto Alegre: Instituto de Informática da UFRGS: Sagra Luzzatto. 212 páginas.