CAP. VII GERAÇÃO DE CÓDIGO
|
|
- Lúcia Ximenes Silva
- 6 Há anos
- Visualizações:
Transcrição
1 CAP. VII GERAÇÃO DE CÓDIGO VII. 1 - INTRODUÇÃO Léxica Análise Sintática Semântica Compilação G.C. intermediário Síntese Otimização de código Geração de código Síntese Tradução do programa fonte (léxica, sintática e semanticamente correto) para um programa objeto equivalente. Estabelecimento de um significado (uma semântica) para o programa fonte, em termos de um código executável (diretamente ou via interpretação). 1
2 Esquema de tradução dirigida pela sintaxe Geração de cód. Interm. ou executável. Uso de ações de geração de código Similares às ações semânticas Inseridas na G.L.C. Ativadas pelo Parser ou A. Semântico pode ser integrado ao semântico Generalizando: Ações semânticas Ações de verificação Ações de geração de código Na prática... Unificação de ações de Verificação semântica e de Geração de Código 2
3 CÓD. INTERMEDIÁRIO X CÓD. BAIXO NÍVEL MÁQUINA HIPOTÉTICA X MÁQUINA REAL VII.2 - CÓDIGO INTERMEDIÁRIO Representação intermediária entre o programa fonte (L. alto nível) e o programa objeto (L. baixo nível). Vantagens Geração menos complexa Abstração de detalhes da máquina real Repertório de instruções definido em função das construções da linguagem fonte Facilidades para geração de código executável em um passo subseqüente Representação uniforme Facilita otimização Redução do tempo de execução e/ou do tamanho do código gerado 3
4 Possibilita interpretação Aumento da portabilidade Diferentes interpretadores ou geradores de código para diferentes máquinas Base necessária para construção de Just-in-time Compilers Exemplos: máquina P (Pascal) JVM (Java) Facilita extensibilidade Via introdução de novas construções Via sofisticação do ambiente operacional Desvantagens Acréscimo do tempo de compilação Passo extra para geração de código objeto a partir do código intermediário. Aumento do projeto total Necessidade de definição de uma Linguagem intermediária. Necessidade de definição de uma máquina hipotética Necessidade de um interpretador para validação do código intermediário Quando o C.I. é o código alvo... Tempo de execução (via interpretação) maior se comparado com cód. compilado. 4
5 Formas de código intermediário 1. Triplas e Quádruplas Instruções Operador Operando 1, operando 2, [resultado] Operadores Aritméticos, lógicos, armaz., desvio, carga,... Exemplos: Triplas : w * x + (y +z) (1) *, w, x (2) +, y, z (3) +, (1), (2) Quádruplas: (A + B) * (C + D) E +, A, B, T 1 +, C, D, T 2 *, T 1, T 2, T 3 -, T 3, E, T 4 OBS.: 1. Quádruplas facilitam a otimização de código 2. Algoritmos de otimização clássicos (AHO e ULLMAN) são todos baseados em quádruplas. 3. Gerenciamento de temporárias é problemático 5
6 2. - Máquinas de PILHA (de Acumulador, ou de um Operando) O código é similar a um assembler simplificado Usa registradores apenas para funções especiais Usa uma PILHA para armazenar valores de Variáveis (globais e locais) e Resultado das operações realizadas. Formato das Instruções o Operador (Código da operação) o Operando o qual pode ser: referência a uma variável valor constante endereço de uma instrução Exemplo: D := A + B * C Usando Endereço Relativo 1 - LOAD A 4 - MULT LOAD B 5 - SOMA LOAD C 6 - ARMZ D Variável Nível Deslocamento LOAD 1,0 A 1 0 LOAD 1,1 B 1 1 LOAD 1,2 C 1 2 MULT -,- D 1 3 SOMA -,- ARMZ 1,3 3. Outras formas de CI Notação Polonesa, Árvores Sintáticas Abstratas 6
7 VII.3 - Máquinas Hipotéticas (virtuais, abstratas) Destinam-se a produção de compiladores e interpretadores + Portáveis e + Adaptáveis Composição Arquitetura Área de código Área de dados (pilha) Registradores o Uso geral o Uso específico Repertório de instruções Cjto de instruções que compõem a Ling. de máquina da MÁQUINA VIRTUAL Formato das instruções Dependente da arquitetura Pode ou não ser uniforme Ex: OP, operando OP, operando1, operando2[, operando3] Interpretador Simula o Hardware na execução do código da máquina Exemplos Máquina P (Pascal) JVM (Java) 7
8 VII.4 - UMA MÁQUINA HIPOTÉTICA DIDÁTICA OBJETIVOS: Dar uma visão completa do processo de compilação. Dar uma noção do processo de geração de código. Permitir a interpretação de programas exemplos Validar ações semânticas De verificação De geração de código 8
9 Definição da Arquitetura (* Baseada na máquina P, simplificada *) Área de instruções Contém as instruções a serem executadas Área de dados Alocação de dados manipulados pelas inst. Estrutura de pilha Cada célula ( ) 1 palavra (inteira) valores de constantes Contem: valores assumidos por var. ponteiro para estruturas resultados intermediários Registradores de uso específico PC Program Counter - aponta para a próxima instrução a ser executada (área de instruções) Topo Aponta para o topo da pilha usada como área de dados Base Aponta para o endereço (pos. na pilha) inicial de um segmento de dados Usado no cálculo de endereços (endereço = base (nível) + deslocamento) 9
10 Definição do repertório de instruções Definição do código intermediário Forma geral das instruções OPERADOR OPERANDO OPERADOR - código da instrução (mnemônico) OPERANDO - subdividido em PARTE1 e PARTE2 O significado depende da instrução - Exemplos: 1 Instruções que referenciam endereços: PARTE1 Nível PARTE2 Deslocamento 2 Instruções aritméticas PARTE1 e PARTE2 sem valor (Operam sobre topo/sub-topo da pilha) 3 Instruções de desvio PARTE1 sem valor PARTE2 Endereço de uma Instrução Grupos de instruções Aritméticas, lógicas e relacionais Carga/armazenamento Alocação de espaço para variáveis Fluxo o Desvios o Chamada / retorno de proc (método) Leitura, impressão Específicas Inicio e Fim de execução Nada (nop) 10
11 Instruções de carga e armazenamento CRVL l, a (* carrega valor de variável *) onde: l nível; a deslocamento Topo: = * + 1 Pilha [topo] : = Pilha [base (l) + a] CRCT, K (* carrega constante *) onde K é o valor da constante Topo : = topo + 1 Pilha [topo] : = K ARMZ l, a (* armazena conteúdo do topo da pilha no endereço (l + a) da pilha *) pilha [base (l) + a] : = pilha [topo] topo : = topo 1 Instruções aritméticas SOMA, (* operação de adição *) pilha [topo 1] : = pilha [topo - 1] + pilha [topo] topo : = topo 1 SUB, (* operação de subtração *) MULT, (* operação de multiplicação *) DIV, (* operação de divisão *) MUN, (* Menos UNário muda sinal *) 11
12 Instruções lógicas CONJ, (* operação and E *) se pilha [topo 1] = 1 e pilha [topo] = 1 então pilha [topo 1] : = 1 (true) verdadeiro senão pilha [topo 1] : = ø (false) falso ; topo : = topo 1 DISJ, (* Operação OR ou *) Se pilha [topo 1] = 1 ou [pilha topo] = 1... idem CONJ... NEGA, (* Operação NOT Não *) Pilha [topo] : = 1 pilha [topo] Instruções relacionais CMIG, (* Compara igual = *) Se pilha [topo 1] = pilha [topo] Então pilha [topo 1] : = 1 (true) Senão pilha [topo 1] : = ø (false) Topo: = topo 1 CMDF, (* Compara diferente <> *) CMMA, (* Compara maior > *) CMME, (* Compara menor < *) CMEI, (* Compara menor igual <= *) CMAI, (* Compara maior igual >= *) 12
13 Instruções de desvio DSVS, a (* desvia sempre para a instrução a *) PC := a DSVF, a (*se falso, desvia para a *) se pilha [topo ] = 0 (* falso *) entao PC := a; topo := topo 1 CALL l, a (* chamada de método *) RETU, (* retorno de método *) Alocação de espaço AMEM, a (* aloca a posições de memória *) topo := topo + a Entada / Saída (* operam com valores e endereços do topo da pilha *) LEIA, (* lê valor numérico *) IMPR, (* imprime valor numérico *) IMPRLIT, (* imprime literal *) Instruções auxiliares INICIO, (* define inicio da execução *) NADA, (* nada faz! *) FIM, (* define término da execução *) 13
14 REPERTÓRIO DE INSTRUÇÕES DA MV INICIO, (* Inicio da interpretação *) AMEM, a (* Aloca a posições de memória *) DMEM, a (* Desaloca a posições de memória *) CRVL l, a (* Carrega Variável *) CVET l, a (* Carrega Variável indexada uni-dim. *) CRVLIND l, a (* Carrega Valor indiretamente*) CREN l, a (* Carrega Endereço *) CRCT, k (* Carrega constante *) ARMZ l, a (* Armazena em uma var. *) AVET l, a (* Armazena em uma var. indexada uni-dim.*) ARMZIND l, a (* Armazena de forma indireta *) SOMA, (* Adição *) SUB, (* Subtração *) MULT, (* Multiplicação *) DIV, (* / Divisão *) MUN, (* Menos Unário *) CONJ, (* And *) E DISJ, (* Or *) Ou NEGA, (* Not *) Não CMIG, (* = *) CMDF, (* <> *) CMMA, (* > *) CMME, (* < *) CMEI, (* <= *) CMAI, (* >= *) DSVS, a (* Desvia sempre *) DSVF, a (* Desvia se falso *) CALL l, a (* Chama método *) RETU, (* retorna de método *) LEIA, (* Lê valor *) IMPR, (* Imprime valor numérico*) IMPRLIT, (* Imprime literal *) NADA, (* Nada faz *) FIM, (* Finaliza execução *) 14
15 VII.5 - Geração de Código Intermediário 1. Alocação de espaço para as variáveis decl A, B, C : inteiro; AMEM -, 3 decl X,Y : vetor [10] de real; AMEM -, 20 decl nome: cadeia [30]; AMEM -, 1 decl I : intervalo ; AMEM -, 1 2. Comando de Leitura Leia ( A ) : LEIA -, - ARMZ A (* end. Relativo de A *) 3. Comando escreva Escreva ( total =, tot ) CRCT -, ind-tab-lit IMPRLIT -, - CRVL tot (* end. Relativo de tot *) IMPR -, - 4. Comando de atribuição Forma geral: VAR := EXPR ARMZ VAR Exemplo de um programa: decl A, B, C : inteiro; inicio leia (A, B); C := (A + B) * ( A B ) escreva ( resultado =, C); fim. CÓDIGO p/ EXPR 15
16 5. Comando enquanto-faca Forma geral: enquanto < E > faca < C > L1: NADA -, - <E> DSVF -, L2 <C> DSVS -, L1 L2: NADA -, - Exemplo:... I:= 1; enquanto I < N faça inicio escreva (I, I*I); I:= I + 1; Fim; 16
17 6. Comando se-entao / se-entao-senao 6.1 se-então Forma geral : se <E> entao <C> DSVF <E> -, L1 <C> L1: NADA -, - Exemplo : se A > B então MAIOR := A se-entao-senao Forma geral : se <E> entao <C1> senão <C2> <E> DSVF -, L1 <C1> DSVS -, L2 L1: <C2> L2: NADA -, - Exemplo : se A > B então MAIOR := A senão MAIOR := B 17
18 7. Comando repita-ate Forma geral : repita <C> ate <E> L1: NADA -, - <C> Exemplo : i:=0; repita inicio fim DSVF escreva (i); i := i + 1 ate i = 10; <E> -, L1 18
19 8. Estruturas de controle aninhadas Enquanto-faca Forma Geral: enquanto < E > faca < C > Pilha de controle PENQ [ TPE ] Ações de geração de código <C> ::= enquanto #w1 <E> #w2 faca <C> #w3 #w1 Gera instrução NADA, Guarda endereço da instr. NADA, em PENQ - TPE:= * +1 PENQ [TPE]:= PC #w2 Gera instrução DSVF,? Guarda endereço de DSVF em PENQ #w3 Completa DSVF do topo de PENQ com PC + 1 (próxima instrução) Decrementa TPE TPE:= * - 1 gera DSVS, PENQ [TPE] Decrementa TPE TPE:= * - 1 Exemplo:... I:= 1; enquanto I < N faca inicio K:= 1; enquanto K < M faca inicio escreva (I * K); K:= K + 1; fim; I:= I + 1; fim; 19
20 Se-entao-senao Forma Geral: se < E > entao < C1 > senao < C2> Pilha de controle PSE [ TPSE ] Ações de geração de código <C> ::= se <E> #Y1 entao <C> <else-parte> #Y3 <else-parte> ::= #Y2 senao <C> #Y1 - gera DSVF,? guarda endereço na PSE #Y2 - completa DSVF do topo de PSE com PC + 1; decrementa TPSE gera DSVS,? guarda endereço na PSE #Y3 - completa instrução do topo de PSEF PSE [TPSE]:= PC decrementa TPSE Exemplo: se A > B entao se A > C entao escreva (A) senão escreva (C) senão se B > C entao escreva (B) senao escreva (C); 20
21 Repita-ate forma geral: Repita <C> ate <E> (Pilha de controle PREP [ TPR ] ) Ações de geração de código <C> ::= repita #R1 <C> ate <E> #R2 #R1 empilha em PREP o end. da próx. instrução #R2 - Gera instrução DSVF, PREP[TPR] Desempilha o endereço armazenado em PREP Exemplo: i := 1; repita inicio j := 1; repita inicio escreva ( i * j ); j := j + 1 fim ate j > 10; i := i + 1 fim ate i > 10; 21
22 9. Constantes com Tipo Pilha CRCT, K CRCT 1, Ind.Tab.Literais CRCT 2, Ind.Tab.Reais 10. Variáveis Simples com Tipo Pilha Carga / Armazenamento CRVL l, a - CRVLX l, i i: Ind.Tab.Tipo_X ARMZ l, a ARMZX l, i nível deslocamento tipo nível Operações (Aritméticas, Lógicas, E/S) CMIG, CMIGX, x = tipo var CMIG X, SOMA, SOMAX, SOMA X, LEIA, LEIAX, LEIA X, IMPR, IMPR 1, (ou IMPLIT, ) IMPR 2, (ou IMPREAL, ) 22
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 maisMétodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados
Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de
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 maisCAP. VI ANÁLISE SEMÂNTICA
CAP. VI ANÁLISE SEMÂNTICA VI.1 Introdução Semântica SIGNIFICADO, SENTIDO LÓGICO, COERÊNCIA,... Diferença entre SINTAXE e SEMÂNTICA Sintaxe : descreve as estruturas de uma linguagem; Semântica : descreve
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Conjunto de Instruções Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Material do prof. Sílvio Fernandes - UFERSA
Leia maisArquitetura e Organização de Computadores
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Arquitetura e Organização de Computadores Conjunto de Instruções Prof. Sílvio Fernandes
Leia maisMétodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Leia maisARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA Prof. Dr. Daniel Caetano 2012-2 Objetivos Conhecer o processador Compreender os registradores
Leia maisConstrução de Compiladores Aula 5 - Variáveis
Construção de Compiladores Aula 5 - Variáveis Bruno Müller Junior Departamento de Informática UFPR 26 de Agosto de 2014 1 Declaração de Variáveis Escopo das Variáveis Exemplo de Programa Esquema Instruções
Leia maisProjeto de Compiladores
Projeto de Compiladores FIR Faculdade Integrada do Recife João Ferreira 26 e 27 de fevereiro de 2007 Agenda da Aula Revisão Linguagem de Programação Tradutores Compilador As Fases de Um Compilador Linguagem
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 maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisProcessadores para computação de alto desempenho
Processadores para computação de alto desempenho Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos Arquitetura do Conjunto de Instruções Tópicos a serem abordados: Métricas das
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 maisLinguagem de Montagem do NeanderX
Universidade Estácio de Sá Curso de Informática Arquitetura de Computadores Linguagem de Montagem do NeanderX 11.5.2006 Geração Programa Executável Linguagens de Programação As linguagens de programação
Leia maisPROGRAMAÇÃO I. Introdução
PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação
Leia maisWilliam Stallings Arquitetura e Organização de Computadores 8 a Edição
William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 10 Conjuntos de instruções: Características e funções slide 1 O que é um conjunto de instruções? A coleção completa de instruções
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Síntese. Prof. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Síntese Prof. geovanegriesang@unisc.br Data 18/11/2013 Análise sintática Parte 01 25/11/2013 Análise sintática Parte 02
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 maisAlgoritmos Computacionais
UNIDADE 1 Processador e instruções Memórias Dispositivos de Entrada e Saída Software ARQUITETURA BÁSICA UCP Unidade central de processamento MEM Memória E/S Dispositivos de entrada e saída UCP UNIDADE
Leia maisORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira
ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES Prof. Juliana Santiago Teixeira julianasteixeira@hotmail.com INTRODUÇÃO INTRODUÇÃO O processador é o componente vital do sistema de computação, responsável
Leia maisTÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Conjunto de Instruções Slide 1 Sumário Características de Instruções de Máquina Tipos de Operandos Tipos de Operações Linguagem de Montagem Slide 2 Características
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 maisEstruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011
Estruturas de Dados Aula 1: Introdução e conceitos básicos 28/02/2011 Web site http://www.inf.ufes.br/~pdcosta/ensino/ Profa. Patrícia Dockhorn Costa Email: pdcosta@inf.ufes.br Introdução O que são estruturas
Leia maisUniversidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Leia maisFerramentas Programação. UDESC - Prof. Juliano Maia 1
Ferramentas Programação UDESC - Prof. Juliano Maia 1 Índice Seção 1 Linguagens de Programação Seção 2 Interpretador Seção 3 Compilador / Linkeditor Seção 4 Ambientes de Desenvolvimento UDESC - Prof. Juliano
Leia maisPrimeiro Trabalho de POO Emulador para o Processador Winter
Primeiro Trabalho de POO Emulador para o Processador Winter Prof. Pedro Carlos da Silva Lara Entrega: 21/10/2014 1 Informações Gerais Winter é um processador hipotético especificado com fim puramente acadêmico.
Leia maisArquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)
Arquitetura de Computadores Professor: Vilson Heck Junior (Material: Douglas Juliani) Agenda Conceitos Componentes Funcionamento ou tarefas Otimização e desempenho Conceitos Componente de Hardware que
Leia maisNoções de algoritmos - Aula 1
Noções de algoritmos - Aula 1 Departamento de Física UFPel Definição de algoritmo Sequência ordenada e finita de operações para a realização de uma tarefa. Tarefa: Experimento de Física I. Passo 1: Reunir
Leia maisTodo processador é constituído de circuitos capazes de realizar algumas operações primitivas:
Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas: Somar e subtrair Mover um dado de um local de armazenamento para outro Transferir um dado para um dispositivo
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Linguagem de Montagem e Linguagem de Máquina Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Conceitos básicos Linguagem/código
Leia maisExpressões, Atribuições, Entrada e Saída. Givanaldo Rocha
Expressões, Atribuições, Entrada e Saída Givanaldo Rocha givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Expressões Expressão: em termos computacionais, está ligado ao conceito de
Leia maisINE5622 INTRODUÇÃO A COMPILADORES
INE5622 INTRODUÇÃO A COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer o processo de especificação e implementação de linguagens de programação, a partir do estudo dos conceitos, modelos, técnicas e
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 maisAula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU
Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito
Leia maisProcessador. Processador
Departamento de Ciência da Computação - UFF Processador Processador Prof. Prof.Marcos MarcosGuerine Guerine mguerine@ic.uff.br mguerine@ic.uff.br 1 Processador Organização básica de um computador: 2 Processador
Leia maisAlgoritmos. Prof. Jonatas Bastos Site:
Algoritmos Prof. Jonatas Bastos Email: jonatasfbastos@gmail.com Site: http://jonatasfbastos.wordpress.com/ 1 Dúvidas! p p p Como os computadores entendem os algoritmo? Os computadores não entendem os passos
Leia maisCapítulo 2 Operadores. A função scanf()
Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(
Leia maisProf. Leonardo Augusto Casillo
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 2 Estrutura de um processador Prof. Leonardo Augusto Casillo Arquitetura de Von Neumann: Conceito de programa armazenado; Dados
Leia maisCapítulo 7. Expressões e Sentenças de Atribuição
Capítulo 7 Expressões e Sentenças de Atribuição Introdução Expressões são os meios fundamentais de especificar computações em uma linguagem de programação Para entender a avaliação de expressões, é necessário
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 maisAula 4 Estruturas Condicionais
Departamento de Sistemas de Computação Universidade de São Paulo SSC 600 Introdução a Ciência de Computação I Aula 4 Estruturas Condicionais Seiji Isotani, Rafaela V. Rocha sisotani@icmc.usp.br rafaela.vilela@gmail.com
Leia maisIntrodução à Computação MAC0110
Introdução à Computação MAC0110 Prof. Dr. Paulo Miranda IME-USP Aula 2 Variáveis e Atribuições Memória Principal: Introdução Vimos que a CPU usa a memória principal para guardar as informações que estão
Leia maisFábio Rodrigues / Israel Lucania
Fábio Rodrigues / Israel Lucania Variável é um local na memória principal, isto é, um endereço que armazena um conteúdo. Em linguagem de alto nível nos é permitido dar nomes a esse endereço, facilitando
Leia maisComo construir um compilador utilizando ferramentas Java
Como construir um compilador utilizando ferramentas Java p. 1/2 Como construir um compilador utilizando ferramentas Java Aula 1 - Introdução Prof. Márcio Delamaro delamaro@icmc.usp.br Como construir um
Leia maisMAC2166 Introdução à Computação Aula 1 Como Funciona um Computador
MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador Kelly Rosa Braghetto DCC IME USP 25 de março de 2014 MAC2166 Introdução à Computação Aula 1 Como Funciona um Computador DCC IME USP 1
Leia maisTópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06
Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação COMO UM PROGRAMA ESCRITO
Leia maisAlgoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza
Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos
Leia maisSSC510 Arquitetura de Computadores 1ª AULA
SSC510 Arquitetura de Computadores 1ª AULA REVISÃO DE ORGANIZAÇÃO DE COMPUTADORES Arquitetura X Organização Arquitetura - Atributos de um Sistema Computacional como visto pelo programador, isto é a estrutura
Leia maisIntrodução à Computação: Máquinas Multiníveis
Introdução à Computação: Máquinas Multiníveis Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisConceitos Básicos Processador
Infra-Estrutura de Hardware Conceitos Básicos Processador Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Organização da CPU Execução das Instruções RISC x CISC Paralelismo
Leia maisCompiladores. Conceitos Básicos
Compiladores Conceitos Básicos Processadores de Linguagem De forma simples, um compilador é um programa que recebe como entrada um programa em uma linguagem de programação a linguagem fonte e o traduz
Leia maisOrganização de Sistemas de Computadores
Organização de Sistemas de Computadores Cap. 2 (Tanenbaum), Cap. 3 (Weber) 2.1 Processadores 1 CPU UC = buscar instruções na memória principal e determinar o seu tipo ULA = adição e AND Registradores =
Leia maisORGANIZAÇÃO DE COMPUTADORES
Organização de Computadores ORGANIZAÇÃO DE COMPUTADORES Curso: Tecnologia em Gestão da Tecnologia da Informação Ano: 2011 Instrução Precisam ser entendidas pelo processador Precisam ser decodificadas e
Leia maisSistemas Operacionais
Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads
Leia maisPORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA
PORTUGUÊS ESTRUTURADO: INTRODUÇÃO INTRODUÇÃO À PROGRAMAÇÃO PROF. ALEXANDRO DOS SANTOS SILVA SUMÁRIO Introdução Conceitos básicos Formato básico Tipos primitivos Variáveis Constantes Operadores Operações
Leia maisEXPRESSÕES ARITMÉTICAS PARTE 1
AULA 5 EXPRESSÕES ARITMÉTICAS PARTE 1 5.1 Operadores aritméticos Os operadores aritméticos definem as operações aritméticas que podem ser realizadas sobre os números inteiros e reais. Para os inteiros,
Leia maisLinguagem de Maquina II. Visão Geral
Linguagem de Maquina II Visão Geral Revisão A linguagem de máquina é composta de seqüências binárias (1's e 0's) São interpretadas como instruções pelo hardware A linguagem de montagem e a linguagem de
Leia maisLógica de Programação: aula 2. Dariel Mazzoni Maranhão. Uninove: Universidade Nove de Julho. 22 de agosto de 2010
Uninove: Universidade Nove de Julho 22 de agosto de 2010 Tipos de Dados Primitivos São informações manipuladas pelos usuários. Classificam-se em quatro tipos: Inteiro; Tipos de Dados Primitivos São informações
Leia maisIntrodução à Computação: Arquitetura von Neumann
Introdução à Computação: Arquitetura von Neumann Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,
Leia maisCONCEITOS DE ALGORITMOS
CONCEITOS DE ALGORITMOS Fundamentos da Programação de Computadores - 3ª Ed. 2012 Editora Prentice Hall ISBN 9788564574168 Ana Fernanda Gomes Ascênsio Edilene Aparecida Veneruchi de Campos Algoritmos são
Leia maisOperadores. Tipo de operadores. Aritméticos. Relacionais. Lógicos. Bit a bit. Cálculos aritméticos: soma, subtracção, multiplicação, divisão, etc.
Operadores Tipo de operadores Aritméticos Cálculos aritméticos: soma, subtracção, multiplicação, divisão, etc. Relacionais Comparação entre entidades. Lógicos Bit a bit 1 Operadores Aritméticos Operadores
Leia mais2º Estudo Dirigido CAP 3
2º Estudo Dirigido CAP 3 1. Cite três exemplos de aspecto na definição e implementação de uma arquitetura que são influenciados pelas características do conjunto de instruções? R.: Operações lógicas e
Leia maisLinguagens de Programação. Marco A L Barbosa
Expressões e sentença de atribuição Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Leia maisIntrodução. Tradutores de Linguagens de Programação
Introdução Compiladores 1 Linguagens de programação são notações para se descrever computações para pessoas e para máquinas. Todo software executado em todos os computadores foi escrito em alguma linguagem
Leia mais2. A influência do tamanho da palavra
PROCESSAMENTO 1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante
Leia mais25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de
Arquitetura de Computadores Conjuntos de Instruções: modos de endereçamento e formatos Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Endereçamento Normalmente, os campos de endereço são
Leia maisLinguagem C: Ponteiros. Prof. Leonardo Barreto Campos 1
Linguagem C: Ponteiros Prof. Leonardo Barreto Campos 1 Sumário Ponteiros; Variáveis ponteiros; Operadores de ponteiros; Expressões com ponteiros; Atribuição de ponteiros; Aritmética de ponteiros; Comparação
Leia maisSistemas de Computação. Instruções de Linguagem de Máquina
Instruções de Linguagem de Máquina Linguagem de montagem do processador MIPS Operações aritméticas Instrução Exemplo Significado soma add a, b, c a = b + c subtração sub a, b, c a = b - c Compilação de
Leia maisApêndice A. Pseudo-Linguagem
Apêndice A. Pseudo-Linguagem Apostila de Programação I A.1 Considerações Preliminares Os computadores convencionais se baseiam no conceito de uma memória principal que consiste de células elementares,
Leia maisOrganização e Arquitetura de Computadores INTRODUÇÃO
Organização e Arquitetura de Computadores INTRODUÇÃO A Arquitetura de Computadores trata do comportamento funcional de um sistema computacional, do ponto de vista do programador (ex. tamanho de um tipo
Leia maisDESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE
DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE Jeferson MENEGAZZO 1, Fernando SCHULZ 2, Munyque MITTELMANN 3, Fábio ALEXANDRINI 4. 1 Aluno 5ª fase do Curso de Ciência da Computação do Instituto
Leia maisProgramação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO
Programação de Computadores I Dados, Operadores e Expressões PROFESSORA CINTIA CAETANO Dados em Algoritmos Quando escrevemos nossos programas, trabalhamos com: Dados que nós fornecemos ao programa Dados
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 maisELETRÔNICA DIGITAL II. AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR
ELETRÔNICA DIGITAL II AUTOR: ENG. ANTONIO CARLOS LEMOS JÚNIOR acjunior@facthus.edu.br 1º SEMESTRE 2009 CONTEÚDO PROGRAMADO: 1 O que é um computador digital? 2 Como funcionam os computadores 3 O agente
Leia maisVariável. Expressões. Atribuição. Tipos básicos Declaração. Aritméticas Lógicas. Professor Leandro Augusto Frata Fernandes
Programação de Computadores III Aula 3 Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 Roteiro da Aula
Leia maisAGT0001 Algoritmos Aula 01 O Computador
AGT0001 Algoritmos Aula 01 O Computador Karina Girardi Roggia karina.roggia@udesc.br Departamento de Ciência da Computação Centro de Ciências Tecnológicas Universidade do Estado de Santa Catarina 2016
Leia maisPilha. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira
Pilha SCC-202 Algoritmos e Estruturas de Dados I Lucas Antiqueira Pilha O que é? Para que serve? 2 Problema: chamada de sub-rotinas Rotina A 1 print A 2 call C 3 call B 4 call D 5 return Rotina B 1 call
Leia maisIntrodução à Computação
UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Introdução à Computação Prof. Yandre Maldonado - 1 Prof. Yandre Maldonado e Gomes da Costa yandre@din.uem.br Histórico da Computação Prof. Yandre
Leia maisMensagens de Erro do Compilador
Mensagens de Erro do Compilador As mensagens de erro do compilador informam a ocorrência de problemas no seu código ou ambiente de programação que impedem que o Turbo Pascal gere um arquivo executável.
Leia maisDisciplina: Arquitetura de Computadores
Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na
Leia maisAula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação
Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Compilação, Montagem, Link-edição,
Leia maisSlides trabalhados durante a quinta aula
Slides trabalhados durante a quinta aula prática Estruturas de Controle de Fluxo 3. Laços de repetição (continuação) Exercício: Construa um algoritmo, representando-o através de um pseudocódigo e de um
Leia maisAmbiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
Leia maisALGORITMOS 3ª Aula. 3. Introdução Tipos de dados, variáveis e operadores Tipos de dados
3. Introdução Segundo alguns especialistas, qualquer programa de computador pode ser escrito utilizando apenas três estruturas básicas: Seqüência, Condição e Repetição. Isto significa que, na construção
Leia maisCompiladores. J.L.Rangel - Compiladores - 1-1
Compiladores Capítulo 1: Introdução 1. A estrutura global do compilador Este capítulo pretende apresentar a estrutura geral de um compilador, sem entretanto entrar em detalhes que só podem ser apresentados
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) 2013/1. Estruturas Básicas. Aula Tópico 4
Algoritmos e Estruturas de Dados I (DCC/003) 2013/1 Estruturas Básicas Aula Tópico 4 1 Problema 3 Exibir o maior número inteiro que pode ser representado no computador. 2 Qual o maior número inteiro? Para
Leia maisNEANDERWIN. Algumas características do processador Neander são:
NEANDERWIN O NeanderWin é um simulador da máquina Neander, definida no livro do Raul F. Weber (UFRGS), Fundamentos de Arquitetura de Computadores, Ed. Sagra Luzzatto. A máquina original foi estendida aqui
Leia maisC Operadores e Expressões
C Operadores e Expressões Adriano Cruz adriano@nce.ufrj.br Instituto de Matemática Departamento de Ciência da Computação UFRJ 15 de agosto de 2013 Adriano Cruz adriano@nce.ufrj.br (IM-DCC-UFRJ)C Operadores
Leia maisVariáveis primitivas e Controle de fluxo
Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/
Leia maisINFORMÁTICA APLICADA AULA 03 LINGUAGEM DE PROGRAMAÇÃO C++
UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 03 LINGUAGEM DE PROGRAMAÇÃO C++ Profª ª Danielle Casillo OPERADORES Um operador é um símbolo
Leia maisUnidade Central de Processamento UCP (CPU)
Unidade Central de Processamento UCP (CPU)! Arquitetura Convencional (Von Neumann) UCP BARRAMENTO MEMÓRIA PRINCIPAL ENTRADA E SAÍDA ! Visão geral da CPU UC - UNIDADE DE CONTROLE REGISTRADORES A B C D ALU
Leia maisConjunto de Instruções
Conjunto de Instruções IFBA Instituto Federal de Educ. Ciencia e Tec Bahia Curso de Analise e Desenvolvimento de Sistemas Arquitetura de Computadores 20 e 21/30 Prof. Msc. Antonio Carlos Souza Referências
Leia maisOrganização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores
Ciência da Computação Arq. e Org. de Computadores Processadores Prof. Sergio Ribeiro Composição básica de um computador eletrônico digital: Processador Memória Memória Principal Memória Secundária Dispositivos
Leia maisAlgoritmos I Aula 13 Linguagem de Programação Java
Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto
Leia maisAs fases de um compilador
As fases de um compilador Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem de alto-nível Compilando um programa simples
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: Operadores relacionais e lógicos estruturas condicionais If...
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: Operadores relacionais e lógicos estruturas condicionais If... Else Switch Prof. Renato Pimentel 1 Operações relacionais Operações
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 mais