Geração e Otimização de Código
A Geração e Otimização de Código é a última etapa na parte de compilação. É nessa etapa onde código de alto nível é transformada em uma linguagem que o computador entende.
Geração de Código
Em geral a geração de código não se dá diretamente para a linguagem Assembly do processador alvo, ela é dividida em duas partes:
1º O analisador sintático gera código para uma máquina abstrata, com uma linguagem próxima a Assembly, porem independente de processadores específicos.
2º O código intermediário é traduzido para a linguagem Assembly desejada.
Dessa forma, grande parte do compilador é reaproveitada para trabalhar com diferentes tipos de processadores.
Código Intermediário
A linguagem utilizada para a geração de um código em formato intermediário entre a linguagem de alto nível e a linguagem Assembly deve representar, de forma Independente do processador para o qual o programa será gerado, todas as expressões do programa original.
Duas formas usuais para esse tipo de representação são a notação pós fixa e o código de três endereços.
Como Faze-la?
São criadas regras baseadas na arvore de derivação sintática. Conhecida como: Geração dirigida sintaticamente.
Exemplo: Obter o resultado para 3*4+5*2:
A introdução dos valores na pilha deve ser feita através da instrução LoadCon, onde será o valor imediato das constantes da expressão. Além disso temos que executar