Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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

 

LOAD   x, R0 // R0 = x
COPY R0, R1 // R1 = R0 (x)
LOAD y, R2 // R2 = y
ADD R2, R0 // R0 = R0 + R2 (x + y)
SUB R2, R1 // R1 = R1 - R2 (x - y)
COPY R0, R2 // R2 = R0 (x + y)
DIV R1, R2 // R2 = R2 / R1 (x + y) / (x - y)
SUB R2, R0 // R0 = R0 - R2 (x + y) - ((x + y) / (x - y))
ADD R2, R0 // R0 = R0 + R2 ((x + y) - ((x + y) / (x - y))) + ((x + y) / (x - y))
STORE R0, z // z = R0 ((x + y) - ((x + y) / (x - y))) + ((x + y) / (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.