Introdução. Tradutores de Linguagens de Programação

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

Download "Introdução. Tradutores de Linguagens de Programação"

Transcrição

1 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 de programação. As linguagens de programação podem ser classificadas em cinco gerações: 1ª) Linguagens de máquina: permitem a comunicação direta com o computador em termos de bits, registradores e operações de máquina bastante primitivas. 2ª) Linguagens simbólicas (Assembly): projetadas para minimizar as dificuldades da programação em notação binária.utiliza mnemônicos. 3ª) Linguagens orientadas ao usuário (Fortran, Pascal, Basic, etc): linguagens procedurais, isto é, um programa especifica uma sequência de passos a serem seguidos para solucionar o problema, e linguagens declarativas que se baseiam na teoria das funções recursivas (funcionais) e de lógica matemática (lógicas). 4ª) Linguagens orientadas à aplicação (Excel, SQL, Framework, etc): visam facilitar a programação de computadores, apressar o processo de desenvolvimento de aplicações, facilitar a manutenção de aplicações, reduzindo custos, minimizar problemas de depuração e gerar códigos sem erros a partir de requisitos de expressões de alto nível. 5ª) Linguagens de conhecimento: usadas principalmente na área de Inteligência Artificial. Facilitam a representação do conhecimento que é essencial para a simulação de comportamentos inteligentes. Mas, antes que possa rodar, um programa primeiro precisa ser traduzido para um formato que lhe permita ser executado por um computador. Os sistemas de software que fazem essa tradução são denominados compiladores. Compiladores são programas de computador que traduzem de uma linguagem para outra. Um programa recebe como entrada um programa escrito na linguagem-fonte e produz um programa equivalente na linguagem-alvo. Geralmente, a linguagem-fonte é uma linguagem de alto nível, como C ou C++, e a linguagem-alvo é um código-objeto (código de máquina) para a máquina-alvo. Programa fonte COMPILADOR Programa objeto Tradutores de Linguagens de Programação Os tradutores de linguagens de programação podem ser classificados em: Montadores (assemblers): é um tradutor para a linguagem de montagem (Assembly) de um computador em particular. Geralmente uma instrução de linguagem simbólica (de montagem) para uma instrução de máquina. Por vezes um compilador irá gerar uma linguagem de montagem como sua linguagem-alvo e, em seguida, contar com um montador para concluir a tradução para o código-objeto. Compiladores: são tradutores que mapeiam programas escritos em linguagem de alto nível para programas equivalentes em linguagem simbólica ou de máquina.

2 2 Introdução Pré-compiladores (pré-processadores): são processadores que mapeiam instruções escritas numa linguagem de alto nível estendida para instruções da linguagem de programação original, ou seja, são tradutores que efetuam conversões entre duas linguagens de alto-nível. É um programa separado, ativado pelo compilador antes do início da tradução. Ele pode apagar comentários, incluir outros arquivos e executar substituições de macros. Interpretadores: é um tradutor de linguagens, assim como um compilador. A diferença é que o interpretador executa o programa-fonte de imediato, em vez de gerar um código-objeto que seja executado após o término da tradução. Os interpretadores processam uma forma intermediária do programa fonte e dados ao mesmo tempo. A interpretação da forma interna do fonte ocorre em tempo de execução, não sendo gerado um programa objeto. O intervalo de tempo no qual ocorre a conversão de um programa fonte para um programa objeto é chamado de tempo de compilação. O programa objeto é executado no intervalo de tempo chamado tempo de execução. O programa fonte e os dados são processados em momentos distintos, respectivamente, tempo de compilação e tempo de execução. Os interpretadores são, geralmente, menores que os compiladores e facilitam a implementação de construções complexas de linguagens de programação. O tempo de execução de um programa interpretado é maior que o tempo necessário para executar um programa compilado equivalente. O código objeto compilado é dez ou mais vezes mais rápido que o código fonte interpretado. A estrutura de um tradutor Os tradutores de linguagens de programação (compiladores, interpretadores) são constituídos internamento por passos (fases) para operações lógicas distintas. No processo de tradução existem duas partes: análise e síntese. A análise (front-end) subdivide o programa fonte em partes constituintes e impõe uma estrutura gramatical sobre elas. Depois, usa essa estrutura para criar uma representação intermediária do programa fonte. A análise detecta má formação sintática e erros semânticos, oferecendo mensagens esclarecedoras, para que o usuário possa tomar a ação corretiva. A análise também coleta informações sobre o programa fonte e as armazena em uma estrutura de dados chamada tabela de símbolos. A síntese (back-end) constrói o programa objeto a partir da representação intermediária e das informações na tabela de símbolos. Análise Léxica O objetivo desta fase é identificar sequências de caracteres que constituem unidades léxicas (tokens, lexemas). O analisador léxico lê o fluxo de caracteres que compõem o programa fonte e os agrupa em sequências significativas (lexemas). O analisador léxico verifica se os caracteres lidos pertencem ao alfabeto da linguagem, identificando tokens e desprezando comentários e brandos desnecessários. Os tokens constituem classes de símbolos tais como palavras reservadas, delimitadores, identificadores, etc. Para cada lexema, o analisador léxico produz como saída um token no formato: <nome-token, valor-atributo> que ele passa para a fase de análise sintática. Palavras reservadas, operadores e delimitadores são representados pelos próprios símbolos.

