Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

(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.

 

LOAD   b, R0 // R0 = b
LOAD c, R1 // R1 = c
SUB R1, R0 // R0 = R0 - R1 (b - c)
COPY R0, R1 // R1 = R0 (b - c)
LOAD d, R2 // R2 = d
MUL R2, R1 // R1 = R1 * R2 ((b - c) * d)
LOAD a, R2 // R2 = a
MUL R0, R2 // R2 = R2 * R0 (a * (b - c))
ADD R1, R2 // R2 = R2 + R1 (a * (b - c)) + ((b - c) * d)
LOAD a, R0 // R0 = a
ADD R2, R0 // R0 = R0 + R2 (a + (a * (b - c)) + ((b - c) * d))
STORE R0, x // x = R0 (a + (a * (b - c)) + ((b - c) * d))

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