Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva jrjs@cin.ufpe.br.

Slides:



Advertisements
Apresentações semelhantes
Linguagem de Programação I
Advertisements

Introdução à Ciência da Computação Linguagens de Programação.
Tópicos I – Prof. Eduardo Zagari Virtualização André Bernardes RA: César Kallas RA: Eduardo Stuchi RA: Rafael Curi RA:
Linguagem de Montagem Visão geral.
Paradigmas de Programação
Virtualização de Máquinas
Introdução à Compilação Prof. Leandro Magno Slides adaptados a partir do material cedido pelos professores Heloise Manica Paris Teixeira, Yandre M. G.
Teoria dos Compiladores
SSC SISTEMAS OPERACIONAIS I
INTRODUÇÃO À PROGRAMAÇÃO
Virtualização..
Alexandre Parra Site: Linguagem Java Alexandre Parra Site:
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Tradutores de Linguagens
Aula 2 Aspectos Preliminares
Prof. Msc. Raul Paradeda Aula 2 Introdução
Introdução a Programação Orientada a Objetos
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Elizeu Madeira Eduardo Cardoso João Paulo Duarte
Análise léxica e sintática
Aula prática – geração de código (.NET)
Análise léxica e sintática
Aula prática - análise contextual
JAVA Linguagem Ambiente de Desenvolvimento
Laboratório I Mateus Raeder Material baseado nos originais da
Gerencia de Redes Redes de Computadores II
Teoria e Implementação de Linguagens Computacionais – IF688
Detalhes sobre o curso
Análises léxica e sintática
SableCC José Francisco Pereira Equipe de Monitores
Configuração do Ambiente de Desenvolvimento
Monitoria de Introdução a Programação Orientada a Objetos em Java
Análise léxica e sintática
Concorrência e Java RMI
Conceitos de J2EE para a WEB
XIV Jornada de Cursos .NET com C# Antônio Júnior Bruno Inojosa.
Aula 1 - Fundamentos Java SE Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros – Agosto/2009.
Semântica de Ações Especificação Completa de Specimen, Actress, Projeto RAT, Considerações Finais.
Paradigmas de Linguagens de Programação Aula 2
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
3/4/2015 Prof. Msc George Cabral Bacharelado em Sistema de Informação Ambientes de Desenvolvimento de Software.
Análises léxica e sintática
SISTEMAS OPERACIONAIS I
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Linguagens de Programação
Processadores de Linguagens
Java RMI João Gabriel (jggxm).
Módulo I Capítulo 1: Introdução ao curso
Geração de Código Equipe de Monitores Teoria e Implementação de Linguagens Computacionais – IF688.
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
Back-End Compilação aula-11-back-end.pdf.
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Flávia Falcão Java Performance Flávia Falcão
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Compiladores – IF688 Professor: André Santos
Java Disciplina: Programação II Professora: Mai-Ly Vanessa.
.NET Por: Pablo Diego vulgo “El Tigre”. O que é.NET? É uma plataforma de desenvolvimento. Com o.NET é possível de desenvolver vários tipos de aplicação.
Linguagem técnica de programação I Java
Programação em Java Prof. Edvan Chaves.
Influencias sobre o Projeto da Linguagem
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
LINGUAGEM DE PROGRAMAÇÃO I
Prof. Cristian Rodrigo Dalcico. Linguagem de Programação Java Aula 1.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
VIRTUALIZAÇÃO - INTRODUÇÃO Na área de TI; O que é sistema legado? É o termo utilizado em referência aos sistemas computacionais de uma organização que,
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Introdução à plataforma Java. 2 A tecnologia Java Java: linguagem de programação e plataforma de desenvolvimento Criada pela Sun Microsystems Apoiada.
Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Equipe de Monitores.
Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 José Francisco Pereira Jobson Ronan
Transcrição da apresentação:

Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva jrjs@cin.ufpe.br

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

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

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

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

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 ;)

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

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)

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

Exemplo Demonstração...

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

Referências Iniciais JVM CLR http://www.cin.ufpe.br/~if688/ppt/JVM-5.ppt http://mrl.nyu.edu/~meyer/jvm/jasmin.html CLR http://www.cin.ufpe.br/~if688/laboratorio/aula4/seminario.ppt John Gough, Compiling for the .NET Common Language Runtime

Geração de Código Teoria e Implementação de Linguagens Computacionais – IF688 Jobson Ronan Jeronimo da Silva jrjs@cin.ufpe.br