3 Compiladores 3 O analisador léxico, em geral, inicia a construção da tabela de símbolos e envia mensagens de erro caso identifique unidades léxicas não aceitas pela linguagem em questão. Exemplo 1: Suponha que um programa fonte contenha o comando de atribuição Os caracteres nessa atribuição poderiam ser agrupados nos seguintes lexemas e mapeados para os seguintes tokens passados ao analisador sintático: Lexema Símbolo Significado Entrada Token position id identificador 1 <id, 1> = <=> initial id identificador 2 <id, 2> + <+> rate id identificador 3 <id, 3> * <*> 60 número inteiro 4 <número, 4> Após a análise léxica a representação do comando de atribuição fica como uma sequência de tokens: <id, 1> <=> <id, 2> <+> <id, 3> <*> <número, 4> Exemplo 2: Considere a linha de código a seguir, que poderia pertencer a um programa em C. a [index] = Esse código contém 12 caracteres diferentes de espaço, mas somente 8 marcas: Lexema Símbolo Significado Entrada Token a id identificador 1 <id, 1> [ <[> index id identificador 2 <id, 2> ] <]>

4 4 Introdução Lexema Símbolo Significado Entrada Token = <=> 4 número inteiro 3 <número, 3> + <+> 2 número inteiro 4 <número, 4> Os caracteres nessa atribuição poderiam ser mapeados para os seguintes tokens passados para o analisador sintático: <id, 1> <[> <id, 2> <]> <=> <número, 3> <+> <número, 4> Exemplo 3: Seja o seguinte texto fonte em Pascal. while i < 100 do i := j + i ; Os caracteres nessa atribuição poderiam ser mapeados para os seguintes tokens passados para o analisador sintático: Lexema Símbolo Significado Entrada Token while <while> i id identificador 1 <id, 1> < <<> 100 número inteiro 1 <número, 1> do <do> i id identificador 1 <id, 1> := <:=> j id identificador 2 <id, 2> + <+> i id identificador 1 <id, 1> ; <;> Após a análise léxica da instrução ter-se ia a seguinte cadeia de tokens: <while> <id, 1> <<> <número, 1> <do> <id, 1> <:=> <id, 2> <+> <id, 1> <;> Análise sintática Essa fase tem por função verificar se a estrutura gramatical do programa está correta. O analisador sintático utiliza os primeiros componentes dos tokens produzidos pelo analisador léxico para criar uma representação intermediária tipo árvore (árvore de derivação), que mostra a estrutura gramatical da sequência de tokens. Outra função dos reconhecedores sintáticos é a detecção de erros de sintaxe identificando clara e objetivamente a posição e o tipo de erro percorrido. O analisador sintático deve tentar recuperar os erros encontrados, prosseguindo a análise do texto restante. Exemplo 1: Essa árvore mostra a ordem em que as operações do comando de atribuição deve ser realizada. = id, 1 id, 2 id, 3 + = Número, 4

