Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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

 

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

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.