Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.
Transcript of Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.
![Page 1: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/1.jpg)
Processadores de Linguagens
1. Tradutores e interpretadores
2. Bootstrapping
![Page 2: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/2.jpg)
Tradutores e Compiladores
• Tradutores recebem um texto expresso em uma linguagem fonte e geram um texto semanticamente equivalente em uma linguagem destino.– Chinês para inglês– Java para C– Java para x86– x86 assembler
![Page 3: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/3.jpg)
Assembler x Compilador
• Um assembler traduz de uma linguagem de montagem para o código de máquina correspondente. Uma instrução de máquina para cada instrução em assembly language.
• Um compilador traduz de uma linguagem de alto nível para uma linguagem de baixo nível. Várias instruções de máquina para cada linha de comando da linguagem de alto-nível.
![Page 4: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/4.jpg)
Outros tipos de tradutores
• Tradutores entre linguagens de alto nível.
• Disassembler
• De(s)compilador
![Page 5: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/5.jpg)
Linguagens
• Linguagem fonte
• Linguagem destino
• Linguagem de implementação
![Page 6: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/6.jpg)
Diagramas: Programas
• Programa P expresso na linguagem L
P
L
graph
Basic
sort
x86
sort
Java
![Page 7: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/7.jpg)
Diagramas: Máquinas
• Máquina M
M
SPARCPPCx86
![Page 8: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/8.jpg)
Diagrama: execução
• Rodando programa P na máquina M
P
M
M
sort
PPC
PPC
sort
PPC
x86
sort
Java
x86
![Page 9: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/9.jpg)
Diagrama: tradutores
• Tradutor de S para T expresso na linguagem L
S
L
T
Java
C
x86 Java
x86
x86 Java
C++
C x86 ass.
x86
x86
![Page 10: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/10.jpg)
Diagrama: tradução• Tradução de um programa fonte P expresso
na linguagem S em um programa objeto expresso na linguagem T usando um tradutor de S para T executando na máquina M P
S
P
TS
M
T
M
![Page 11: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/11.jpg)
Tradução: Exemplo
sort
Java
sort
x86Java
x86
x86
x86
sort
x86
x86
![Page 12: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/12.jpg)
Cross-compiler
• Roda em uma máquina hospedeira, mas gera código para outra máquina.
• Usado quando a máquina destino tem pouca memória, não tem compilador ou outras ferramentas.
![Page 13: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/13.jpg)
Cross-compiler
sort
Java
sort
PPCJava
x86
PPC
x86
sort
PPC
PPC
![Page 14: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/14.jpg)
Interações ilegais
sort
Java C
x86
x86
x86
sort
Java Java
x86
x86
PPC
![Page 15: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/15.jpg)
Compilação em dois estágios
sort
Java
sort
CJava
x86
C
x86
C
x86
x86
x86
sort
x86
![Page 16: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/16.jpg)
Compilação em N estágios
sort
C
sort
CC
x86
C
x86
C ASM
x86
x86
sort
ASM
C preprocesso
r
ASM x86
x86
x86
sort
x86
C compile
r
Assembler
![Page 17: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/17.jpg)
Compilando um compilador
C
x86
x86
x86
Java
C
x86 Java
x86
x86
![Page 18: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/18.jpg)
Compiladores
• Permitem execução dos programas com máxima performance, em linguagem de máquina.
• Entretanto existe o tempo de espera pela compilação.
![Page 19: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/19.jpg)
Interpretadores
• Recebem um programa fonte escrito em uma linguagem fonte, e o executam imediatamente.
• Lê, analisa e executa as instruções do programa fonte, uma de cada vez.
• Resultados imediatos, sem a tradução do programa para código objeto antes da execução.
![Page 20: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/20.jpg)
Uso de Interpretadores
• Programador trabalha em modo interativo, e quer ver o resultado de uma instrução antes de entrar a próxima;
• Programas descartáveis, em que velocidade de execução não é tão importante;
• Execução de instruções apenas um vez, ou raramente;
• Formato de instruções simples, podendo ser analisada fácil e eficientemente.
![Page 21: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/21.jpg)
Uso de Interpretadores
• Execução (de linguagem de alto nível) até 100 vezes mais lenta que a versão compilada;
• Inadequado quando o programa vai ser executado em produção, ou executado frequentemente, ou instruções tem formato complicado, difícil de ser analisado.
![Page 22: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/22.jpg)
Exemplos de Interpretadores
• Basic: expressões e atribuições de alto nível, mas estruturas de controle de baixo nível (desvio condicional/incondicional);
• Lisp: estrutura de árvore para código e dados, podendo gerar código em tempo de execução;
• Shell do Unix e do DOS• Interpretador SQL
![Page 23: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/23.jpg)
Representação de um interpretador
S
L
• Interpretador de S expresso na linguagem L
SQL
x86
shell
C
shell
SPARC
Basic
x86
![Page 24: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/24.jpg)
Representação de um interpretador
S
M
• Interpretação de um programa P expresso em uma linguagem S, usando um interpretador para S executando na máquina M
P
S
M
![Page 25: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/25.jpg)
Interpretadores: Exemplos
chess
Lisp
Basic
x86
graph
Basic
x86
chess
Lisp
Lisp
x86
x86
Basic
x86
x86
![Page 26: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/26.jpg)
Máquina Real x Abstrata
• Projeto de uma nova máquina “Ultima”
• Para testes: usar um interpretador (emulador)
C
M
M
M
Ultima
C
Ultima
M
![Page 27: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/27.jpg)
Máquina Real x Abstrata
P
Ultima
Ultima
M
M
P
Ultima
Ultima
![Page 28: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/28.jpg)
Interpretive Compiler
• Combina características de interpretadores e compiladores.
• Compila para uma linguagem intermediária, e interpreta esta linguagem.
• Linguagem intermediária: simples e rápido de traduzir para ela, e simples e rápida de interpretar.
• Exemplo: Java, no JDK
![Page 29: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/29.jpg)
O JDK
Java
M
JVM
M
Java
M
JVM
JVM
M
P
JVM
M
JVM
M
P
Java
P
JVM
![Page 30: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/30.jpg)
M
Compiladores Portáveis
Java
Java
JVM JVM
C
Java
JVM
JVM
JVM
C C
M
M
JVM
M
programa fonte do compilador
programa fonte do interpretador JVM,
escrito em C
compilador expresso em
JVM
compilando o interpretador:
javac
![Page 31: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/31.jpg)
Compiladores Portáveis
M
Java
JVM
JVM
P
Java
P
JVM
JVM
M
JVM
M
P
JVM
M
compilando programas e usando o interpretador portável
![Page 32: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/32.jpg)
Bootstrapping um compilador interpretador
M
Java
JVM
JVM
JVM
M
JVM
Java
M JVM
Java
M JVM
JVM
M
![Page 33: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/33.jpg)
Bootstrapping um compilador interpretador (2)
M
JVM
JVM
M
JVM
M
JVM
M
MJVM
JVM
M
Compilador compila a si
mesmo
![Page 34: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/34.jpg)
Bootstrapping um compilador interpretador (3)
M
JVM
M
M
Java
M
JVMJava
JVM
JVM
![Page 35: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/35.jpg)
Bootstrapping um compilador interpretador (4)
M
JVM
M
M
M
Java
M
JVM
P
Java
P
JVM
P
M
![Page 36: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/36.jpg)
Bootstrap completo: versão 1
M
C
M
M
Ada-S
C
M
Ada-S
C
M Ada-S
M
M
![Page 37: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/37.jpg)
Bootstrap completo: versão 2
M
Ada-S
Ada-S
M
Ada-S
M
MAda-S
Ada-S
M
Inicia desenvolviment
o do novo compilador
Inicia desenvolviment
o do novo compilador
Compilador antigo
Compilador novo
Ada-S
M
M
![Page 38: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/38.jpg)
Bootstrap completo: versão 2a
M
Ada-S
Ada-S
M
Ada-S
M
MAda-S
Ada-S
M
Inicia desenvolviment
o do novo compilador
Inicia desenvolviment
o do novo compilador
Compilador novo
Compilador novo
Ada-S
M
M
![Page 39: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/39.jpg)
Bootstrap completo: versão 3
M
Ada
Ada-S
M
Ada
Ada-S
M Ada
M
M
M
MAda-S M
Linguagem estendida
![Page 40: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/40.jpg)
Bootstrap como estratégia para melhorar eficiência
Ada
Ada
Mslow Ada
Mslow
Mslow
Ada
Ada
Mfast
programa fonte do compilador, que gera código
ineficiente
executável ineficiente do
compilador, que também gera código
ineficientemelhoria no
programa fonte do compilador,
para gerar código mais eficiente
![Page 41: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/41.jpg)
Bootstrap como estratégia para melhorar eficiência
Ada
Mslow
Mfast
Ada
Mslow
Mslow
Ada
Ada
Mfast
M
![Page 42: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/42.jpg)
Bootstrap como estratégia para melhorar eficiência
Ada
Mslow
Mfast
M
P
Ada
P
Mfast
M
P
Mfast
![Page 43: Processadores de Linguagens 1.Tradutores e interpretadores 2.Bootstrapping.](https://reader035.fdocumentos.com/reader035/viewer/2022081417/552fc171497959413d8ee1e8/html5/thumbnails/43.jpg)
Bootstrap como estratégia para melhorar eficiência
Ada
Mslow
Mfast
M
Ada
Ada
Mfast Ada
Mfast
Mfast