5 Compiladores 5 Exemplo 2: Considere a linha de código em C a [index] = que representa um elemento estrutural denominado expressão (uma expressão de atribuição), composta por uma expressão indexada à esquerda e uma expressão aritmética de inteiros à direita. Esta estrutura pode ser representada em uma árvore de análise sintática (árvore sintática) da seguinte forma: expressão expressão de atribuição expressão = expressão expressão indexada Expressão aritmética expressão [ expressão ] expressão + expressão id, 1 id, 2 Número, 3 Número, 4 Exemplo 3: Considere o seguinte comando Pascal. while <expressão> do <comando>; Nesse caso, a estrutura <expressão> deve apresentar-se sintaticamente correta, e sua avaliação deve retornar um valor do tipo lógico. Considerando o comando while do exemplo, o analisador sintático produzirá a árvore de derivação a partir da sequência de tokens liberada pelo analisador léxico. <while> <expressão> <do> <comando> <id, 1> <<> <número, 1> <id, 1> <:=> <+> <id, 3> <id, 2> Análise semântica É o significado de um programa, contrastando com sua sintaxe ou estrutura. O analisador semântico utiliza a árvore de sintaxe e as informações na tabela de símbolos para verificar a consistência semântica do programa fonte com a definição da linguagem. Ele também reúne informações sobre os tipos e as salva na árvore de sintaxe ou tabela de símbolos, para uso subsequente durante a geração de código intermediário. Na verificação de tipo o compilador verifica se cada operador possui operandos compatíveis. A especificação da linguagem pode permitir algumas conversões de tipos chamada coerções. Por exemplo, se um operador for aplicado a um número de ponto

6 6 Introdução flutuante e a um inteiro, o compilador pode converter ou coagir o inteiro para um número de ponto flutuante. Exemplo 1: No exemplo da expressão em C a[index] = 4+2 as informações de tipos típicas que poderiam ser obtidas antes de analisar essa linha seriam: a é um vetor de valores inteiros com índices de um intervalo de inteiros index é uma variável de inteiros O analisador semântico anota na árvore sintática com os tipos de todas as subexpressões e verifica se as atribuições fazem sentido para esses tipos, caso contrário declara um erro de divergência entre tipos. expressão de atribuição expressão indexada inteiro expressão de adição inteiro identificador a vetor de inteiros identificador index inteiro número 4 inteiro número 2 inteiro Exemplo 2: Suponha: que position, initial e rate foram declaradas como números de ponto flutuante, e que o lexema 60 tenha a forma de um inteiro. O verificador de tipos no analisador semântico descobre que o operador * é aplicado a um número de ponto flutuante rate e a um inteiro 60. Nesse caso, o inteiro pode ser convertido em um número de ponto flutuante. = id, 1 + id, 2 id, 3 = intfloat 60 Geração de código intermediário No processo de traduzir um programa fonte para um código objeto, um compilador pode produzir uma ou mais representações intermediárias. As árvores de sintaxe denotam uma forma de representação intermediária. Esta fase gera como saída uma sequência de código, que pode, eventualmente, ser o código objeto final, mas, na maioria das vezes, constitui-se num código intermediário. A representação intermediária explícita de baixo nível (linguagem de máquina) é um programa para uma máquina abstrata. Essa representação intermediária deve ter duas propriedades importantes:

7 Compiladores 7 ser facilmente produzida e ser facilmente traduzida para a máquina alvo. A tradução de código fonte para objeto em mais de um passo apresenta algumas vantagens: possibilita a otimização de código intermediário, de modo a obter-se o código objeto final mais eficiente; resolve, gradualmente, as dificuldades da passagem de código fonte para código objeto (alto nível para baixo nível), já que o código fonte pode ser visto como um texto condensado que explode em inúmeras instruções elementares de baixo nível. Exemplo 1: Para o comando de atribuição o gerador de código intermediário, recebendo a árvore de derivação, produziria a seguinte sequência de instruções: t1 = inttofloat(60) t2 = id3 * t1 t3 = id2 + t2 id1 = t3 Consideramos uma forma intermediária, chamada código de três endereços, que consiste em uma sequência de instruções do tipo assembler com três operandos por instrução. Cada operando pode atuar como um registrador. A saída do gerador de código intermediário consiste em uma sequência de instruções ou código de três endereços. Exemplo 2: Para o comando while apresentado anteriormente, o gerador de código intermediário, recebendo a árvore de derivação, poderia produzir a seguinte sequência de instruções: L0 if i < 100 goto L1 L1 goto L2 t := j + i i := t goto L0 L2... Há vários tipos de código intermediário: quádruplas, triplas, notação polonesa pós-fixada, etc. A linguagem intermediária do exemplo acima é chamada código de três endereços (cada instrução tem no máximo três operandos). Exemplo 3: Um código de três endereços para a expressão a[index] = 4+2 em C poderia ficar assim: t = a[index] = t Observe o uso de uma variável temporária adicional t para armazenar o resultado intermediário. Vários pontos precisam ser observados em relação aos códigos de três endereços: 1º) Cada instrução de atribuição de três endereços possui no máximo um operador do lado direito. Assim, essas instruções determinam a ordem em que as operações devem ser realizadas. 2º) O compilador precisa gerar um nome temporário para guardar o valor computador por uma instrução de três endereços. 3º) Algumas instruções de três endereços possuem menos de três operandos.

