Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Slides

(Price, 2005) Dado o comando de atribuição x = (a + b) * c - (a + b) / d, apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo três registradores.

(Ricarte, 2008) Dado o comando de atribuição x = (a + b + c) * (b + c) - d, apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo dois registradores.

(Ricarte, 2008) Dado o comando de atribuição x = a - (b - a * (c + b / d)), apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo quatro registradores.

(Ricarte, 2008) Dado o comando de atribuição x = (a + b) - (a - (c - d) * (e - f) + g) / h, apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo três registradores.

(Price, 2005) Dado o comando de atribuição x = a * b + c * d - e * f, apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo três registradores.

(Aho, 2008) Dado o comando de atribuição z = ((x + y) - ((x + y) / (x - y))) + ((x + y) / (x - y)), apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo três registradores.

(Aho, 2008) Dado o comando de atribuição x = a + a * (b - c) + (b - c) * d, apresente o código objeto gerado, considerando as otimizações disponíveis e a disponibilidade de no máximo três registradores.

Apresente o código objeto gerado dos comandos de atribuição apresentados a seguir, considerando todas as otimizações disponíveis, sobre a gramática livre de contexto apresentada a seguir.

x = a * b + a * b;
y = c * d - a * b - c * d;
G = ({A, E, T, F, V}, {a, b, c, d, x, y, =, +, -, *, /, (, )}, 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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

x = b + c * d;
y = a - b + c * d;

Gramática livre de contexto:

G = ({A, E, T, F, V}, {a, b, c, d, x, y, =, +, -, *, /, (, )}, 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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

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

Gramática livre de contexto:

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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

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

Gramática livre de contexto:

G = ({A, E, T, F, V}, {a, b, c, d, x, y, =, +, -, *, /, (, )}, 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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

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

Gramática livre de contexto:

G = ({A, E, T, F, V}, {a, b, c, d, x, y, =, +, -, *, /, (, )}, 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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

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

Gramática livre de contexto:

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

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

x = a * b + c + d;
y = a * b - c + d;

Gramática livre de contexto:

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

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

x = a * b + c + d;
y = a * b - c + d;

Gramática livre de contexto:

G = ({A, E, T, F, V}, {a, b, c, d, x, y, =, +, -, *, /, (, )}, 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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

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

Gramática livre de contexto:

G = ({A, E, T, F, V}, {a, b, c, d, x, y, =, +, -, *, /, (, )}, 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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

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

Gramática livre de contexto:

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}

Dado os comandos de atribuição e a gramática livre de contexto apresentados a seguir, apresente o código objeto gerado, considerando as otimizações disponíveis.

Comandos de atribuição:

x = a * b + c + d;
y = a * b - c + d;

Gramática livre de contexto:

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

Aho, Alfred V. (2008). Compiladores: princípios, técnicas e ferramentas. 2ª edição. São Paulo: Pearson Addison-Wesley. 634 páginas.

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.

Ricarte, Ivan. (2008). Introdução à Compilação. Rio de Janeiro: Elsevier. 264 páginas.