(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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → T+E | T-E | T
T → F*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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → T+E | T-E | T
T → F*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 = {A → V=E
E → T+E | T-E | T
T → F*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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → E+T | E-T | T
T → T*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 = {A → V=E
E → T+E | T-E | T
T → F*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.