Geração de Código. Compiladores Cristina C. Vieira. Compiladores 2012/2013
|
|
- João Pedro Sanches Bergler
- 5 Há anos
- Visualizações:
Transcrição
1 Geração de Código Compiladores Cristina C. Vieira 1
2 Problema Dada a representação intermédia de como gerar o código assembly? Não otimizado: Variáveis locais e parâmetros todos afetados a posições relativas e distintas na pilha Otimizado: Partilha de posições relativas da pilha por uma ou mais variáveis Utilização de registos do banco de registos da UP para armazenar variáveis... 2
3 Programa (cadeia de caracteres) Lexical Analyzer (Scanner) Cadeia de Tokens Syntax Analyzer (Parser) Árvore sintáctica Semantic Analyzer Representação intermédia Code Optimizer Representação intermédia optimizada Code Generator Código Assembly 3
4 y2=axxbxc; stl y2 alto nível ldl c ldl a ldl x ldl x ldl x ldl b 4
5 y2=axxbxc; Variáveis: A stl y2 ldl c alto nível B X C ldl a Y2 ldl x ldl x ldl x ldl b 5
6 y2=axxbxc; Variáveis (posição relativa a $) A: 0 B: 4 X: 8 C: 12 Y2: 16 6
7 y2=axxbxc; Começar nas folhas: lw $t0, 4($) <$t0> 7
8 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) <$t1> <$t0> 8
9 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 <$t2> <$t1> <$t0> 9
10 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) <$t3> <$t2> 10
11 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) <$t3> <$t4> <$t2> 11
12 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 12 <$t3> <$t5> <$t4> <$t2>
13 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) 13 <$t5> <$t6> <$t2>
14 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) mult $t7, $t5, $t6 14 <$t5> <$t7> <$t6> <$t2>
15 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) mult $t7, $t5, $t6 Add $t8, $t7, $t2 15 <$t7> <$t8> <$t2>
16 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) mult $t7, $t5, $t6 Add $t8, $t7, $t2 lw $t9, 12($) 16 <$t8> <$t9>
17 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) mult $t7, $t5, $t6 Add $t8, $t7, $t2 lw $t9, 12($) Add $t10, $t8, $t9 17 <$t8> <$t10> <$t9>
18 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) mult $t7, $t5, $t6 Add $t8, $t7, $t2 lw $t9, 12($) Add $t10, $t8, $t9 Sw $t10, 16($) 18 <$t10>
19 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t2, $t1, $t0 lw $t3, 8($) lw $t4, 8($) mult $t5, $t3, $t4 lw $t6, 0($) mult $t7, $t5, $t6 add $t8, $t7, $t2 lw $t9, 12($) add $t10, $t8, $t9 sw $t10, 16($) registos $t para armazenar valores intermédios! (MIPS tem 10 registos $t)
20 y2=axxbxc; Solução utilizando menos registos para armazenar resultados intermédios? 20
21 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t?, $t1, $t0 Resultado pode ser armazenado em $t1 ou em $t0 21 <$t?> <$t1> <$t0>
22 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t0, $t1, $t0 <$t0> <$t1> <$t0> 22
23 y2=axxbxc; lw $t0, 4($) lw $t1, 8($) mult $t0, $t1, $t0 lw $t1, 8($) lw $t2, 8($) mult $t1, $t1, $t2 lw $t2, 0($) mult $t1, $t1, $t2 add $t0, $t1, $t0 lw $t1, 12($) add $t0, $t0, $t1 sw $t0, 16($) 23 3 registos $t para armazenar valores intermédios <$t1> <$t1> <$t1> <$t2> <$t2> <$t0> <$t0> <$t0> <$t1> <$t1> <$t0>
24 Não optimizado Acessos à pilha requerem mais ciclos do que acessos a registos internos Utilização da pilha para todas as variáveis requer mais instruções 24
25 Geração de código Utilização de esqueletos (templates) para geração de código assembly para Estruturas If-then ou if-then-else Loops 25
26 Geração de código if (test) true_body else false_body <do the test> boper, lab_true <false_body> j lab_end lab_true: <true_body> lab_end: 26
27 Geração de código while (test) body lab_cont: <do the test> boper, lab_body j lab_end lab_body: <body> j lab_cont lab_end: Esqueleto optimizado: 27 lab_cont: <do the test> boper, lab_end <body> j lab_cont lab_end:
28 Linhas mestras para o gerador de código Descer o nível de abstracção devagar: Utilizar várias etapas Mesmo que apenas se faça uma coisa por cada etapa Mais fácil de depurar, mais fácil de lidar com o problema Manter o nível de abstracção consistente ve manter a semântica correcta sempre! Pode ser necessário realizar optimizações entre etapas Utilizar assertions (assertividades) deliberadamente Utilizar uma assertion para verificar um pressuposto Ajudam a encontrar bugs! 28
29 Linhas mestras para o gerador de código Começar com geração simples, mesmo que naïf Ok gerar: 0 1x 0y A biblioteca de runtime é nossa amiga! Não tentar gerar código assembly quando existem rotinas na biblioteca com a mesma funcionalidade Exemplo: malloc 29
30 Linhas mestras para o gerador de código Lembrar que as otimizações vêm depois O optimizador realiza as otimizações Pensar o que o optimizador necessita e estruturar o código de acordo com isso Exemplo: alocação de registos, simplificações algébricas, propagação de constantes Utilizar uma boa infraestrutura de teste Teste regressivo Se um programa cria um bug adicioná-lo ao teste suite Utilizar makefiles: para executar o compilador sobre o teste suite e verificar automaticamente se os resultados estão corretos (pode implicar a utilização de um simulador da arquitetura) Ver teste em Engenharia de Software 30
31 TPC Gerar o código MIPS para as instruções seguintes: while (i < j) { x = x2; i = i1; } if (x < y) z = x; else z = 0; 31
Análise Sintática. Compiladores Cristina C. Vieira. Compiladores 2012/2013
Análise Sintática Compiladores Cristina C. Vieira 1 Árvore Sintática Nós internos: símbolos não-terminais Folhas: símbolos terminais Arcos: de símbolos não-terminais do LHS da produção para nós do RHS
Leia maisCompiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores
Motivação Prof. Sérgio Faustino Compiladores Conhecimento das estruturas e algoritmos usados na implementação de linguagens: noções importantes sobre uso de memória, eficiência, etc. Aplicabilidade freqüente
Leia maisOtimização do código. Compiladores Cristina C. Vieira. Compiladores 2012/2013
Otimização do código Compiladores Cristina C. Vieira 1 Otimizações Idealmente, o compilador deveria gerar código eficiente Mas o compilador mapeia as AST para a linguagem assembly Geralmente, existe uma
Leia maisAnálise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo do then e nó
Leia mais2. Relativamente ao datapath de ciclo único do MIPS podemos dizer que:
Preencher na correcção 1: 2: 3: 4: 5: 6: 7: 8: F: Estas questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma das respostas está correcta,
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 25. Instituto de C
ompiladores Geração de ódigo Bruno Lopes Bruno Lopes ompiladores 1 / 25 Abstração de máquinas de pilha Usa uma pilha para operandos e resultados intermediários Não considera variáveis ou registradores
Leia maisDo alto-nível ao assembly
Do alto-nível ao assembly Compiladores Cristina C. Vieira 1 Viagem Como são implementadas as estruturas computacionais em assembly? Revisão dos conceitos relacionados com a programação em assembly para
Leia maisApresentação. !! Familiarização com os métodos de construção de compiladores de linguagens e com as técnicas de compilação mais habituais.
Apresentação Universidade dos Açores Departamento de Matemática www.uac.pt/~hguerra/!! Aquisição de conceitos sobre a definição de linguagens de programação.!! Familiarização com os métodos de construção
Leia maisTRABALHO Nº 4: Desenvolvimento de um Interpretador ou de um Compilador
TRABALHO Nº 4: Desenvolvimento de um Interpretador ou de um Compilador A. Interpretador da Linguagem UAlg+ Pretende-se implementar um interpretador para uma linguagem de programação muito simples, designada
Leia maisCompiladores 02 Analise léxica
Compiladores 02 Analise léxica Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos Relembrando O compilador é dividido em duas etapas Análise Síntese Análise
Leia maisLembrando análise semântica. Compiladores. Implementação de esquemas de tradução L-atribuídos. Exemplo de implementação top-down (1)
Lembrando análise semântica Compiladores Geração de código intermediário (1) Parser Bottom-up: squema S-atribuído sem problema Apenas atributos sintetizados squema L-atribuído: ok, mas deve-se usar variáveis
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisAnálise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Descritores O que contêm? Informação utilizada para geração de código e análise semântica Descritores locais - nome, tipo,
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C
ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens
Leia maisLinguagens de Programação Aula 3
Aula 3 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada... Classificação das LPs (nível, geração e paradigma) Paradigmas Imperativo, OO, funcional, lógico e concorrente 2/33 Na aula de hoje...
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisAnálise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia Compiladores, Aula Nº 22 João M. P. Cardoso 1 Representação do fluxo de controlo Nós de enunciados Nó if Árvore de expressão para a condição Nó para o corpo
Leia maisCompiladores. Fabio Mascarenhas
Compiladores Fabio Mascarenhas 2017.1 http://www.dcc.ufrj.br/~fabiom/comp Introdução Compiladores x Interpretadores Offline x Online Um compilador transforma um programa executável de uma linguagem fonte
Leia maisConversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação
Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada
Leia maisAnálise Sintática Introdução
Análise Sintática Introdução Renato Ferreira Linguagens e Automatas Linguagens formais são importantes em Computação Especialmente em linguagens de programação Linguagens regulares A linguagem formal mais
Leia maisConceitos de Linguagens de Programação
Conceitos de Linguagens de Programação Aula 03 Processo de Compilação Edirlei Soares de Lima Métodos de Implementação Arquitetura de Von Neumann: A linguagem de máquina de um computador
Leia maisFACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO
0 FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO Valença Bahia Novembro 2010 1 ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO Trabalho apresentado como requisito
Leia maisCompiladores e Computabilidade
Compiladores e Computabilidade Prof. Leandro C. Fernandes UNIP Universidade Paulista, 2013 GERAÇÃO DE CÓDIGO INTERMEDIÁRIO Geração de Código Intermediário Corresponde a 1ª etapa do processo de Síntese
Leia maisFERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS
FERRAMENTA DE AUXÍLIO AO PROCESSO DE DESENVOLVIMENTO DE SOFTWARE INTEGRANDO TECNOLOGIAS OTIMIZADORAS Acadêmico: Roger Anderson Schmidt Orientador : Marcel Hugo Supervisor : Ricardo de Freitas Becker Empresa
Leia maisCompilador de LP3 para C3E e P3
Compilador de LP3 para C3E e P3 Luís Gil 1 13 de Junho de 2005 1 estudante de Ciências Informáticas no Instituto Superior Técnico 1 Introdução Este relatório descreve a sintaxe e a semântica da Linguagem
Leia maisConjunto de Instruções. Prof. Leonardo Barreto Campos 1
Conjunto de Instruções Prof. Leonardo Barreto Campos 1 Sumário Introdução; CISC; RISC; MIPS; Representação de Instruções; SPIM; Prof. Leonardo Barreto Campos 2/58 Sumário Operações Lógicas; Instruções
Leia maisIntrodução à Programação
Introdução à Programação Linguagens de Programação: sintaxe e semântica de linguagens de programação e conceitos de linguagens interpretadas e compiladas Engenharia da Computação Professor: Críston Pereira
Leia maisFaculdade de Computação
Faculdade de Computação Arquitetura e Organização de Computadores 2 1 a Laboratório de Programação MIPS entrega 03/05/2018 Prof. Cláudio C. Rodrigues Problemas: P1) Execute as conversões abaixo: a) Converta
Leia maisInfraestrutura de Hardware. Desempenho
Infraestrutura de Hardware Desempenho Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface entre
Leia maisAULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto
Leia maisAula 01 Algoritmos e lógica de programação e introdução ao C++
Aula 01 Algoritmos e lógica de programação e introdução ao C++ Autor: José Martins de Castro Neto Carga Horária: 2h 21 de julho de 2015 1 Algoritmo e lógica de programação Ementa do curso 1. Definições
Leia maisConstrução de Compiladores. Capítulo 1. Introdução. José Romildo Malaquias. Departamento de Computação Universidade Federal de Ouro Preto 2014.
Construção de Compiladores Capítulo 1 Introdução José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2014.2 1/22 1 Linguagens de programação 2 Compilação 2/22 Tópicos 1
Leia maisPIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações
Arquitetura de Computadores Introdução ao Pipeline PIPELINE Linha de Montagem A produção é dividida em várias etapas Produtos em etapas distintas podem ser desenvolvidos separadamente Pode ser Aplicado
Leia maisInfraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento
Infraestrutura de Hardware Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de
Leia maisa) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 1. Um programa P foi compilado com um compilador
Leia maisAcadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl
AVALIAÇÃO DA QUALIDADE DO CÓDIGO FONTE ESCRITO EM PL/SQL Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl Roteiro Introdução Objetivos do trabalho Fundamentação teórica Desenvolvimento
Leia maisAula 01 Algoritmos e lógica de programação e introdução ao C++
Aula 01 Algoritmos e lógica de programação e introdução ao C++ Autor: Max Rodrigues Marques Carga Horária: 2h 21 de julho de 2015 1 Algoritmo e lógica de programação Ementa do curso 1. Definições de algoritmo
Leia maisII.1 Conceitos Fundamentais. Uma delas é programar o =>
II.1 Conceitos Fundamentais II.2 Gerações das Linguagens de Programação II.3 Linguagem de Programação II.4 Sistema Operacional II.5 Tradutores II.5.1 Estrutura de um tradutor II.5.1.1 Análise Léxica II.5.1.3
Leia maisPARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n
Leia maisProcedimentos. Sistemas de Computação
Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem
Leia maisFaculdade de Computação
Faculdade de Computação Arquitetura e Organização de Computadores 1 Prática 2 entrega 10/05/2019 Prof. Cláudio C. Rodrigues Programando a Arquitetura MIPS P1) Traduza os códigos de máquina a seguir para
Leia maisArquiteturas RISC e CISC. Adão de Melo Neto
Arquiteturas RISC e CISC Adão de Melo Neto 1 Arquitetura RISC Arquitetura RISC. É um das inovações mais importantes e interessantes. RISC significa uma arquitetura com um conjunto reduzido de instruções
Leia maisCOMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto
COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais
Leia maisCompiladores. Análise Léxica
Compiladores Análise Léxica Regras Léxicas Especificam o conjunto de caracteres que constituem o alfabeto da linguagem, bem como a maneira que eles podem ser combinados; Exemplo Pascal: letras maiúsculas
Leia maisAspectos do analisador sintático Usabilidade da Dias de atraso
Aspectos do analisador sintático Usabilidade da Dias de atraso Grupo Interface Modularidade e Doc. Interna Doc. Externa Erros léxicos Cada teste vale (0.5) Total = (7,0) Nota Final fluxo de dados (0.5)
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Compilação: por que estudar? (parte 1) Compiladores:
Leia maisNoções de compilação
Noções de compilação Compilador: o que é, para que serve e estrutura geral Parentes do compilador e programas correlatos Prof. Thiago A. S. Pardo 1 Exercício em duplas Para esquentar... 2 1 Compilação:
Leia maisExpoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 Data de entrega 16/09/2016 por e-mail (simone@ic.uff.br)
Leia maisCompiladores Aula 1. Celso Olivete Júnior.
Aula 1 Celso Olivete Júnior olivete@fct.unesp.br Tópicos da disciplina Introdução à compilação Analisador léxico Analisador sintático descendente Analisador sintático ascendente Análise semântica Geração
Leia maisSistemas Processadores e Periféricos Aula 2 - Revisão
Sistemas Processadores e Periféricos Aula 2 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão
Leia maisCompiladores II. Fabio Mascarenhas
Compiladores II Fabio Mascarenhas 2018.1 http://www.dcc.ufrj.br/~fabiom/comp2 Máquinas Virtuais Uma máquina virtual é uma técnica de implementação de linguagens de programação que é um meio termo entre
Leia maisUNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 - Gabarito 1. Um programa P foi compilado com
Leia maisMAB Análise Semântica. Monday, October 10, 11
MAB 471 2011.2 Análise Semântica http://www.dcc.ufrj.br/~fabiom/comp Além da Sintaxe Há um nível de corretude além da gramática foo(a,b,c,d) { int a, b, c, d; bar() { int f[3],g[0], h, i, j, k; char *p;
Leia maisFaculdade de Computação
Problemas: Faculdade de Computação Arquitetura e Organização de Computadores 2 1 a Laboratório de Programação MIPS entrega 18/04/2016 Prof. Cláudio C. Rodrigues P1) Considere que você é um projetista da
Leia maisIntrodução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 04 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL LINGUAGEM IREMOS ESTUDAR? 2 Introdução à Programação Linguagens
Leia mais1) Considere a situação atual da memória do sistema computacional abaixo discriminada.
1) Considere a situação atual da memória do sistema computacional abaixo discriminada. a) Encontre o resultado da instrução com 01 ENDEREÇO abaixo discriminada que será armazenada em registrador ACUMULADOR.
Leia maisEstruturas de controlo condicional
4 Estruturas de controlo condicional Would you tell me, please, which way I ought to go from here? That depends a good deal on where you want to get to. said the Cat. I don't much care where said Alice.
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisFerramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25
Universidade Federal do Rio Grande do Sul Escola de Engenharia - Instituto de Informática Graduação em Engenharia de Computação Ferramenta para Desenvolvimento de Sistemas Embarcados Utilizando Linguagem
Leia maisO Funcionamento do Processador
O Funcionamento do Processador Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Os cinco componentes clássicos de um Computador - Controle O
Leia maishttp://www.ic.uff.br/~debora/fac! 1 Conceito de família IBM System/360 1964 DEC PDP-8 Separa arquitetura de implementação Unidade de controle microprogramada Idéia de Wilkes 1951 Produzida pela IBM S/360
Leia maisARQUITECTURA DE COMPUTADORES
ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA III Março 2014 Índice Instruction Set Revisões Procedimentos Stack Comunicar com pessoas ASCII Programar em MIPS estrutura, input e output Programar em MIPS
Leia maisInfraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW
Infraestrutura de Hardware Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem
Leia maisCompiladores. Análise Léxica
Compiladores Análise Léxica Cristiano Lehrer, M.Sc. Introdução (1/3) Análise léxica é a primeira fase do compilador. A função do analisador léxico, também denominado scanner, é: Fazer a leitura do programa
Leia maisProf. Eliezer Soares Flores 1 / 22
Memórias Prof. Eliezer Soares Flores e-mail: eliezerflores@unipampa.edu.br 1 / 22 Sistemas computacionais Hardware: parte física de um sistema computacional; Software: parte lógica de um sistema computacional.
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre
Leia maisCompiladores. Geração de Código Objeto
Compiladores Geração de Código Objeto Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Leia maisIntrodução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Aula 03 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação Linguagens de Programação A primeira linguagem de programação foi criada por Ada Lovelace. Amiga
Leia maisCompiladores Geração de Código
Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisConcurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba
Questão 01 No processo de construção de compiladores, é essencial compreender e manipular as expressões regulares e suas equivalências. Dentro desse contexto, seja o alfabeto = {a, b, c, d, e} e a seguinte
Leia maisInfraestrutura de Hardware. Instruindo um Computador
Infraestrutura de Hardware Instruindo um Computador Componentes de um Computador Unid. Controle Controle Memória Registradores PC MAR IR AC Programa + Dados Instrução Endereço Operando ALU Temp Datapath
Leia maisInfraestrutura de Hardware. Implementação Multiciclo de um Processador Simples
Infraestrutura de Hardware Implementação Multiciclo de um Processador Simples Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e
Leia maisa) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 - Gabarito 1. Um programa P foi compilado com
Leia maisCapítulo 6: Linguagens de Programação
Capítulo 6: Linguagens de Programação Ciência da Computação: Uma Visão Abrangente 11a Edição by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Capítulo 6: Linguagens de programação 6.1 Perspectiva
Leia maisIntrodução parte II. Compiladores. Mariella Berger
Introdução parte II Compiladores Mariella Berger Sumário Partes de um compilador Gerador da Tabela de Símbolos Detecção de erros As fases da análise As fases de um compilador Montadores O que é um Compilador?
Leia maisSituação. Geração de Código. Renato Ferreira. Encerramos a parte de Front- End. Back- End. Análise Léxica Análise SintáFca Análise SemânFca
Geração de Código Renato Ferreira Situação Encerramos a parte de Front- End Análise Léxica Análise SintáFca Análise SemânFca Back- End OFmização Geração de Código 1 Ambiente de Execução Antes de discufr
Leia maisIntrodução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação
Introdução à Programação Aula 04 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL LINGUAGEM IREMOS ESTUDAR? 2 Introdução à Programação Linguagens
Leia maisLinguagens e a máquina
Linguagens e a máquina Seguem algumas breves definições das etapas utilizadas na geração de programas a partir de linguagens de programação: 1. A compilação pode ser entendida como o processo de traduzir
Leia maisTestes em Haskell com a framework HUnit 1.0
Teste de programas em Haskell com a framework HUnit 1.0 Pedro Strecht Mestrado em Engenharia Informática 3 de Maio de 2005 1 Testes em Haskell com HUnit 1.0 Breve introdução à linguagem Haskell Apresentação
Leia maisCompiladores. Introdução à Compiladores
Compiladores Introdução à Compiladores Cristiano Lehrer, M.Sc. Introdução (1/2) O meio mais eficaz de comunicação entre pessoas é a linguagem (língua ou idioma). Na programação de computadores, uma linguagem
Leia maisCompiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador
Estrutura de um compilador programa fonte Compiladores Análise lexical () Expressões Regulares analisador léxico analisador sintático analisador semântico análise gerador de código intermediário otimizador
Leia maisInfra- Estrutura de Hardware
Infra- Estrutura de Hardware Conceitos Básicos de Arquitetura de Computadores Universidade Federal Rural de Pernambuco Professor: Abner Corrêa Barros Computador: Hardware + So=ware Computador: Hardware
Leia maisTEÓRICA. lb $t0, 1($t1)
T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma das respostas está correcta, valendo 1
Leia maisCompiladores 04 Analise léxica Jflex. Prof José Rui
Compiladores 04 Analise léxica Jflex Prof José Rui Sumário Análise Léxica Definição: Lexema, tokens Tabela símbolos Expressões regulares, automatos JFlex Análise léxica Exemplo Soma = a + b * 40;
Leia maisIntrodução a Ciência da Computação
Ministério da Educação Universidade Tecnológica Federal do Paraná Câmpus Santa Helena Introdução a Ciência da Computação Bacharelado em Ciência da Computação Professor : Agnaldo da Costa 1 Camadas do Usuário
Leia maisProf. Adriano Maranhão COMPILADORES
Prof. Adriano Maranhão COMPILADORES LINGUAGENS: INTERPRETADAS X COMPILADAS Resumo: Linguagem compilada: Se o método utilizado traduz todo o texto do programa, para só depois executar o programa, então
Leia maisConteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação
Compiladores Conteúdo Introdução a compiladores Tradução x Interpretação Processo de Compilação Quando se inventou o computador criou se uma máquina a mais, quando se criou o compilador criou se uma nova
Leia maisProf. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO
Linguagem de Montagem Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO 1 Introdução Independente da linguagem de programação utilizada, todo programa
Leia maisCompiladores. Introdução
Compiladores Introdução Apresentação Turma Noite Continuada I 20/03 Continuada II 22/05 Atividades Regimental 05/06 Total 1 Ponto 1 Ponto 1 Ponto 7 Pontos 10 Pontos Aulas expositivas teórico-práticas Exercícios
Leia maisGeração de Código Cap. 8
Geração de Código Cap. 8 Introdução Fase final para um compilador Entrada é uma representação intermediária do código fonte e a saída é um programa para ser executado em uma máquina alvo O programa para
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Classes e Objetos Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Lembrando Na Unidade II Modelagem Orientada a Objetos, vimos: Como utilizar
Leia maisProcedimentos e Gestão de Subrotinas
5 Procedimentos e Gestão de Subrotinas Wait a minute, Doc. Are you telling me you built a time machine out of a DeLorean? Marty McFly para o Dr. Brown no filme de 1985, Back to the future O desenho de
Leia maisDesenvolvimento de programas em UNIX
4 Desenvolvimento de programas em UNIX Sumário: Fases de desenvolvimento de programas Compiladores Ficheiros em código objecto (.o) Visualização de símbolos dum ficheiro objecto (nm) Unificadores (linkers)
Leia maisUm algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.
Programação Um programa é uma sequência de instruções de uma linguagem de programação (VB no nosso caso). Cada instrução representa uma qualquer acção que nós pretendemos ver executada. Programar consiste
Leia maisProfessor Leo Larback Esta apresentação pode ser baixada livremente no site
C# Professor Leo Larback Esta apresentação pode ser baixada livremente no site www.larback.com.br C# - Definições C# é uma linguagem orientada a objeto que permite aos desenvolvedores construírem uma variedade
Leia mais