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
|
|
- Iasmin Borges Andrade
- 6 Há anos
- Visualizações:
Transcrição
1 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
2 Ambiente de Execução Antes de discufr a geração em si, precisamos relembrar certos conceitos Várias estratégias padrão que são uflizadas nas estruturas dos códigos executáveis Começaram do Assembly Ouvimos falar quando estudamos algoritmos Sumário Gerencia de recursos em tempo de execução Correspondência entre Estruturas estáfcas (tempo de compilação) Estruturas dinâmicas (tempo de execução) Organização da memória 2
3 Gerência Recursos A execução de um programa começa com o auxílio do Sistema Operacional Na invocação O SO aloca espaço para o programa O código é carregado do disco nesse espaço O SO faz o goto para o entry- point (main) ObjeFvos para Geração de Código Dois objefvos Correção Eficiência A complicação vem da combinação dos dois! 3
4 Premissas sobre a execução 1. Execução Sequencial o controle passa de um ponto para outro de maneira bem definida 2. Procedimentos aninhados Quando um procedimento é chamado, eventualmente o controle retorna para o ponto logo após a chamada Não é verdade sempre! AFvação Uma invocação (chamada) de um procedimento P corresponde a uma afvação de P A vida de uma afvação é Todos os passos da execução de P Incluíndo os procedimentos invocados por P 4
5 Vida de Variáveis A vida de uma variável x é a porção da execução entre o primeiro momento onde algo é atribuído para a variável e o úlfmo momento que o valor da variável foi lido Observe que Vida é um conceito dinâmico Escopo é um conceito estáfco Árvores de AFvação A premissa (2) garante que se P chama Q, então Q retorna antes de P. Ou seja, o aninhamento das vidas das afvações são perfeitamente aninhadas As afvações podem ser representadas por árvores de afvação! 5
6 Class Main { g(): Int {1}; } f(): Int {g()}; Exemplo main(): Int {g(); f(); }; Class Main { g(): Int{1}; } Exemplo 2 f(x:int): Int { if x = 0 then g() else f(x- 1) fi}; main(): Int {f(3)}; 6
7 Observações A árvore de afvações depende do comportamento da execução A árvore de afvação pode ser diferente para cada entrada Como é perfeitamente aninhada, uma pilha pode ser uflizada para acompanhar as afvações afvas ;- ) Class Main { g(): Int {1}; } f(): Int [g()}; Exemplo main(): Int {{g(); f(); }}; 7
8 Registro de AFvação Informação necessária para gerenciar a afvação de um procedimento também chamado de frame (quadro, moldura) Se o procedimento F chama G, então no registro de afvação de G tem alguma informação de F e de G Conteúdo do Registro de AFvação Quando F chama G, F fica suspenso até que G seja completada. Contém informação suficiente para confnuar a execução de F. Pode conter: Endereço de retorno de G (algum ponto em F) Parâmetros (valor de retorno) Espaço para variáveis locais de G 8
9 Exemplo Torre de Hanoi Qual é o Ponto O compilador precisa determinar, em tempo de compilacão, como serão os registros de afvação, e gerar código que acesse e mantenha corretamente esses registros. O Registro de AFvação e o Gerador de Código precisam ser projetados em conjunto! 9
10 Discussão A vantagem de se colocar o valor de retorno no topo do registro de afvação é que ele pode ser encontrado a parfr de um offset fixo em relação ao frame do procedimento chamador É preciso enxergar a Matrix!!! Compiladores reais uflizam registradores valor de retorno parâmetros *** Variáveis Globais / Constantes Todas as referências a variáveis globais apontam para o mesmo objeto Não pode ser representado em registro de afvação Variáveis globais recebem endereços fixos na memória variáveis estáfcas, ou estafcamente alocadas. recursos de linguagens 10
11 Alocação Dinâmica Existem valores que precisam sobreviver a afvação de procedimentos que os criam: method foo() { new Bar } objeto Bar vive depois que foo retornar! Linguagens que permitem alocação dinâmica usam um heap para armazenamento dinâmico Organização Global Área de código contém código objeto Fpicamente fixa, e read- only Área estáfca contém dados tamanho fixo, read/write Pilha registros de afvação Heap O resto! Código Área EstáFca Heap Pilha 11
12 SinteFzando Existem informações estáfcas e dinâmicas EstáFcas manfdas pelo compilador em tempo de compilação Dinâmicas são manfdas pelo executável, produzidas pelo compilador para realizarem sua tarefa em tempo de execução Não é só gerar código! Tem que construir as estruturas de dados e de execução, e mantê- las Além do código em si. Organização dos dados Aspectos da máquina alvo precisam ser considerados para garanfr os objefvos do código gerado. Direção em que a pilha cresce Alinhamento (uma preocupação grande) 12
13 Alinhamento Maioria das máquinas modernas são de 32 ou 64 bits 8 bits no byte palavras de 4 ou 8 bytes A máquina pode endereçar byte, ou palavra Dado é dito alinhado se ele começa no limite de uma palavra A maioria das máquinas tem restrições quanto ao alinhamento Pelo menos um impacto significafvo no desempenho Máquinas de Pilha O modelo de avaliação simples Não existem variáveis ou registradores Todos os resultados são armazenados na pilha Cada instrução: pega os operandos do topo da pilha Remove esses operandos da pilha Calcula o resultado da operação Coloca esse resultado na pilha 13
14 Um exemplo de máquina de pilha Considere duas instruções push i Coloca o inteiro i no topo da pilha add refra dois elementos do topo da pilha, soma, e guarda o resultado na pilha O programa que calcula push 7 push 5 add Pra que máquinas de pilha? Cada operação pega seus operandos e coloca o resultado no mesmo lugar Esquema uniforme de compilação Portanto, compilador mais simples 14
15 Mais mofvos A localização dos operandos é implícita sempre o topo da pilha Não há necessidade de codificar os operandos explicitamente Não há necessidade de codificar a localização do resultado Instrução add ao invés de add r 1, r 2, r 3 codificação mais simples programas mais compactos Java bytecode usa um modelo de avaliação de pilha OFmizando uma máquina de pilha Um add realiza 3 operações na memória 2 reads e 1 write O topo da pilha é frequentemente acessado Idéia brilhante: manter o topo da pilha em registrador (acumulador) Acesso a registradores é bem mais eficiente O add passa a ser: acc = acc + topo_da_pilha Apenas 1 acesso à memória 15
16 Máquina de pilha com acumulador Invariantes O resultado de uma expressão está no acumulador Para uma operação op(e 1, e 2,, e n ) avaliar as expressões e 1 a e n cada resultado vai sendo empilhada até e n- 1 Então avalia- se op A avaliação de cada expressão preserva a pilha Um exemplo: 3 + (7 + 5) Código Acumulador Pilha acc 3 3 <anterior> push acc 3 3, <anterior> acc 7 7 3, <anterior> push acc 7 7, 3, <anterior> acc 5 5 7, 3, <anterior> acc acc + topo_da_pilha 12 7, 3, <anterior> pop 12 3, <anterior> acc acc + topo_da_pilha 15 3, <anterior> pop 15 <anterior> É importante preservar a pilha! 16
17 Básico de Geração de Código O Assembly do MIPS Uma linguagem fonte simples Uma implementacão da linguagem simples e uma máquina de pilha The máquinas de pilha para o MIPS O compilador gera código para uma máquina de pilha com acumulador Queremos o código gerado para o processador MIPS Simule a máquina de pilha uflizando instruções e registradores do MIPS 17
18 Simulando a Máquina de Pilha O acumulador é manfdo no registrador $a0 A pilha é manfda na memória cresce para os endereços menores convenção padrão na arquiteturas MIPS O endereço da próxima localização da pilha é manfda no registrador $sp o topo da pilha fica no endereço $sp + 4 Assembly do MIPS Arquitetura Arquitetura RISC Operações aritméfcas uflizam registradores para operandos e resultados ufliza loads e stores para acesso à memória 32 registradores de propósito geral de 32 bits Vamos usar: $a0, $sp e $t1 (temporário) Leia a documentação do SPIM para maiores detalhes 18
19 Algumas instruções MIPS lw reg 1 offset(reg 2 ) Carrega uma palavra de 32 bits do endereço reg 2 + offset em reg 1 add reg 1 reg 2 reg 3 reg 1 ß reg 2 + reg 3 sw reg 1 offset(reg 2 ) Armazena o valor de reg 1 no endereço reg 2 + offset addiu reg1 reg2 imm reg1 ß reg2 + imm u significa unsigned (não verifica bit de overflow) li reg imm reg ß imm Exemplo: máquina de pilha assembly mips acc ß 7 li $a0 7 push acc sw $a0 0($sp) addiu $sp $sp - 4 acc ß 5 li $a0 5 acc ß acc + topo_da_pilha lw $t1 4($sp) add $a0 $a0 $t1 pop addiu $sp $sp 4 19
20 Generalizando Uma linguagem mais simples de inteiros e operações com inteiros: P à D; P D D à def id(args) = E ARGS à id, ARGS id E à int id if E 1 = E 2 then E 3 else E 4 E 1 + E 2 E 1 E 2 id(e 1,, E n ) Nossa pequena linguagem A primeira função definida, f, é a função main executar o programa para a entrada i significa calcular f(i) Um programa para calcular números de Fibonacci def fib(x) = if x = 1 then 0 else if x = 2 then 1 else fib(x- 1)+fib(x- 2) 20
21 Estratégia de geração de código Para cada expressão e, gerar código MIPS tal que: calcule o valor de e em $a0 preserve $sp e o conteúdo da pilha Vamos definir a função de geração de código cgen(e), cujo resultado será o código gerado para e Geração de Código para Constantes Para avaliar constantes, simplesmente copie o valor constante para o acumulador: cgen(i) = li $a0 i Isso preserva a pilha Esquema de cores: Vermelho: tempo de compilação Azul: tempo de execução 21
22 Geração de código para Add cgen(e1 + e2) = cgen(e1) sw $a0 0($sp) addiu $sp $sp - 4 cgen(e2) lw $t1 4($sp) add $a0 $t1 $a0 addiu $sp $sp 4 Observações O código do add é um template com buracos para a avalição das duas expressões A geração de código para a máquina de pilha é recursiva código para e 1 + e 2 é o código de e 1 e o código de e 2 montado Geração de código pode ser realizada como uma varredura recursiva na AST pelo menos para expressões! 22
23 Geração de código para Sub Nova instrução: sub reg 1 reg 2 reg 3 cgen(e1 - e2) = cgen(e1) sw $a0 0($sp) addiu $sp $sp - 4 cgen(e2) lw $t1 4($sp) sub $a0 $t1 $a0 addiu $sp $sp 4 Geração de código para condicionais Precisamos de instruções para controle de fluxo Nova instrução: beq reg 1 reg 2 label desvia para label se reg 1 = reg 2 Nova instrução: b label goto label 23
24 Geração de código para if cgen(if e1 = e2 then e 3 else e 4 ) = cgen(e1) sw $a0 0($sp) addiu $sp $sp - 4 cgen(e2) lw $t1 4($sp) addiu $sp $sp 4 beq $a0 $t1 true_branch false_branch: cgen(e4) b end_if true_branch: cgen(e3) end_if: Código para Procedimentos É preciso gerar código para o procedimento e para a chamada do procedimento Manutenção do registro de afvação Para a linguagem proposta, um RA simples é suficiente O resultado da função está no registrador Parâmetros no RA Para f(x 1,..., x n ) empilha x n,..., x 1 São as única variáveis da linguagem 24
25 O Registro de AFvação A funcionalidade em pilha garante que o $sp será o mesmo após a chamada da função Falta apenas o endereço de retorno Um apontador para o RA corrente é úfl UFliza registrador $fp Necessidade se tornará aparente Sumarizando Para a linguagem proposta: Apontador para o RA corrente Parâmetros reais Endereço de retorno é o suficiente f(x, y) sp retorno x y fp anfgo fp Registro de AFvação de f pilha 25
26 Geração de Código A sequencia de chamada são as instruções que organizam a invocação de uma função/ procedimento Uma nova instrução: jal label Goto para label, armazenando o endereço chamado no registrador $ra Na maioria das arquiteturas o endereço de retorno é armazenado diretamente na pilha pela instrução CALL Geração de código para a chamada cgen(f(e 1,..., e n )) = sw $fp 0($sp) addiu $sp $sp - 4 cgen(e n ) sw $a0 0($sp) addiu $sp $sp cgen(e 1 ) sw $a0 0($sp) addiu $sp $sp - 4 jal f_entry O chamador salva o valor do $fp anfgo Então empilha os parâmetros na ordem inversa E então realiza a chamada, salvando o endereço de retorno no registrador $ra Nesse momento o controle é transferido para a função sendo invocada 26
27 Geração de código para a definição cgen(def f(x1,..., xn) = e) = move $fp, $sp sw $ra 0($sp) addiu $sp $sp - 4 cgen(e) lw $ra 4($sp) addiu $sp $sp z lw $fp 0($sp) jr $ra Nova instrução jr reg goto para o endereço no registrador reg frame pointer está no fundo da pilha o procedimento, além de empilhar o endereço de retorno, precisa desempilhar os parâmetros e o RA ao final Manter o tamanho do RA em z nesse exemplo z = 4*n+8 Geração de código para variáveis ÚlFmo construtor da linguagem As variáveis são os parâmetros das funções Estão todas no AR Empilhadas pelo chamador Problema: Como a pilha cresce com temporários, as variáveis não estão a uma distância constante de $sp Solução: para isso serve o $fp cgen(x i ) = lw $a0 z($fp) (z = 4*i) 27
28 Sumarizando O Registro de AFvação deve ser projetado junto com o gerador de código A geração de código é um caminhamento recursivo na AST Recomenda- se uma máquina de pilha para o seu compilador COOL (simples) Sumarizando Um compilador de verdade faz coisas um pouco diferentes Ênfase em manter os valores em registradores (especialmente o frame atual) Valores intermediários são organizados no RA, e não simplesmente empilhados e desempilhados 28
29 Geração de Código para Objetos Linguagens orientadas a objetos se tornaram comuns Implementação delas acrescenta detalhes Aspecto fundamental: mecanismos de herança: Se uma classe B é subclasse de A, então qualquer método de A pode ser invocado para um objeto da classe B Ou seja, o código gerado para a classe A tem que rodar normalmente para objetos da classe B Dois aspectos Como representar os objetos na memória Como realizar a invocação dos métodos Dinâmica 29
30 Código Exemplo Class A { a: Int <- 0; d: Int <- 1; f(): Int { a <- a + d }; } Class B inherits A { b: Int <- 2; f(): Int { a }; g(): Int { a <- a b }; } Class C inherits A { c: Int <- 3; h(): Int {a <- a * c }; } Layout dos objetos Atributos a e d são herdados pelas classes B e C Todos os métodos em todas as classes referem- se a a Para os métodos da classe A funcionarem corretamente para objetos das classes A, B e C, então o atributo a tem que estar no mesmo lugar em cada objeto Pense em objetos como uma struct em C 30
31 Layout dos objetos Organizados em regiões conˆguas de memória Cada atributo está armazenado a um offset fixo do objeto Acrescenta- se os métodos para a invocação Class Tag Object Size Dispatch Pointer Atributo 1 Atributo 2 Dispatch Pointer Aponta pra uma tabela que contém os métodos de cada classe Especialização de métodos resolvido aqui Na chamada, gerar código para invocar o i- ésimo procedimento apontado por essa tabela. Cada objeto aponta para a tabela apropriada 31
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 maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisCompiladores Geração de Código
Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica
Leia maisPARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR
PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR Introdução Instruções são representadas em linguagem de máquina (binário) E x i s t e m l i n g u a g e n
Leia maisProcedimentos. Sistemas de Computação
Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem
Leia maisArquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções
Arquiteturas de Computadores Princípios e exemplos de conjuntos de instruções Características das aplicações Computação de desktop Ênfase em desempenho de programas com tipos de dados inteiros e ponto-flutuante
Leia maisAULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto
Leia maisProf. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO
Linguagem de Montagem Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO 1 Introdução Independente da linguagem de programação utilizada, todo programa
Leia maisCompiladores 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 maisAmbiente de tempo de Execução Cap. 7
Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap
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 maisNível da Arquitetura do Conjunto das Instruções
Fluxo Seqüencial de Controle e Desvios (1) Nível da Arquitetura do Conjunto das Instruções (Aula 13) Fluxo de Controle Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Fluxo
Leia maisConjunto de Instruções. Prof. Leonardo Barreto Campos 1
Conjunto de Instruções Prof. Leonardo Barreto Campos 1 Sumário Introdução; CISC; RISC; MIPS; Representação de Instruções; SPIM; Prof. Leonardo Barreto Campos 2/58 Sumário Operações Lógicas; Instruções
Leia maisRegistradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture
Registradores na Arquitetura MIPS 29/4/2016 MIPS - Instruction Set Architecture 1 Mapa de Memória da Arq. MIPS 2 GB 2 GB 256 MB 64 KB 2 GB 64 KB 256 4 MB 4 MB 29/4/2016 MIPS - Instruction Set Architecture
Leia maisInfraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento
Infraestrutura de Hardware Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de
Leia maisDisciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009
Prova P1 Aluno Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009 Valor das questões: 1) 3 pontos 2) 3 pontos 3) 4 pontos 1. O fragmento de
Leia maisSistemas Processadores e Periféricos Aula 2 - Revisão
Sistemas Processadores e Periféricos Aula 2 - Revisão Prof. Frank Sill Torres DELT Escola de Engenharia UFMG Adaptado a partir dos Slides de Organização de Computadores 2006/02 do professor Leandro Galvão
Leia 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 maisGuia Rápido MIPS. Tipos de Dados e Formatações
Tipos de Dados e Formatações Guia Rápido MIPS Tipos de Dados: Todas as instruções são de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocupa 1 byte na memória Um inteiro ocupa 1
Leia maisa) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 1. Um programa P foi compilado com um compilador
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisIntrodução à Geração de Código
MAB 471 2011.2 Introdução à Geração de Código http://www.dcc.ufrj.br/~fabiom/comp Forma do Código Definição Todas as propriedades do código que influenciam no desempenho Código em si, abordagens para diferentes
Leia maisAmbientes de Execução
Ambientes de Execução Organização da memória Ambientes totalmente estáticos, baseados em pilhas e totalmente dinâmicos Passagem de parâmetros Prof. Thiago A. S. Pardo 1 Ambientes de execução na estrutura
Leia maisAmbientes de Execução
Ambientes de execução na estrutura do compilador programa-fonte Ambientes de Execução Tabela de símbolos analisador léxico analisador sintático Organização da memória Ambientes totalmente estáticos, baseados
Leia maisArquitecturas Alternativas. Java Virtual Machine
Arquitecturas Alternativas Java Virtual Machine Compilação da linguagem Java A linguagem Java é uma linguagem interpretada que é executada por uma máquina virtual software denominada JVM (Java Virtual
Leia maisMICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018
MICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018 MATERIAL DIDÁTICO Harris & Harris 6.4.6 Procedure Calls Patterson & Hennessy (4a edição) 2.8 Supporting Procedures in Computer
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 maisÉ um sinal elétrico periódico que é utilizado para cadenciar todas as operações realizadas pelo processador.
Universidade Estácio de Sá Curso de Informática Disciplina de Organização de Computadores II Prof. Gabriel P. Silva - 1 o Sem. / 2005 2 ª Lista de Exercícios 1) O que é o relógio de um sistema digital?
Leia maisHistórico de desenvolvimento de computadores Prof. Luís Caldas Aula 02 Processador de uso geral
Processador de uso geral 1. Introdução: Um sistema digital completo é constituído de uma unidade controle e o bloco operacional. Na figura a seguir alguns elementos externos necessários para completar
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 Operações Lógicas Embora os primeiros computadores se concentrassem em words completas, logo ficou claro que era útil atuar sobre
Leia maisOrganização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções
Capítulo 2 Hennessy Patterson 1 Instruções Linguagem da máquina Vamos trabalhar com a arquitetura do conjunto de instruções MIPS (Micrrocessor without interlocked pipeline stages Micrrocessador sem estágios
Leia maisRelembrando desempenho...
Parte 5 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, 2ª e 3ª Ed. e do Livro do 5ª Ed. A parte final do material corresponde às aulas
Leia maisUniversidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang
Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever
Leia 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 maisRelembrando desempenho...
Parte 5 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, 2ª e 3ª Ed. e do Livro do 5ª Ed. A parte final do material corresponde às aulas
Leia maisCompiladores. Bruno Lopes. Bruno Lopes Compiladores 1 / 32. Instituto de C
ompiladores Introdução Bruno Lopes Bruno Lopes ompiladores 1 / 32 Apresentação Em que período estão? O quanto sabem de programação? Quais linguagens? O quanto sabem de unix? O quanto sabem de Linguagens
Leia maisFaculdade de Computação
Faculdade de Computação Arquitetura e Organização de Computadores 2 1 a Laboratório de Programação MIPS entrega 03/05/2018 Prof. Cláudio C. Rodrigues Problemas: P1) Execute as conversões abaixo: a) Converta
Leia maisOperações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.
GBC036 Arq. e Org. Computadores I Operações Controle Fluxo e Acesso a Memória Na Aula Anterior... Instruções aritméticas em Z; Formato e Codificação Instruções; Overflow e unrflow; Instruções aritméticas
Leia maisO que é uma variável?
Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para
Leia mais1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x
Prova P1 Disciplina: Organização de Computadores Professor: Ney Laert Vilar Calazans Aluno: 14/setembro/2012 Lista de associação de números e mnemônicos para os registradores do MIPS Número (Decimal) Nome
Leia maisCompiladores. Gerência de Memória
Compiladores Gerência de Memória 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 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 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. Msc. Tiago Alves de Oliveira Objetivos Conhecer o processador Compreender os registradores
Leia maisCompiladores. Geração de Código Objeto
Compiladores Geração de Código Objeto Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Arquivo de destino Análise Otimização Geração de Código Intermediário Geração de Código Final Síntese
Leia maisORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 04: ASPECTO BÁSICO DO PROJETO DE UMA CPU SIMPLES E LINGUAGEM DE MONTAGEM Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia
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 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 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 maisAula 19: UCP: Construindo um Caminho de Dados (Parte III)
Aula 19: UCP: Construindo um Caminho de Dados (Parte III) Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Caminho de Dados (III) FAC 1 /
Leia mais1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é
1. A pastilha do processador Intel 80486 possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é organizado com mapeamento associativo por conjuntos de quatro
Leia maisInfraestrutura de Hardware. Implementação Multiciclo de um Processador Simples
Infraestrutura de Hardware Implementação Multiciclo de um Processador Simples Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e
Leia maisSSC0114 Arquitetura de Computadores
SSC0114 Arquitetura de Computadores 3ª Aula Arquitetura MIPS: ISA, Formato das instruções e Modos de endereçamento MIPS Monociclo: Caminho de Dados e Unidade de Controle Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br
Leia maisConjunto de Instruções MIPS Parte IV
Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Parte IV Transferência de Dados Lógicas Controle Suporte a procedimentos Prof. Sérgio Adaptado dos slides de Sistemas Processadores
Leia maisMicrocontrolador Assembly UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk
Assembly 8051 Num sistema microprocessado, geralmente, não existe um sistema operacional; O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso
Leia maisInfraestrutura de Hardware. Implementação Monociclo de um Processador Simples
Infraestrutura de Hardware Implementação Monociclo de um Processador Simples Componentes de um Computador Unid. Controle Controle Memória Registradores PC MAR IR AC Programa + Dados Instrução Endereço
Leia maisUnidade de Controle. UC - Introdução
Unidade de Controle Prof. Alexandre Beletti (Cap. 3 Weber, Cap.8 Monteiro, Cap. 10,11 Stallings) UC - Introdução Para gerenciar o fluxo interno de dados e o instante em que ocorrem as transferências entre
Leia maisIII.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 maisProjeto de Linguagem. Linguagens de Programação
Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem
Leia maisConceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 07 (rogerio@prudente.unesp.br) Aula 7 Implementação
Leia maisProcedimentos e Gestão de Subrotinas
5 Procedimentos e Gestão de Subrotinas Wait a minute, Doc. Are you telling me you built a time machine out of a DeLorean? Marty McFly para o Dr. Brown no filme de 1985, Back to the future O desenho de
Leia maisCAP. VII GERAÇÃO DE CÓDIGO
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,
Leia maisCAPÍTULO 4 CAMINHO DE DADOS E CONTROLE
CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE Introdução Uma implementação MIPS básica Sinopse da implementação Sinais de controle Multiplexadores (muxes) Implementação monociclo Metodologia de clocking Construindo
Leia maisAmbientes de Execução (Run-time system)
Ambientes de Execução (Run-time system) Organização da memória 3 tipos: totalmente estático (Fortran77), baseado em pilhas (C, C++, Pascal), totalmente dinâmico (LISP) Características de Fortran77, C,
Leia maisInfraestrutura de Hardware. Funcionamento de um Computador
Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é
Leia maisTópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10
Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL É A INTERFACE ENTRE
Leia maisOrganização e Arquitetura de Computadores I
Universidade Federal de Campina Grande Departamento de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização e Arquitetura Básicas
Leia maisUNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO
UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Sistemas de Computação 2016.2 Profa.: Simone Martins Lista 1 - Gabarito 1. Um programa P foi compilado com
Leia 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-1 Objetivos Conhecer o processador Compreender os registradores
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 maisImplementando subprogramas
Implementando subprogramas 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 maisAnálise Semântica e Representação Intermédia
Análise Semântica e Representação Intermédia Compiladores Cristina C. Vieira 1 Descritores O que contêm? Informação utilizada para geração de código e análise semântica Descritores locais - nome, tipo,
Leia maisAnálise Semântica. Eduardo Ferreira dos Santos. Outubro, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 40
Análise Semântica Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Outubro, 2016 1 / 40 Sumário 1 Conceitos 2 A linguagem Cool 3 Análise semântica Símbolos Tipos
Leia maisSCC Capítulo 2 Recursão
SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
Leia maisOrganização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Linguagem de Montagem Slide 1 CISC RISC MIPS Organização e Arquitetura de Computadores I Sumário Representação de instruções Slide 2 CISC O CISC (Complex Instruction
Leia maisImplementação da UCP. Construção do caminho de dados Controle Implementação monociclo. Organização de Computadores
Implementação da UCP Construção do caminho de dados Controle Implementação monociclo Conceitos Gerais para Implementação do Processador Conceito de caminho de dados e controle Caminho dos bits de instrução
Leia maisUniversidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação. Arquitetura de Computadores I. Organização Básica do Computador
Universidade Federal do Rio de Janeiro Bacharelado em Ciência da Computação Arquitetura de Computadores I Organização Básica do Computador Gabriel P. Silva Ementa Unidade 2: Organização Lógica e Funcional
Leia maisArquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade
Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aulas 06 e 07 Superescalaridade 1. Introdução princípios
Leia maisArquitectura de Computadores ARQC MIPS. Serviços de Sistemas Exemplos. Serviços de Sistema
Arquitectura de Computadores ARQC MIPS Serviços de Sistemas Exemplos Serviços de Sistema Exemplo 1 Somar duas variáveis veis em um registrador register int a=1, b=3, c; c = a + b; (usar os códigos c de
Leia maisInformática I. Aula 9. Aula 9-17/05/2006 1
Informática I Aula 9 http://www.ic.uff.br/~bianca/informatica1/ Aula 9-17/05/2006 1 Ementa Histórico dos Computadores Noções de Hardware e Software Microprocessadores Sistemas Numéricos e Representação
Leia maisGerência de memória II
Gerência de memória II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 48 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas
Leia maisMIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS
Datapath do MIPS MIPS Implementação Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS Instruções de leitura (load lw) e de escrita (store sw) Instruções aritméticas e lógicas
Leia maisDo alto-nível ao assembly
Do alto-nível ao assembly Compiladores Cristina C. Vieira 1 Viagem Como são implementadas as estruturas computacionais em assembly? Revisão dos conceitos relacionados com a programação em assembly para
Leia maisInstruçõ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 maisUCP: Construindo um Caminho de Dados (Parte III)
UCP: Construindo um Caminho de Dados (Parte III) Cristina Boeres Instituto de Computação (UFF) Fundamentos de Arquiteturas de Computadores Material baseado nos slides do Fernanda Passos Cristina Boeres
Leia maisCONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP)
CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR (UCP) 1 LINGUAGENS Conhecida pelo PROCESSADOR Conhecida pelo Usuário COMPILADOR LINGUAGEM DE ALTO NÍVEL LINGUAGEM ASSEMBLY 2 INSTRUÇÕES EM ASSEMBLY Para programar
Leia mais4. Modelo de Programação do DLX Introdução
4. Modelo de Programação do DLX Quero que o matemático Beremiz Samir nos conte uma lenda, ou uma simples fábula, na qual apareça uma divisão de 3 por 3 indicada, mas não efetuada, e outra de 3 por 2, indicada
Leia maisArquitetura 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 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 maisSCC Algoritmos e Estruturas de Dados I
SCC 202 - Algoritmos e Estruturas de Dados I TAD Pilha Lembrem...TADs são tipos definidos em termos de seu comportamento e não de sua representação (que pode variar na busca de eficiência) 12/8/2010 Pilha
Leia maisMAB Análise Semântica. Monday, October 10, 11
MAB 471 2011.2 Análise Semântica http://www.dcc.ufrj.br/~fabiom/comp Além da Sintaxe Há um nível de corretude além da gramática foo(a,b,c,d) { int a, b, c, d; bar() { int f[3],g[0], h, i, j, k; char *p;
Leia maisCAP. VII GERAÇÃO DE CÓDIGO
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,
Leia maisINE5421 LINGUAGENS FORMAIS E COMPILADORES
INE5421 LINGUAGENS FORMAIS E COMPILADORES PLANO DE ENSINO Objetivo geral Conhecer a teoria das linguagens formais visando sua aplicação na especificação de linguagens de programação e na construção de
Leia maisUm Exemplo de Nível ISA: o IJVM. Pilhas. Pilhas. O Modelo de Memória da IJVM. Pilhas de Operandos. Nível ISA
Ciência da Computação Arq. e Org. de Computadores Nível ISA Prof. Sergio Ribeiro Um Exemplo de Nível ISA: o IJVM Objetivo: Introduzir um nível ISA (Instruction Set Architecture), a ser interpretado pelo
Leia maisOrganização de Computadores
Organização de Computadores Aula 25 Conjunto de Instruções: Características e Funções Rodrigo Hausen 10 de novembro de 2011 http://cuco.pro.br/ach2034 1/92 Apresentação 1. Bases Teóricas 2. Organização
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 maisTópicos: 1 - Modos de endereçamento do Pilha e instruções de Pilha. 3 - Instruções que usam pilha: - instrução CALL - instrução RET
Tópicos: 1 - Modos de endereçamento do 8051 2 - Pilha e instruções de Pilha 3 - Instruções que usam pilha: - instrução CALL - instrução RET 4 - Interrupção 1 - Modos de Endereçamento do 8051 Os modos de
Leia maisçã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 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 mais