Aula 09 COMPILADORES Um compilador é um programa

Propaganda
Aula 09 – Fundamentos de Informática – 07/05/2009
Aula 09
Universidade
do Contestado – UnC/Mafra
Sistemas de Informação – 3ª Fase
Prof. Carlos Guerber
COMPILADORES
Um compilador é um programa que a partir de um código escrito em
uma linguagem, o código fonte, cria um programa semanticamente equivalente,
porém escrito em outra linguagem, código objeto.
Um compilador é um dos dois tipos mais gerais de tradutores, sendo que
o segundo tipo que a ele deve ser comparado é um interpretador.
Normalmente, o código fonte é escrito em uma linguagem de
programação de alto nível, com grande capacidade de abstração, e o código
objeto é escrito em uma linguagem de baixo nível, como uma sequência de
instruções a ser executada pelo processador.
O processo de compilação é composto de análise e síntese.
Análise: tem como objetivo entender o código fonte e representá-lo em uma
estrutura intermediária.
A análise pode ser subdividida ainda em análise
léxica, análise sintática e análise semântica.
Síntese: constrói o código objeto a partir desta representação intermediária. A
síntese é mais variada, podendo ser composta pelas etapas de Geração de
código intermediário, otimização de código e geração de código final (ou código
de máquina), e somente esta última etapa é obrigatória.
desenvolvedores, como programas à parte, apesar dessa visão não ser
necessariamente compartilhada pelo usuário.
Outra parte separada do compilador que muitos usuários vêem como
integrada é o linker, cuja função é unir vários programas já compilados de uma
forma independente e unificá-los em um programa executável. Isso inclui
colocar o programa final em um formato compatível com as necessidades do
sistema operacional para carregá-lo em memória e colocá-lo em execução.
Em português, Compilar significa por exemplo: Reunir obras literárias,
documentos, escritos de vários autores, entre outros, compondo uma obra com
esse material.
INTERPRETADORES
Interpretadores são programas de computador que lêem um código fonte
de uma linguagem de programação e os convertem em código executável. Seu
funcionamento pode variar de acordo com a implementação.
Em muitos casos o interpretador lê linha-a-linha e converte em
código objeto à medida que vai executando o programa.
Linguagens interpretadas são mais dinâmicas por não precisarem
escrever-compilar-testar-corrigir-compilar-testardistribuir,
e sim
escrever-testar-corrigir-escrever-testar-distribuir.
Classicamente, um compilador traduz um programa de uma linguagem
textual facilmente entendida por um ser humano para uma linguagem de
máquina, específica para um processador e sistema operacional.
Atualmente, porém, são comuns compiladores que geram código para
uma máquina virtual que é, depois, interpretada por um interpretador.
Nas linguagens de programação híbridas, o compilador tem o papel
de converter o código fonte em um código chamado de byte code, que é uma
linguagem de baixo nível. Um exemplo deste comportamento é o do
compilador da linguagem Java que, em vez de gerar código da máquina
hospedeira (onde se está executando o compilador), gera código chamado
Java Bytecode.
Um compilador é chamado de Just-in-time compiler (JIT) quando seu
processo de compilação acontece apenas quando o código é chamado.
Normalmente, o usuário tem a percepção que um compilador JIT é um
interpretador.
Muitos compiladores incluem um pré-processador. Um pré-processador
normalmente é responsável por mudanças no código fonte destinadas de
acordo com decisões tomadas em tempo de compilação. Por exemplo, um
programa em C permite instruções condicionais para o pré-processador que
podem incluir ou não parte do código caso uma assertiva lógica seja verdadeira
ou falsa, ou simplesmente um termo esteja definido ou não. Tecnicamente, préprocessadores são muito mais simples que compiladores e são vistos, pelos
Mas existem também linguagens que funcionam como interpretadores e
compiladores, como: C, Python, BASIC.
Download