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 jrjs@cin.ufpe.br.

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 jrjs@cin.ufpe.br."— 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 fonte Análise léxica AST Análise sintática
Análise semântica Geração de código Tokens AST decorada Código objeto

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 Máquinas Virtuais 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

8 Máquinas Virtuais 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)

9 Máquinas Virtuais 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

10 Exemplo Demonstração...

11 Dicas o projeto! 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

12 Referências Iniciais JVM CLR
CLR 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 jrjs@cin.ufpe.br."

Apresentações semelhantes


Anúncios Google