Anda di halaman 1dari 22

Compiladores

Introduo Compiladores

Cristiano Lehrer, M.Sc.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Introduo (1/2)
O meio mais eficaz de comunicao entre pessoas a
linguagem (lngua ou idioma).
Na programao de computadores, uma linguagem de
programao serve como meio de comunicao entre o
indivduo que deseja resolver um determinado problema e o
computador escolhido para ajud-lo na soluo:
Ligao entre o pensamento humano e a preciso requerida para o
processamento pela mquina.
O desenvolvimento de um programa torna-se mais fcil se a
linguagem de programao em uso estiver prxima ao problema
a ser resolvido (linguagem de alto nvel):
Incluir construes que refletem a terminologia e/ou os elementos
usados na descrio do problema.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Introduo (2/2)
Os computadores digitais aceitam e entendem somente sua
prpria linguagem de mquina, a qual consiste tipicamente de
sequncias de zeros e uns (linguagem de baixo nvel).
Para que se tornem operacionais, os programas escritos em
linguagens de alto nvel devem ser traduzidos para linguagem
de mquina:
Converso realizada atravs de sistemas especializados -
compiladores ou interpretadores - que aceitam como entrada um
representao textual da soluo de um problema, expresso em
uma linguagem fonte, e produzem uma representao do mesmo
algoritmo expresso em outra linguagem, dita linguagem objeto.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Evoluo das Linguagens de Programao
Linguagens de mquina:
Programas em notao binria.
Linguagens simblicas (Assembly):
Linguagens simblicas ou de montagem.
Linguagens orientadas ao usurio:
Pascal, Fortran, Algol, Ada, C, C++, Java.
Linguagens orientadas a aplicao:
Excel, SQL, Lotus 1-2-3, Visicalc.
Linguagens de conhecimento:
Prolog.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Tradutores de Linguagens de Programao (1/4)
Tradutor um sistema que aceita como entrada um programa
escrito em uma linguagem de programao (linguagem fonte) e
produz como resultado um programa equivalente em outra
linguagem (linguagem objeto).
Montadores (assemblers):
Tradutores que mapeiam instrues em linguagem simblica
(assembly) para instrues de linguagem de mquina,
geralmente, numa relao de uma-para-uma, isto , uma instruo
de linguagem simblica para uma instruo de mquina.
Macro-assemblers:
Tradutores que mapeiam instrues em linguagem simblica
para linguagem de mquina, geralmente, numa relao de uma-
para-vrias.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Tradutores de Linguagens de Programao (2/4)
Compiladores:
Tradutores que mapeiam programas escritos em linguagens de
alto nvel para programas equivalentes em linguagem simblica
ou linguagem de mquina.

programa programa
COMPILADOR
fonte objeto

dados de resultados
PROGRAMA OBJETO
entrada

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Tradutores de Linguagens de Programao (3/4)

Pr-compiladores, pr-processadores ou filtros:


Tradutores que mapeiam instrues escritas numa linguagem de
alto nvel estendida para instrues da linguagem de
programao original, ou seja, so tradutores que efetuam
converses entre duas linguagens de alto nvel.

Fortran IV Fortran IV
FILTRO
Nvel G IBM padro ANSI

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Tradutores de Linguagens de Programao (4/4)
Interpretadores:
Tradutores que aceitam como entrada o cdigo intermedirio de
um programa anteriormente traduzido e produzem o efeito de
execuo do algoritmo original sem, porm, mape-lo para
linguagem de mquina.

dados

programa programa INTERPRETADOR resultados


TRADUTOR
fonte intermedirio (mquina virtual)

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (1/7)
programa fonte

analisador lxico A
N
atendimento

analisador sinttico L
a erros
I
S
analisador semntico E
tabelas
gerador de cdigo S
intermedirio
N
otimizador de cdigo T
E
S
gerador de cdigo objeto E

programa objeto
Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (2/7)
Anlise Lxica:
Identificar sequncias de caracteres que constituem unidades
lxicas (tokens).
O analisador lxico l, caractere a caractere, o texto fonte,
verificando se os caracteres lidos pertencem ao alfabeto da
linguagem, identificando tokens, e desprezando comentrios e
brancos desnecessrios.

while I < 100 do I := J + I;

