Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouGabriel Solomon Alterado mais de 9 anos atrás
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.