A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Processadores de Linguagens

Apresentações semelhantes


Apresentação em tema: "Processadores de Linguagens"— Transcrição da apresentação:

1 Processadores de Linguagens
Tradutores e interpretadores Bootstrapping

2 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

3 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.

4 Outros tipos de tradutores
Tradutores entre linguagens de alto nível. Disassembler De(s)compilador

5 Linguagens Linguagem fonte Linguagem destino
Linguagem de implementação

6 Diagramas: Programas Programa P expresso na linguagem L P L sort Java
graph Basic

7 Diagramas: Máquinas Máquina M M x86 PPC SPARC

8   Diagrama: execução Rodando programa P na máquina M P M sort PPC
Java M PPC x86 x86

9 Diagrama: tradutores Tradutor de S para T expresso na linguagem L S L
Java C x86 Java x86 Java C++ C x86 ass. x86

10 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 T S M T M

11 Tradução: Exemplo sort Java sort x86 sort x86 Java x86 x86 x86

12 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.

13 Cross-compiler sort Java sort PPC sort PPC Java x86 PPC PPC x86

14 Interações ilegais sort Java sort Java C x86 Java x86 x86 PPC

15 Compilação em dois estágios
sort Java sort C sort x86 Java x86 C C x86 x86 x86

16 Compilação em N estágios
sort x86 sort C sort C sort ASM C x86 ASM  x86 C  ASM x86 x86 x86 x86 x86 C preprocessor C compiler Assembler

17 Compilando um compilador
Java C x86 Java x86 C x86 x86

18 Compiladores Permitem execução dos programas com máxima performance, em linguagem de máquina. Entretanto existe o tempo de espera pela compilação.

19 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.

20 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.

21 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.

22 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

23 Representação de um interpretador
Interpretador de S expresso na linguagem L S L Basic x86 SQL x86 shell C shell SPARC

24 Representação de um interpretador
Interpretação de um programa P expresso em uma linguagem S, usando um interpretador para S executando na máquina M P S S M M

25 Interpretadores: Exemplos
graph Basic chess Lisp chess Lisp Basic x86 Lisp x86 Basic x86 x86 x86 x86

26 Máquina Real x Abstrata
Projeto de uma nova máquina “Ultima” Para testes: usar um interpretador (emulador) Ultima C Ultima M C M M

27 Máquina Real x Abstrata
P Ultima P Ultima Ultima M Ultima M

28 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

29 O JDK Java M JVM JVM M P JVM P Java P JVM Java M JVM JVM M M M

30 Compiladores Portáveis
programa fonte do interpretador JVM, escrito em C compilador expresso em JVM programa fonte do compilador Java JVM Java JVM JVM C javac JVM C JVM M C M compilando o interpretador: M

31 Compiladores Portáveis
Java P JVM P JVM Java JVM JVM M JVM M M M compilando programas e usando o interpretador portável

32 Bootstrapping um compilador interpretador
JVM Java M JVM Java M JVM M Java JVM JVM M M

33 Bootstrapping um compilador interpretador (2)
JVM M JVM M JVM M JVM M Compilador compila a si mesmo M

34 Bootstrapping um compilador interpretador (3)
Java JVM Java M JVM JVM M M

35 Bootstrapping um compilador interpretador (4)
Java P JVM P M Java M JVM JVM M M M

36 Bootstrap completo: versão 1
Ada-S C M Ada-S C M Ada-S M C M M

37 Bootstrap completo: versão 2
Inicia desenvolvimento do novo compilador Ada-S M Compilador novo Ada-S M Ada-S M Ada-S M M Compilador antigo

38 Bootstrap completo: versão 2a
Inicia desenvolvimento do novo compilador Ada-S M Compilador novo Ada-S M Ada-S M Ada-S M M Compilador novo

39 Bootstrap completo: versão 3
Linguagem estendida Ada Ada-S M Ada Ada-S M Ada M Ada-S  M M M M

40 Bootstrap como estratégia para melhorar eficiência
Ada Mslow Ada Mslow programa fonte do compilador, que gera código ineficiente executável ineficiente do compilador, que também gera código ineficiente melhoria no programa fonte do compilador, para gerar código mais eficiente Ada Mfast

41 Bootstrap como estratégia para melhorar eficiência
Ada Mfast Ada Mslow Mfast Ada Mslow M

42 Bootstrap como estratégia para melhorar eficiência
Ada P Mfast P Mfast Ada Mslow Mfast M M

43 Bootstrap como estratégia para melhorar eficiência
Ada Mfast Ada Mfast Ada Mslow Mfast M


Carregar ppt "Processadores de Linguagens"

Apresentações semelhantes


Anúncios Google