8 8 Introdução Otimização de código Tem por objetivo otimizar o código intermediário em termos de velocidade de execução e espaço de memória. Esta fase independente das arquiteturas de máquina faz algumas transformações no código intermediário com o objetivo de produzir um código objeto melhor. Melhor significa mais rápido, código menor, que consuma menos energia. Exemplo 1: O otimizador de código melhoraria o código a[index] = em dois passos, inicialmente computando o resultado da adição t = 6 a[index] = t e depois substituindo t por seu valor, para obter a declaração de três endereços a[index] = 6 Exemplo 2: Na atribuição o otimizador pode deduzir que a conversão do valor inteiro para ponto flutuante pode ser feita de uma vez por todas durante a compilação. Além do mais, t3 é usado apenas uma vez na atribuição de seu valor para id1, portanto o otimizador pode eliminá-lo transformando em uma sequência de código menor. t1 = id3 * 60.0 id1 = id2 + t1 Exemplo 3: Considerando o código intermediário do exemplo do comando while, o código otimizado poderia ser: L0 if i 100 goto L2 i := j + i goto L0 L2... O número de otimizações de código realizadas por diferentes compiladores varia muito. Quanto mais otimizações, mais tempo é gasto nessa faze. Existem otimizações simples que melhoram significativamente o tempo de execução do programa objeto sem atrasar muito a compilação. Geração de código Tem como objetivos: produção de código objeto, reserva de memória para constantes e variáveis, seleção de registradores, etc. Um aspecto crítico da geração de código está relacionado à cuidadosa atribuição dos registradores às variáveis do programa. Nessa fase da compilação as propriedades da máquina-alvo tornam-se o fator principal. Exemplo 1: Para a expressão em C, a [index] = precisamos decidir como armazenar inteiros para gerar o código de indexação de matrizes. Uma sequência de código possível para a expressão dada poderia ser: MOV R0, index // valor de índex R0 MUL R0, 2 // dobra valor em R0 MOV R1, &a // endereço de a R1 ADD R1, R0 // adiciona R0 a R1 MOV *R1, 6 // constante 6 endereço em R1

9 Compiladores 9 &a é o endereço de a, o endereço inicial da matriz. *R1 significa o endereçamento indireto de registro, a última instrução armazena o valor 6 no endereço contido em R1. Nesse código assumimos que a máquina efetua endereçamento de bytes e que inteiros ocupam dois bytes de memória. No código alvo são possíveis diversas melhorias. Usar a instrução de deslocamento para substituir a multiplicação na segunda instrução Usar um modo de endereçamento indexado para armazenar a matriz. Com essas duas otimizações o código-alvo fica assim: MOV R0, index // valor de índex R0 SHL R0 // dobra valor em R0 MOV &a [R0], 6 // constante 6 endereço a + R0 Exemplo 2: Na atribuição usando os registradores R1 e R2, o código intermediário poderia ser traduzido para o código de máquina LDF R2, id3 // carrega o conteúdo do endereço id3 no registrador R2 MULF R2, R2, #60.0 // multiplica pela constante de ponto flutuante 60.0 LDF R1, id2 // move id2 para o registrador R1 ADDF R1, R1, R2 // soma o valor contido no registrador R1 com o valor previamente calculado no registrador R2 STF id1, R1 // o valor no registrador R1 é armazenado no endereço id1 O F diz que a instrução manipula números de ponto flutuante. O # significa que o valor 60.0 deve ser tratado como uma constante imediata. A geração de código ignorou a questão relativa à alocação de espaço na memória para os identificadores do programa fonte. A organização de memória em tempo de execução depende da linguagem sendo compilada. Decisões sobre a alocação de espaço podem ser tomadas em dois momentos: durante a geração de código intermediário ou durante a geração do código. Exemplo 3: A partir do código intermediário otimizado para o comando while apresentando como exemplo, obter-se-ia o código objeto final baseado na linguagem simbólica de um microprocessador PC L0 MOV AX, i // move o conteúdo do endereço i para o registrador AX CMP AX, 100 // compara 100 com o conteúdo do registrador AX JGE L2 // faz um salto condicional para L2 MOV AX, j // move o conteúdo do endereço j para o registrador AX MOV BX, i // move o conteúdo do endereço i para o registrador BX ADD BX // adiciona o conteúdo do registrador BX MOV i, AX // move o conteúdo do registrador AX para o endereço i JMP L0 // faz um salto incondicional para L0 L2... Exercícios 1. No contexto de implementação de linguagem de programação, dê o significado dos seguintes termos: compilador, interpretador, montador e pré-compilador. 2. Aponte vantagens e desvantagens dos interpretadores em relação aos compiladores. 3. Explique o processo de compilação: fases e seu inter-relacionamento. 4. Dada a declaração em C a[i+1] = a[i] + 2

