Geração de Código. Compiladores Cristina C. Vieira. Compiladores 2012/2013

Tamanho: px
Começar a partir da página:

Download "Geração de Código. Compiladores Cristina C. Vieira. Compiladores 2012/2013"

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. 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 mais

Compiladores. Motivação. Tradutores. Motivação. Tipos de Tradutores. Tipos de Tradutores

Compiladores. 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 mais

Otimização do código. Compiladores Cristina C. Vieira. Compiladores 2012/2013

Otimizaçã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 mais

Análise Semântica e Representação Intermédia

Aná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 mais

2. Relativamente ao datapath de ciclo único do MIPS podemos dizer que:

2. 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 mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 25. Instituto de C

Compiladores. 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 mais

Do alto-nível ao assembly

Do 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 mais

Apresentaçã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. !! 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 mais

TRABALHO Nº 4: Desenvolvimento de um Interpretador ou de um Compilador

TRABALHO 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 mais

Compiladores 02 Analise léxica

Compiladores 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 mais

Lembrando 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. 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 mais

Compiladores I Prof. Ricardo Santos (cap 1)

Compiladores 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 mais

Análise Semântica e Representação Intermédia

Aná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 mais

Compiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C

Compiladores. 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 mais

Linguagens de Programação Aula 3

Linguagens 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 mais

Universidade 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. 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 mais

COMPILAÇÃO. Ricardo José Cabeça de Souza

COMPILAÇÃ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 mais

Análise Semântica e Representação Intermédia

Aná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 mais

Compiladores. Fabio Mascarenhas

Compiladores. 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 mais

Conversõ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 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 mais

Análise Sintática Introdução

Aná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 mais

Conceitos de Linguagens de Programação

Conceitos 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 mais

FACULDADE ZACARIAS DE GÓES SISTEMAS DE INFORMAÇÃO ADRIEL ALMEIDA CAFÉ PROCESSO DE COMPILAÇÃO

FACULDADE 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 mais

Compiladores e Computabilidade

Compiladores 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 mais

FERRAMENTA 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 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 mais

Compilador de LP3 para C3E e P3

Compilador 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 mais

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

Conjunto 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 mais

Introdução à Programação

Introduçã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 mais

Faculdade de Computação

Faculdade 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 mais

Infraestrutura de Hardware. Desempenho

Infraestrutura 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 mais

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

AULA 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 mais

Aula 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++ 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 mais

Construçã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. 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 mais

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

PIPELINE. 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 mais

Infraestrutura 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 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 mais

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

a) 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 mais

Acadêmica: Giselle Mafra Schlosser Orientador: Everaldo Artur Grahl

Acadê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 mais

Aula 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++ 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 mais

II.1 Conceitos Fundamentais. Uma delas é programar o =>

II.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 mais

PARTE 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 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 mais

Procedimentos. Sistemas de Computação

Procedimentos. 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 mais

Faculdade de Computação

Faculdade 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 mais

Arquiteturas RISC e CISC. Adão de Melo Neto

Arquiteturas 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 mais

COMPUTADORES 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 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 mais

Compiladores. Análise Léxica

Compiladores. 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 mais

Aspectos do analisador sintático Usabilidade da Dias de atraso

Aspectos 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 mais

Noções de compilação

Noçõ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 mais

Noções de compilação

Noçõ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 mais

Expoente Mantissa Frac. UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Expoente 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 mais

Compiladores Aula 1. Celso Olivete Júnior.

Compiladores 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 mais

Sistemas Processadores e Periféricos Aula 2 - Revisão

Sistemas 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 mais

Compiladores II. Fabio Mascarenhas

Compiladores 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 mais

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 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 mais

MAB Análise Semântica. Monday, October 10, 11

MAB 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 mais

Faculdade de Computação

Faculdade 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 mais

Introduçã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 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 mais

1) 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. 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 mais

Estruturas de controlo condicional

Estruturas 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 mais

Compiladores Ambiente de Execução

Compiladores 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 mais

Ferramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25

Ferramenta 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 mais

O Funcionamento do Processador

O 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 mais

http://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 mais

ARQUITECTURA DE COMPUTADORES

ARQUITECTURA 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 mais

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

Infraestrutura 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 mais

Compiladores. Análise Léxica

Compiladores. 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 mais

Prof. Eliezer Soares Flores 1 / 22

Prof. 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 mais

Compiladores Ambiente de Execução

Compiladores 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 mais

Organização e Arquitetura de Computadores I

Organizaçã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 mais

Compiladores. Geração de Código Objeto

Compiladores. 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 mais

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introduçã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 mais

Compiladores Geração de Código

Compiladores 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 mais

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO II Campus Rio Pomba

Concurso 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 mais

Infraestrutura de Hardware. Instruindo um Computador

Infraestrutura 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 mais

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Infraestrutura 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 mais

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

a) 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 mais

Capítulo 6: Linguagens de Programação

Capí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 mais

Introdução parte II. Compiladores. Mariella Berger

Introduçã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 mais

Situaçã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

Situaçã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 mais

Introduçã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 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 mais

Linguagens e a máquina

Linguagens 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 mais

Testes em Haskell com a framework HUnit 1.0

Testes 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 mais

Compiladores. Introdução à Compiladores

Compiladores. 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 mais

Compiladores. Análise lexical. Plano da aula. Motivação para análise lexical. Vocabulário básico. Estrutura de um compilador

Compiladores. 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 mais

Infra- Estrutura de Hardware

Infra- 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 mais

TEÓRICA. lb $t0, 1($t1)

TEÓ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 mais

Compiladores 04 Analise léxica Jflex. Prof José Rui

Compiladores 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 mais

Introdução a Ciência da Computação

Introduçã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 mais

Prof. Adriano Maranhão COMPILADORES

Prof. 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 mais

Conteúdo. Introdução a compiladores Tradução x Interpretação Processo de Compilação

Conteú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 mais

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Prof. 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 mais

Compiladores. Introdução

Compiladores. 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 mais

Geração de Código Cap. 8

Geraçã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 mais

Programação Orientada a Objetos

Programaçã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 mais

Procedimentos e Gestão de Subrotinas

Procedimentos 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 mais

Desenvolvimento de programas em UNIX

Desenvolvimento 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 mais

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

Um 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 mais

Professor Leo Larback Esta apresentação pode ser baixada livremente no site

Professor 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