Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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

 

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

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.