Documente Academic
Documente Profesional
Documente Cultură
+ params
output
1100111 0011100011
Cdigo Fonte
Compilador
Programa
Introduo
Linguagens: Homem: natural + notaes (como a matemtica) Mquina: nvel muito atmico (dgitos, binrios, registradores, memria etc) Soluo proposta: ling. Alto Nvel
Programa Fonte
Tradutor
Programa Objeto
Execuo de Programas
Programa em Linguagem de Mquina
Uma linguagem de programao um conjunto de ferramentas, regras de sintaxe e smbolos ou cdigos que nos permitem escrever programas de computador; A primeira e mais primitiva linguagem de computador a prpria linguagem mquina (0s e 1s);
Execuo de Programas
Linguagem de Montagem
A resoluo do problema passou pela criao de uma linguagem em que os cdigos numricos foram substitudos por mnemnicos;
O nome dessa linguagem ASSEMBLY LANGUAGE; Ento ser necessrio um outro programa que leia o programa escrito nessa linguagem alternativa e o traduza para a linguagem nativa do computador; O processo de traduo da linguagem de montagem para a linguagem de mquina realizada por um programa chamado ASSEMBLER.
Execuo de Programas
Linguagem de Montagem
Execuo de Programas
Linguagem de Montagem
Execuo de Programas
Linguagem de Programao
Estas novas linguagens foram afastando cada vez mais o programador do nvel de mquina.
Execuo de Programas
Traduo
Os programas em linguagem de alto nvel tambm precisam de ser traduzidos para linguagem de mquina.
Traduo
Cdigo Fonte Cdigo Objecto
Execuo de Programas
Montagem
O processo de montagem traduz um programa escrito numa LP num programa equivalente em linguagem maquina.
Processo de Montagem
Cdigo Fonte
Traduo Linguagem de Mquina
Interpretadores
Interpretadores
Como funcionam os interpretadores
O funcionamento dos interpretadores muito parecido ao dos compiladores; O interpretador traduz o cdigo linha a linha; O cdigo fonte no totalmente traduzido antes de ser executado; No existem fases distintas nem se produz cdigo intermedirio; Passa o tempo todo a ler e a traduzir cdigo.
Interpretadores
Interpretador: o tradutor transforma uma L.P. numa linguagem simplificada, chamada Cdigo intermedirio, que pode ser diretamente executado usando um programa chamado interpretador.
Programa Fonte
Interpretador
OBS: Podemos pensar na linguagem intermediria como sendo a linguagem de mquina de um computador abstrato designado a executar o cdigo fonte.
Interpretadores
Em alguns casos, a prpria linguagem fonte pode ser a linguagem intermediria. Por ex, a maioria das linguagens de comandos, na qual nos comunicamos diretamente com o sistema Operacional, so interpretadas sem nenhuma traduo prvia (Ex. DOS).
Os Interpretadores so em geral, menores que os Compiladores e facilitam as implementaes de L.P. A principal desvantagem que o tempo de execuo de um programa interpretado em geral, maior que o de um correspondente programa objeto compilado.
Interpretadores
Os Exemplos de interpretadores
Visual G.
Compiladores
Compiladores
O nome compilador, criado nos anos 50, faz referncia ao processo de composio de um programa pela reunio de vrias rotinas de biblioteca; o processo de traduo (de uma linguagem fonte para uma linguagem objeto).
Programa Linguagem Fonte
Compilador
Mensagens de Erro
Compiladores
O que um compilador
Compiladores
O que um compilador
Um compilador tem a finalidade de converter uma linguagem Linguagem Fonte (de fcil escrita e leitura para os programadores), numa linguagem alvo ou objecto (que possa ser executada pelas mquinas); O cdigo executvel gerado pelo compilador dependente do sistema operacional e da linguagem de mquina para o qual o cdigo fonte foi traduzido;
A enorme variedade de compiladores existentes bem vinda, visto que existem milhares de linguagens fonte, e as linguagens alvo so tambm muito variadas.
Compiladores
O que um compilador
O primeiro compilador de FORTRAN, por exemplo, demorou 18 trabalhosos meses para implementar;
Boas linguagens de implementao, ambientes de programao, e ferramentas de software tambm vieram a ser desenvolvidas.
Compiladores
Variedade de Compiladores
Linguagem Fonte
Mquina Alvo
Fortran
C Pascal Modula Algol ...
Intel
Mips Sparc ...
Compiladores
Primos de um compilador
Pr-processadores: produzem o input para os compiladores; Montadores: Alguns compiladores produzem cdigo Assembler que passado para um montador para posterior processamento;
Compiladores
Primos de um compilador
Montagens bi-passo:
I Passo - todos os identificadores que denotam localizaes de armazenamento, so encontrados e armazenados numa tabela de smbolos II Passo - traduz cada cdigo de operao para sequncias de bits representando essa operao na linguagem mquina
Consiste em tomar o restabelecimento do cdigo mquina, alterando os endereos restabelecidos e colocando as instrues alteradas e dados na memria nas localizaes convenientes. O editor de unio permite-nos fazer um nico programa dos vrios ficheiros de cdigo de mquina relocalizvel;
Compiladores
Primos de um compilador
Bibliotecas:
O desenvolvimento de um programa certamente utilizar diversas operaes que so comuns a muitos outros programas;
Um programa de alto nvel possivelmente conter diversas chamadas de biblioteca;
Essas funes no devem ser confundidas com as instrues da linguagem na realidade, so pequenos programas externos que so chamados atravs de instrues especiais chamado biblioteca.
Comparao
Vantagens
Execuo mais rpida
Desvantagens
Vrias etapas de traduo Programao final maior, necessitando mais memria para a sua execuo Processo de correco de erros e depurao mais demorado Execuo do programa mais lenta
Compiladores
Permite estruturas de programao mais completas Permite a optimizao do cdigo fonte Depurao do programa mais simples
Interpretadores
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Compiladores
A interao entre os mdulos do compilador
Programa Fonte Anlise Lxica Sinttica Semntica Tratamento de Erros
Fases de Compilao
implementao Cdigo fonte
Anlise Lxica
Tokens e Lexemas
Anlise Sinttica
abstrao
Gerao de Cdigo
Compiladores
Modelo Anlise- sntese da compilao
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Compiladores
Anlise do programa fonte
Em que a cadeia de caracteres que forma a estrutura do programa fonte lido da esquerda para a direita e agrupado em tokens. A sua funo bsica o reconhecimento e a classificao das estruturas elementares ou classes sintcticas das linguagens.
Anlise Lexica
Anlise Lexica
Anlise Lexica
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Compiladores
Anlise do programa fonte
Anlise Sinttica
Anlise Sinttica
Anlise Sinttica
Anlise Sinttica
while I < 100 do I := J + I ;
Anlise Sinttica
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Compiladores
Anlise semntica:
Verifica o programa em relao a possveis erros semnticos e guarda informaes adicionais. A anlise semntica trata os aspectos sensveis ao contexto da sintaxe das linguagens de programao. Ex.: "Toda varivel deve ser declarada antes de ser usada!. A verificao se essa regra foi aplicada cabe anlise semntica.
Anlise Semntica
Funes:
Verificar se o significado das construes sintticas possibilitam a gerao de cdigo; Extrair informaes do programa fonte que possibilitem a gerao de cdigo; Por exemplo, o seguinte comando IF, sintaticamente correto, pode existir em um programa: if a>7 then b:=5 else b:=10;
Depende dos tipos das variaveis a e b
Anlise Semntica
Principais verificaes semnticas:
Compatibilidade de tipos
... var A: boolean; B: real; ... A:=B+0,5;
Anlise Semntica
Duplicidade de identificadores:
Var A, A, B: integer;
Anlise Semntica
Compatibilidade entre parmetros formal e atual:
procedure X (a, b: integer); begin ... end; ... X(a, b, c);
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Compiladores
Estrutura Geral de um Compilador
(Modelo de compilao de Anlise e Sntese) Anlise Lxica 1. Anlise Anlise Estrutural Anlise Sinttica
Otimizao do Cdigo
Realiza transformaes no cdigo visando melhorar sua performance em aspectos de tempo de execuo, uso de memria, tamanho do cdigo executvel etc. Estratgias bsicas de otimizao: Eliminao de cdigo redundante: busca detectar situaes onde a traduo de duas expresses gera instrues cuja execuo repetida no tem efeito. Por exemplo: x := y ..(codigo).. x := y Eliminao de cdigo no-alcanvel, ou cdigo morto. Ex.: Em um comando de deciso o cdigo nunca alganado! Uso de propriedades algbricas, quando o compilador identifica que uma expresso aritmtica foi reduzida a: ou ento o compilador reduz a expresso a:
Tratamento de Erros...
Em todas as fases...
Tratamento de Erros...
Linguagens: C e C++... so compiladas estaticamente, e seus cdigos fontes so transformados diretamente em linguagem de mquina. Java, C# e Python tm seus cdigos fontes transformados em uma linguagem intermediria (especfica de cada linguagem), que ser interpretada pela mquina virtual da linguagem quando o programa for executado.