[while, ] [id, 7] [<, ] [cte, 13] [do, ] [id, 7] [:=, ] [id, 12] [+, ] [id, 7] [;, ]

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (3/7)
Analises Sinttica e Semntica:
A fase de anlise sinttica tem por funo verificar se a estrutura
gramatical do programa est correta, isto , se essa estrutura foi
formada usando as regras gramaticais da linguagem.
A fase de anlise semntica tem por funo verificar se as
estruturas do programa iro fazer sentido durante a execuo.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (4/7)
Gerao de cdigo intermedirio:
Esta fase utiliza a representao interna produzida pela Analisador
Sinttico e gera como sada uma sequncia de cdigo.
Vantagens da gerao de cdigo intermedirio:
Possibilita a otimizao de cdigo intermedirio, de modo a obter-se o
cdigo objeto final mais eficiente.
Resolve, gradualmente, as dificuldades da passagem de cdigo fonte
para cdigo objeto, j que o cdigo fonte pode ser visto como um texto
condensado que explode em inmeras instrues elementares de
baixo nvel.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (5/7)
Otimizao de cdigo:
Esta fase tem por objetivo otimizar o cdigo intermedirio em
termos de velocidade de execuo e espao em memria.
Gerao de cdigo objeto:
Esta fase tem como objetivos:
Produo de cdigo objeto.
Reserva de memria para constantes e variveis.
Seleo de registradores.
a fase mais difcil, pois requer uma seleo cuidadosa das
instrues e dos registradores da mquina alvo a fim de produzir
cdigo objeto eficiente.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (6/7)
Gerncia de tabelas:
Algumas das tabelas usadas so fixas para cada linguagem, por
exemplo, a tabela de palavras reservadas, tabelas de
delimitadores.
Entretanto, a estrutura que possui importncia fundamental
aquela que montada durante a anlise do programa fonte, com
informaes sobre:
Declaraes de variveis.
Declaraes dos procedimentos ou subrotinas.
Parmetros de subrotinas.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Estrutura de um Tradutor (7/7)
Atendimento a erros:
Tem por objetivo tratar os erros que so detectados em todas as
fases de anlise do programa fonte.
Qualquer fase analtica deve prosseguir em sua anlise, ainda que
erros tenham sido detectados.
fundamental que o tradutor prossiga na traduo, aps a
deteco de erros, de modo que o texto seja totalmente analisado.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Arquitetura de um Processador Hipottico

A0 A3
R0

R1

R2

R3 D0 D7

processador memria

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Registradores
Presentes na figura:
Quatro registradores de dados, usados como rea de
armazenamento temporrio para os dados envolvidos na execuo
das operaes:
R0, R1, R2 e R3
Ocultos na figura:
Registrador de instrues:
Armazena a instruo que executada.
Contador de programas:
Armazena o endereo da prxima instruo que deve ser executada.
Registrador de controle:
Armazena o estado associado ao resultado da ltima instruo.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Barramento
Processador de oito bits:
Dimenso do barramento de dados:
D0 a D7
Memria:
Capacidade de endereamento de memria:
16 posies:
A0 a A3.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Instrues (1/2)
LOAD 00
Para transferir o contedo de uma posio de memria para um
registrador.
Por exemplo, a instruo LOAD 10, R1 usada para carregar o
contedo da posio 10 de memria para o registrador R1.
STORE 01
Para transferir o contedo de um registrador para uma posio de
memria.
Por exemplo, a instruo STORE R2, 5 usada para transferir o
contedo do registrador R2 para a posio 5 de memria.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Instrues (2/2)
ADD 10
Para adicionar o contedo de dois registradores e armazenar o
resultado em outro registrador.
Por exemplo, a instruo ADD R1, R2, R3 soma o contedo de R1
e R2 e coloca o resultado em R3.
BZERO 11
Para mudar o contedo do contador de programas para a posio
de memria especificada se o contedo do registrador indicado for
igual a zero.
Por exemplo, a instruo BZERO R3, 7 define que o contador de
programas ser alterado para o valor 7 somente se o contedo de
R3 for igual a zero.

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Representao Binria
LOAD 5, R3 00010111
LOAD 00
5 0101
R3 11
BZERO R3, 7 11110111
BZERO 11
R3 11
7 0111

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/


Exemplo

Linguagem de Alto Nvel


c = a + b;

Linguagem Simblica Linguagem de Mquina

LOAD 10, R1 00101001


LOAD 11, R2 00101110
ADD R1, R2, R0 10011000
STORE R0, 12 01001100

Introduo Compiladores Compiladores

Copyright 2009/2016 Ybadoo - Solues em Software Livre http://www.ybadoo.com.br/

Anda mungkin juga menyukai