Escolar Documentos
Profissional Documentos
Cultura Documentos
Tradutores e Compiladores
Tradutores recebem um texto expresso em uma linguagem fonte e geram um texto semanticamente equivalente em uma linguagem destino.
Chins para ingls Java para C Java para x86 x86 assembler
Assembler x Compilador
Um assembler traduz de uma linguagem de montagem para o cdigo de mquina correspondente. Uma instruo de mquina para cada instruo em assembly language. Um compilador traduz de uma linguagem de alto nvel para uma linguagem de baixo nvel. Vrias instrues de mquina para cada linha de comando da linguagem de alto-nvel.
Linguagens
Linguagem fonte Linguagem destino Linguagem de implementao
Diagramas: Programas
Programa P expresso na linguagem L
P L
sort
Java
sort
x86
graph
Basic
Diagramas: Mquinas
Mquina M
M
x86
PPC
SPARC
Diagrama: execuo
Rodando programa P na mquina M
P M sort PPC sort PPC sort Java
PPC
x86
x86
Diagrama: tradutores
Tradutor de S para T expresso na linguagem L
ST L
Java x86
C
Java x86
x86
Java C
C++
Diagrama: traduo
Traduo 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 mquina M P P
S ST M M T
Traduo: Exemplo
sort Java Java x86 x86 x86 sort x86 sort
x86
x86
Cross-compiler
Roda em uma mquina hospedeira, mas gera cdigo para outra mquina. Usado quando a mquina destino tem pouca memria, no tem compilador ou outras ferramentas.
Cross-compiler
sort sort sort
PPC
PPC
Interaes ilegais
sort Java sort C x86 x86 x86
PPC
x86
Compilao em N estgios
sort C CC sort C sort sort
x86
x86 C preprocesso r
C compile r
Assemble r
Compilando um compilador
Java x86 C Java x86 C x86 x86 x86 x86
Compiladores
Permitem execuo dos programas com mxima performance, em linguagem de mquina. Entretanto existe o tempo de espera pela compilao.
Interpretadores
Recebem um programa fonte escrito em uma linguagem fonte, e o executam imediatamente. L, analisa e executa as instrues do programa fonte, uma de cada vez. Resultados imediatos, sem a traduo do programa para cdigo objeto antes da execuo.
Uso de Interpretadores
Programador trabalha em modo interativo, e quer ver o resultado de uma instruo antes de entrar a prxima; Programas descartveis, em que velocidade de execuo no to importante; Execuo de instrues apenas um vez, ou raramente; Formato de instrues simples, podendo ser analisada fcil e eficientemente.
Uso de Interpretadores
Execuo (de linguagem de alto nvel) at 100 vezes mais lenta que a verso compilada; Inadequado quando o programa vai ser executado em produo, ou executado frequentemente, ou instrues tem formato complicado, difcil de ser analisado.
Exemplos de Interpretadores
Basic: expresses e atribuies de alto nvel, mas estruturas de controle de baixo nvel (desvio condicional/incondicional); Lisp: estrutura de rvore para cdigo e dados, podendo gerar cdigo em tempo de execuo; Shell do Unix e do DOS Interpretador SQL
Representao de um interpretador
Interpretador de S expresso na linguagem L
S L Basic x86 SQL x86 shell C shell SPARC
Representao de um interpretador
Interpretao de um programa P expresso em uma linguagem S, usando um interpretador para S executando na mquina M
P S S M M
Interpretadores: Exemplos
graph Basic Basic x86 x86 chess Lisp Lisp x86 x86 chess
Basic
x86 x86
Lisp
M M
P Ultima Ultima
Interpretive Compiler
Combina caractersticas de interpretadores e compiladores. Compila para uma linguagem intermediria, e interpreta esta linguagem. Linguagem intermediria: simples e rpido de traduzir para ela, e simples e rpida de interpretar. Exemplo: Java, no JDK
O JDK
Java JVM M JVM M P
P
JVM JVM M M
M M
Compiladores Portveis
programa fonte do compilador compilador expresso em JVM javac programa fonte do interpretador JVM, escrito em C
Java JVM
JVM
JVM
JVM JVM
compilando o interpretador:
CM
M M
Compiladores Portveis
P P P JVM JVM M M
JVM
JVM M
M
compilando programas e usando o interpretador portvel
Java
M M
Java JVM
M
JVM M M M
Ada-S M C
Ada-S M CM M M M
Ada-S M
Ada-S
Compilador novo
Ada-S M M
Ada-S M
Ada-S
Compilador novo
Ada-S M M
Ada M
Ada-S
Ada M
Ada-S Ada-S M M M M
Ada M
M
Mslow
M
Ada
Ada Mfast
Mslow M
Mfast
Mfast
M