10 10 Introdução desenhe uma árvore de análise sintática e uma árvore sintática para a expressão. 5. Por exemplo, o código em C x = 4; y = x + 2; faça a otimização. Bibliografia Compiladores: princípios, técnicas e ferramentas Aho, Alfred. Lam, Monica. Sethi, Ravi. Ullman, Jeffrey D. São Paulo: Pearson Addison-Wesley, Compiladores: princípios e práticas Louden, Kenneth C. São Paulo: Pioneira Thomson Learning, 2004 Implementação de linguagens de programação: Compiladores Price, Ana. Toscani, Simão Porto Alegre: Bookman: Instituto de Informática da UFRGS, 2008.

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. Conceitos Básicos

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

Projeto de Compiladores

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

Autômatos e Linguagens

Autômatos e Linguagens Autômatos e Linguagens Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Agosto, 2016 1 / 41 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

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

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

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

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

Linguagens de Programação Classificação

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

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

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

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Prof.: Edilberto M. Silva http://www.edilms.eti.br Aula 2 Linguagens de Programação Desenvolvimento e execução de programas Características de linguagens Execução de programas

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

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação

Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Universidade Estadual da Paraíba - UEPB Curso de Licenciatura em Computação Análise Semântica Disciplina: Compiladores Equipe: Luiz Carlos dos Anjos Filho José Ferreira Júnior Compiladores Um compilador

Leia mais

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

DESENVOLVIMENTO DO COMPILADOR PARA A LINGUAGEM SIMPLE

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

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

Organização e Arquitetura de Computadores I

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

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1 Programação de Computadores IV Introdução a Linguagens de Programação Simone Martins simone@ic.uff.br SLIDES CEDIDOS POR BRUNO MARQUES 1 Arquitetura de programação 2 O Que é um Dado? Dado é o elemento

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

Métodos de implementação de linguagens. Kellen Pinagé

Mé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 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

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Linguagens de Programação DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Tópicos da aula

Leia mais

FACULDADE LEÃO SAMPAIO

FACULDADE LEÃO SAMPAIO FACULDADE LEÃO SAMPAIO Paradigmas de Programação Curso de Análise e Desenvolvimento de Sistemas Turma: 309-5 Semestre - 2014.2 Paradigmas de Programação Prof. MSc. Isaac Bezerra de Oliveira. 1 PARADIGMAS

Leia mais

Slides trabalhados durante a quinta aula

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

PROGRAMAÇÃO I. Introdução

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

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Vale do São Francisco Curso de Engenharia da Produção / Elétrica Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti www.twitter.com/jorgecav

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

Introdução à Computação

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

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

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

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18

Análise Sintática. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 18 Análise Sintática Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 18 Sumário 1 Introdução 2 Derivações 2 / 18 1 Introdução 2 Derivações 3 /

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

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

TÉCNICO DE INFORMÁTICA - SISTEMAS

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

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

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38

Compiladores. Eduardo Ferreira dos Santos. Fevereiro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 38 Compiladores Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Fevereiro, 2017 1 / 38 Sumário 1 Compiladores 2 Linguagens de programação 3 Ciência dos compiladores

