Professor: Gabriel Soares Baptista

A conversão raramente é direta. O processo é estruturado em fases:
O Assembly serve apenas como uma interface textual legível para os binários que a CPU efetivamente processa.
1. Se a relação entre Assembly e binário é tão próxima, por que o processo de compilação não encerra na geração do Assembly? Analise o papel do Montador neste estágio final e explique por que ele é indispensável para transformar uma representação textual (humana) em uma realidade elétrica (máquina).
Imagine um cenário com N linguagens e M arquiteturas.
$$ N \times M \text{ Compiladores} $$
Consequência: Explosão combinatória de manutenção.
Desacoplamento em duas fases:
$$ N + M \text{ Compiladores} $$
Vantagem:
2. Imagine que você é engenheiro em uma empresa que acaba de lançar uma arquitetura de processador inédita e revolucionária. Baseando-se na discussão sobre a "Abordagem Monolítica" versus a "Abordagem Modular com IR", argumente como a existência de uma Linguagem Intermediária (IR) determina a viabilidade de adoção do seu novo processador no mercado. O que seria necessário desenvolver para que linguagens como C e Python rodassem no seu hardware, e como esse esforço se compararia ao cenário sem uma IR?
3. Analise o fluxo moderno de compilação apresentado (Fonte -> IR -> Assembly -> Binário). Em vez de traduzir diretamente da Fonte para o Binário, os compiladores modernos fragmentam esse processo. Quais os benefícios estratégicos dessa fragmentação: o que ganhamos em termos de manutenibilidade e reutilização de código ao inserir a camada da Linguagem Intermediária nesse fluxo?