11.07.2015 Views

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

Compiladores: PASCALjr - WWW2 - Udesc

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

A análise semântica tem por objetivo validar os comandos e expressões através deanálises como compatibilidade de tipos e escopo de identificadores. Esta etapa analisa,por exemplo, se um identificador declarado como variável é usado como tal, ou se umaexpressão atribuída a uma variável retorna um tipo compatível com o qual foi declaradaa variável (em algumas linguagens, uma variável inteira não pode receber uma expressãoreal).Até aqui foi realizada a etapa de análise do programa fonte, ou seja, a procura porerros de programação. Caso nenhum erro seja encontrado, o processo de compilação passaentão para a etapa de síntese, ou seja, a construção do programa objeto.A geração do código intermediário é a primeira fase da construção do programaobjeto. O que ela faz é a representação do programa fonte em uma linguagem intermediáriasimplificada (máquina abstrata), o que permite a realização da próxima etapamais facilmente.A próxima etapa é a otimização de código, que tem por objetivo tentar modificaro código intermediário no intuito de melhorar a velocidade de execução, bem como autilização do espaço de memória, fazendo com isso, um uso mais racional dos recursos damáquina.A última etapa do processo de compilação é a geração de código objeto propriamentedita. Esta fase tem como objetivos: produção de código objeto, reserva de memóriapara constantes e variáveis, seleção de registradores, etc. É a fase mais difícil, pois requeruma seleção cuidadosa das instruções e dos registradores da máquina alvo a fim deproduzir código objeto eficiente.Exemplo de geração de código para o código fonte:While I < 100 do I := J + ICódigo Intermediário Otimização Código ObjetoL0: if I

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!