Leia mais

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Introdução Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível (escrito em uma linguagem de

Leia mais

Como construir um compilador utilizando ferramentas Java

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

Analisador Léxico parte II

Analisador Léxico parte II Analisador Léxico parte II Compiladores Mariella Berger Sumário Definições Regulares Gerador de Analisador Léxico Flex Exemplos As fases de um Compilador Análise Léxica Análise Sintática ANÁLISE Análise

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

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

Algoritmos. Prof. Jonatas Bastos Site:

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

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares

Curso Profissional de Gestão e Programação de Sistemas Informáticos. Programação e Sistemas de Informação. Módulo 1. 1ª Parte Prof. Sandra Pais Soares Curso Profissional de Gestão e Programação de Sistemas Informáticos Programação e Sistemas de Informação Módulo 1 1ª Parte Prof. Sandra Pais Soares Linguagens de Programação Linguagens de Programação Uma

Leia mais

Linguagem de Montagem do NeanderX

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

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior Meio pelo qual se pode indicar os passos que devem ser realizados pelo computador para resolver problemas; Através da linguagem,

Leia mais

9. Software de Sistema - Montadores (capítulo 9 do livro texto)

9. Software de Sistema - Montadores (capítulo 9 do livro texto) 9. Software de Sistema - Montadores (capítulo 9 do livro texto) Compiladores Programas de Aplicação Depuradores Usuário Processador de Macro Montador Programas Utilitários Ligadores Carregadores Sistema

Leia mais

Arquitetura e Organização de Computadores

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

Processadores para computação de alto desempenho

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

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010 Construção de Compiladores Prof. Raimundo Santos Moura (http://www.ufpi.br/rsm) Construção de Compiladores Livro-Texto: AHO, Alfred V.; ULLMAN, Jeffrey D.; SETHI, R. Compiladores: princípios, técnicas

Leia mais

Tratamento dos Erros de Sintaxe. Adriano Maranhão

Tratamento dos Erros de Sintaxe. Adriano Maranhão Tratamento dos Erros de Sintaxe Adriano Maranhão Introdução Se um compilador tivesse que processar somente programas corretos, seu projeto e sua implementação seriam grandemente simplificados. Mas os programadores

Leia mais

ção de Computadores I

ção de Computadores I Universidade Federal de Pelotas Instituto de Física e Matemática Departamento de Informática Bacharelado em Ciência da Computação Arquitetura e Organizaçã ção de Computadores I Aula 2 1. Projeto da Arquitetura

Leia mais

Introdução à Computação: Máquinas Multiníveis

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

Sistemas Operacionais

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

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.

Leia mais

Arquitetura e Organização de Computadores

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

Prof. Leonardo Augusto Casillo

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

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos

Leia mais

Classificação das linguagens de programação

Classificação das linguagens de programação Introdução Linguagem É um meio de comunicação entre pessoas. Faculdade de expressão audível e articulada do homem. Conjunto de sinais falados, escritos ou gesticulados de que se serve o homem para demonstrar

Leia mais

SSC510 Arquitetura de Computadores 1ª AULA

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

Linguagem de Maquina II. Visão Geral

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

Arquitetura e Organização de Computadores

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

As fases de um compilador

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

Algoritmos Computacionais

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

Capítulo 1. Aspectos Preliminares

Capítulo 1. Aspectos Preliminares Capítulo 1 Aspectos Preliminares Tópicos do Capítulo 1 Razões para estudar conceitos de linguagens de programação Domínios de programação Critérios de avaliação de linguagens Influências no projeto de

Leia mais

IV.2 Aspectos Léxicos Convencionais

IV.2 Aspectos Léxicos Convencionais IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos - Token genérico / Lei de formação bem definida - Limitações de tamanho e/ou valor - Possuem valor semântico o token deve ser acompanhado

Leia mais

Ambiente de desenvolvimento

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

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA)

Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Compiladores I Prof. Ricardo Santos (cap 3 Análise Léxica: Introdução, Revisão LFA) Análise Léxica A primeira fase da compilação Recebe os caracteres de entrada do programa e os converte em um fluxo de

Leia mais

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

Instruções. Maicon A. Sartin

Instruções. Maicon A. Sartin Instruções Maicon A. Sartin SUMÁRIO Introdução Instruções Formatos de instruções Conjuntos de instruções Execução de instruções Introdução a Linguagem de Montagem Introdução a Linguagem de Montagem Níveis

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

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

Linguagem C. Eliane Pozzebon

Linguagem C. Eliane Pozzebon Linguagem C Eliane Pozzebon Material de Apoio de C Site da disciplina: http://www.univasf.edu.br/~eliane.pozzebon Slides de aulas Exercícios Dev-C++: um ambiente de programação interativo e gratuito para

Leia mais

Arquitetura de Computadores. Conjunto de Instruções

Arquitetura de Computadores. Conjunto de Instruções Arquitetura de Computadores Conjunto de Instruções Arquitetura do Conjunto das Instruções ISA (Instruction Set Architecture) Traduz para uma linguagem intermediária (ISA) os vários programas em diversas

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

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

INE5622 INTRODUÇÃO A COMPILADORES

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

Algoritmos e Programação

Algoritmos e Programação ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE ENGENHARIA ELÉTRICA

Leia mais

Aula 14 Funcionamento de Processadores (Visão específica)

Aula 14 Funcionamento de Processadores (Visão específica) Aula 14 Funcionamento de Processadores (Visão específica) Com base nas aulas de Prof. José Delgado (autorizado) Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm

Leia mais

As fases de um compilador

As fases de um compilador As fases de um compilador Paradigmas de LP Métodos de Implementação de LP Compilando um programa simples estrutura de um compilador formas de organização de um compilador processo de execução de uma linguagem

Leia mais

1.1 o que é um algoritmo... 6

1.1 o que é um algoritmo... 6 sumário introdução 1 1 fundamentos 5 1.1 o que é um algoritmo... 6 1.1.1 algoritmos executados por um computador...7 1.1.2 comandos básicos executados por um computador...11 1.1.3 da necessidade do desenvolvimento

Leia mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES ORGANIZAÇÃO DE COMPUTADORES AULA 03 PROFº RITIELLE SOUZA DISTRIBUIÇÃO LÓGICA DISTRIBUIÇÃO LÓGICA Arquitetura de Von Neumann Uma unidade central de processamento recebe informações através de uma unidade

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

Montadores e Compiladores

Montadores e Compiladores Montadores e Compiladores Prof. Idevar Gonçalves de Souza Júnior Conteúdo Programático Resumido Revisão da Arquitetura de Computadores Introdução a Teoria das Linguagens Compilação e Interpretação Análise

Leia mais

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

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34

Análise Sintática II. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 34 Análise Sintática II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 34 Sumário 1 Introdução 2 Ambiguidade 3 Análise sintática descendente 4

Leia mais

CONCEITOS DE ALGORITMOS

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

NEANDERWIN. Algumas características do processador Neander são:

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

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

III.2 - Princípios de Arquitetura

III.2 - Princípios de Arquitetura Conjunto de Instruções e Modo de Endereçamento Ciclo de busca decodificação execução de instruções Programação de um processador Arquitetura de Von Neumann e Componentes Arquiteturas 4, 3, 2, 1 e 0 Tabela

Leia mais

Introdução à Programação de Computadores Fabricação Mecânica

Introdução à Programação de Computadores Fabricação Mecânica Introdução à Programação de Computadores Fabricação Mecânica Edilson Hipolito da Silva edilson.hipolito@ifsc.edu.br - http://www.hipolito.info Aula 04 - Linguagens de Programação, Interpretador, compilador

Leia mais

Estrutura e Funcionamento dos Computadores (Conceitos Básicos)

Estrutura e Funcionamento dos Computadores (Conceitos Básicos) Estrutura e Funcionamento dos Computadores (Conceitos Básicos) Sistema Computacional Peopleware (usuário) Software (programas) Hardware (máquina) Hardware Corresponde à parte material, aos componentes

Leia mais

Paradigmas de Programação

Paradigmas de Programação Paradigmas de Programação Sintaxe e semântica Aula 4 Prof.: Edilberto M. Silva http://www.edilms.eti.br Prof. Edilberto Silva / edilms.eti.br Sintaxe A sintaxe de uma linguagem de programação é a forma

Leia mais

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO

Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO Questões de Paradigmas de Programação Matéria: Prova 1 4ª EDIÇÃO QUESTÃO 1 : Enviada por: Francisco Carlos Moraes Junior Duvidas: Thaise Domínios de programação são áreas onde os computadores são usados.

Leia mais

Capítulo 7. Expressões e Sentenças de Atribuição

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