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

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

Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva

Apresentações semelhantes


Apresentação em tema: "Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva"— Transcrição da apresentação:

1 Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva

2 Roteiro Visão Geral Introdução Algoritmo de geração de código Máquinas Virtuais

3 Visão Geral Código objeto Análise sintática Código fonte AST Análise semântica Geração de código AST decorada Análise léxica Tokens

4 Introdução Fase essencial do back-end de um compilador que objetiva preencher o gap semântico entre a linguagem fonte e a máquina de destino Chamada de fase de síntese

5 Introdução Depende da arquitetura alvo Número de registradores e formas de endereçamento Dificilmente consegue ser reaproveitado  Máquinas Virtuais: M x N vs. M + N

6 Algoritmo de geração de código Aplicação de templates para traduzir as diversas frases do código fonte execute[V:=E] = evaluate E assign V Estrutura inerentemente recursiva Tem como entrada uma estrutura de objetos Padrão Visitor ;)

7 Definições: Particionamento de uma máquina: sistema IBM VM/ESA para o IBM 370 (1965). SO rodando sobre SO: Unix sobre Windows Software que simula o comportamento de uma máquina (diferente daquela na qual roda). Emuladores Ambientes independentes de plataforma para linguagens de programação Máquinas Virtuais

8 O-Code machine para BCPL (1960’s) P-Code machine para UCSD Pascal (1970´s) Smalltalk (1970´s) Java Virtual Machine para Java (1995) Microsoft.NET: VB, C#, C++,... (2001) Máquinas Virtuais

9 Impacto na Performance Linguagens Interpretadas: JavaScript, Haskell, etc. Portabilidade e Segurança 200x mais lentas que C Linguagens Baseadas em Bytecodes Linguagens semi-compiladas 10 a 20x mais lentas que C JIT: 5x mais lenta que C Máquinas Virtuais

10 Exemplo Demonstração...

11 Optar por gerar código CLR no projeto Maior suporte dos monitores Possivelmente a melhor metodologia é a engenharia reversa Testar bem a análise semântica antes de implementar a geração de código O Projeto não é simples Porém tem escopo bem definido Dicas o projeto!

12 Referências Iniciais JVM CLR 4/seminario.ppt 4/seminario.ppt John Gough, Compiling for the.NET Common Language Runtime

13 Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva


Carregar ppt "Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva"

Apresentações semelhantes


Anúncios Google