Ybadoo - Soluções em Software Livre
Turmas
2º Semestre de 2025

O código objeto é criado a partir da conversão do código-fonte em linguagem de máquina, sendo criado após passar por todas as etapas de compilação e não encontrar nenhum erro no código-fonte. Para cada arquivo de código fonte é gerado um arquivo com código objeto, que posteriormente será "ligado" aos outros, através de um linker, resultando em um arquivo executável ou biblioteca. Apresente o código objeto resultante do código de três endereços otimizado obtido na Questão 05, utilizando no máximo quatro registradores (R0 a R3).

Código de três endereços otimizado, representado por quádruplas
 operarg1arg2result
(0)*abT1
(1)-cdT2
(2)+T1T2T3
(3)=T3 x
(4)/eT1T4
(5)+T4T2T5
(6)=T5 y
(7)+eT2T6
(8)+T1T6T7
(9)=T7 z
Código objeto resultante do código de três endereços otimizado obtido na Questão 5
Código objetoComentárioR0R1R2R3
LOAD a, R0R0 = aa   
LOAD b, R1R1 = bab  
MUL R1, R0R0 = R0 * R1 (a * b)a * bb  
COPY R0, R1R1 = R0 (a * b)a * ba * b  
LOAD c, R2R2 = ca * ba * bc 
LOAD d, R3R3 = da * ba * bcd
SUB R3, R2R2 = R2 - R3 (c - d)a * ba * bc - dd
ADD R2, R0R0 = R0 + R2 ((a * b) + (c - d))(a * b) + (c - d)a * bc - dd
STORE R0, xx = R0 ((a * b) + (c - d))(a * b) + (c - d)a * bc - dd
LOAD e, R0R0 = eea * bc - dd
COPY R0, R3R3 = R0ea * bc - de
DIV R1, R0R0 = R0 / R1 (e / (a * b))e / (a * b)a * bc - de
ADD R2, R0R0 = R0 + R2 ((e / (a * b)) + (c - d))(e / (a * b)) + (c - d)a * bc - de
STORE R0, yy = R0 ((e / (a * b)) + (c - d))(e / (a * b)) + (c - d)a * bc - de
ADD R2, R3R3 = R3 + R2 (e + (c - d))(e / (a * b)) + (c - d)a * bc - de + (c - d)
ADD R3, R1R1 = R1 + R3 ((a * b) + (e + (c - d)))(e / (a * b)) + (c - d)(a * b) + (e + (c - d))c - de + (c - d)
STORE R1, zz = R1 ((a * b) + (e + (c - d)))(e / (a * b)) + (c - d)(a * b) + (e + (c - d))c - de + (c - d)