Geração e Otimização de Código (continuação)
|
|
|
- Gabriella Canário de Andrade
- 9 Há anos
- Visualizações:
Transcrição
1 Geração e Otimização de Código (continuação) Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Geração de código Código de 3 endereços 2*a+(b-3) t1 = 2 * a t2 = b - 3 t3 = t1 + t2 P-código 2*a+(b-3) 2 1
2 Geração de código Como se gera o código (intermediário ou final) para um programa? 1. Gramática de atributos 2. Procedimentos/funções de geração Baseados na gramática de atributos definida Ou ad hoc 3 Gramática de atributos Exemplo de gramática de atributos para geração do P-código (atributo pcod) exp id = exp + (exp) num id Concatena e não pula linha Valor da cadeia Concatena e pula linha 4 2
3 Gramática de atributos Exercício: analise a cadeia (x=x+3)+4 exp id = exp + (exp) num id Concatena e não pula linha Valor da cadeia Concatena e pula linha 5 exp + 4 ( exp ) x = exp + 3 x 6 3
4 pcod=lda x lod x ldc 3 stn ldc 4 pcod=lda x lod x ldc 3 stn pcod=lda x lod x ldc 3 stn pcod=lda x lod x ldc 3 stn pcod=lod x pcod=lod x exp + ( exp ) x = exp x pcod=ldc 4 pcod=ldc 3 pcod=lod x ldc 3 pcod=lod x ldc 3 pcod=lda x lod x ldc 3 stn ldc 4 7 Gramática de atributos Exemplo de gramática de atributos para geração do código de 3 endereços (atributo tacode) exp id = exp + (exp) num id Gera novo nome temporário, que é guardado no atributo nome Cadeia vazia 8 4
5 Gramática de atributos Exercício: analise a cadeia (x=x+3)+4 exp id = exp + (exp) num id Gera novo nome temporário, que é guardado no atributo nome Cadeia vazia 9 exp + 4 ( exp ) x = exp + 3 x 10 5
6 name=t2 tacode= t1=x+3 x=t1 t2=t1+4 exp name=t2 tacode= t1=x+3 x=t1 t2=t1+4 name=t1 tacode= t1=x+3 x=t1 + 4 name=4 tacode= name=t1 tacode= t1=x+3 x=t1 ( exp ) x = exp name=t1 tacode= t1=x+3 name=t1 tacode= t1=x+3 x=t1 name=x tacode= name=x tacode= x + 3 name=3 tacode= name=t1 tacode= t1=x+3 11 Geração de código Gramática de atributos Útil para apresentar com clareza as relações entre as sequências de código de diferentes partes da árvore sintática e para comparar diferentes métodos de geração de código... mas não é prática, pois Grande quantidade de cópia de cadeias e desperdício de memória É desejável que se gerem pequenos trechos de código a medida que se analisa a cadeia e que se gravem esses trechos em um arquivo ou em outra estrutura de dados A gramática de atributos pode ficar muito complicada 12 6
7 Procedimentos/funções para geração de código Com base na gramática de atributos e na árvore sintática Similar à forma que se fazia a análise semântica Aparência geral de um procedimento nessa linha (que deve ser instanciado de acordo com a geração de código pretendida) procedure gencod(t: nó-árvore); begin if T não é nulo then gere código de preparação para T; gencod(filho à esquerda de T); gere código de preparação para T; gencod(filho à direita de T); gere código para implementação de T; end; 13 Procedimentos/funções para geração de código Com base na gramática de atributos e na árvore sintática Similar à forma que se fazia a análise semântica Exemplo instanciado básico para a gramática anterior procedure gencod(t: nó-árvore); begin if T não é nulo then if ( + ) then gencode(t->leftchild); gencode(t->rightchild); write( ); else if ( = ) then write( lda +id.strval); gencode(t->rightchild); write( stn ); else if ( num ) then write( ldc +num.strval); else if ( id ) then write( lod +id.strval); end; exp id = exp + 14 (exp) num id 7
8 Procedimentos/funções para geração de código Solução ad hoc Geração de código amarrada aos procedimentos sintáticos função (Seg): string; Início declare cod: string; se (simbolo= ( ) então fim fim senão se (simbolo= num ) então senão se (simbolo= id ) então senão ERRO(Seg); retorne cod; inicio obtem_simbolo(cadeia,simbolo); cod=exp(seg+{ ) }); se (simbolo= ) ) então obtem_simbolo(cadeia,simbolo); senão ERRO(Seg); inicio cod= ldc +cadeia; obtem_simbolo(cadeia,simbolo); fim inicio cod= lod +cadeia; obtem_simbolo(cadeia,simbolo); fim (exp) num 15id Procedimentos/funções para geração de código Solução ad hoc Geração de código amarrada nos procedimentos sintáticos Alternativamente, podem-se chamar outras funções e procedimentos (com ou sem parâmetros que indiquem que código gerar) que gerem o código, em vez de embutir a geração diretamente no próprio procedimento sintático 16 8
9 Geração de código Ponto importante O código-alvo (objeto) desejado pode ser similar ao P-código ou outra linguagem de montagem qualquer (caso da LALG) Nesse caso, um montador também é necessário 17 Geração de código Geração de código-alvo a partir do código intermediário Passo necessário se código intermediário é utilizado e é diferente do código-alvo desejado Pode ser um processo complicado se o código intermediário não contém informações da máquina-alvo e de seu ambiente de execução 18 9
10 Geração de código Geração de código-alvo a partir do código intermediário Em geral, dependendo do código com que se está lidando, se requer uma ou ambas destas técnicas: expansão de macros e simulação estática Expansão de macros: encara cada linha de código como uma macro e a substitui por uma porção de código correspondente do código-alvo Pode gerar código ineficiente ou redundante Simulação estática: requer uma simulação direta dos efeitos do código intermediário e a geração do código-alvo correspondente a estes efeitos Pode ser muito simples ou muito sofisticada 19 Geração de código Exemplo de expansão de macro Supondo que temos código de três endereços como código intermediário e queremos o P-código como códigoalvo A expressão a=b+c pode ser substituída pela sequência abaixo lda a lod b (ou ldc b, se b é constante) lod c (ou ldc c, se c é constante) sto 20 10
11 Geração de código Exemplo de expansão de macro Supondo que temos código de três endereços como código intermediário e queremos o P-código como códigoalvo t1 = x + 3 x = t1 t2 = t Geração de código Exemplo de simulação estática Supondo que temos P-código como código intermediário e queremos o código de três endereços como código-alvo Precisamos gerar os temporários e, por isso, é necessário que se simule a pilha e seu funcionamento Processando as 3 primeiras instruções 22 11
12 Geração de código Exemplo de simulação estática Supondo que temos P-código como código intermediário e queremos o código de três endereços como código-alvo Precisamos gerar os temporários e, por isso, é necessário que se simule a pilha e seu funcionamento Processando Código de três endereços: t1 = x Geração de código Exemplo de simulação estática Supondo que temos P-código como código intermediário e queremos o código de três endereços como código-alvo Precisamos gerar os temporários e, por isso, é necessário que se simule a pilha e seu funcionamento Processando stn Código de três endereços: t1 = x + 3 x = t
13 Geração de código Exemplo de simulação estática Supondo que temos P-código como código intermediário e queremos o código de três endereços como código-alvo Precisamos gerar os temporários e, por isso, é necessário que se simule a pilha e seu funcionamento Processando ldc 4 Código de três endereços: t1 = x + 3 x = t1 25 Geração de código Exemplo de simulação estática Supondo que temos P-código como código intermediário e queremos o código de três endereços como código-alvo Precisamos gerar os temporários e, por isso, é necessário que se simule a pilha e seu funcionamento Processando Código de três endereços: t1 = x + 3 x = t1 t2 = t
14 Otimizando código 27 Otimização Definição: processo de se melhorar a qualidade do código gerado pelo compilador Nome enganoso, pois é raro se gerar o código ótimo Qualidade de código pode ser medida por vários ângulos Quais? 28 14
15 Otimização Definição: processo de se melhorar a qualidade do código gerado pelo compilador Nome enganoso, pois é raro se gerar o código ótimo Qualidade de código pode ser medida por vários ângulos Velocidade Tamanho do código Memória utilizada para temporários 29 Otimização Análise do código e de sua execução permitem determinar o que otimizar Algumas técnicas de otimização são simples e impactantes Algumas são caras (em termos de tempo), complexas e com pouco ganho Há muitas técnicas de otimização, algumas boas para algumas linguagens, outras não O projetista do compilador deve fazer esse julgamento! 30 15
16 Otimização Principais fontes de otimização de código Alocação de registradores: quanto mais e melhor usados, maior a velocidade Operações desnecessárias Expressões de valores invariáveis, mas avaliadas várias vezes no programa Código inatingível ou morto (por exemplo, if com condição falsa sempre ou procedimento nunca ativado) Saltos para outros saltos (poderia ir direto) 31 Otimização Principais fontes de otimização de código Operações caras Redução de força: trocam-se expressões caras por mais baratas (por exemplo, multiplicação por 2 pode ser implementada como uma transposição) Empacotamento e propagação de constantes: reconhecimento e troca de expressões constantes pelo valor calculado (por exemplo, troca-se 2+5 por 7) Procedimentos: pode-se melhorar fazendo-se alinhamento de procedimentos (inserção de seus códigos no corpo do programa), identificação e remoção de recursão de cauda Uso de dialetos de máquina: instruções mais baratas oferecidas por máquinas específicas Previsão do comportamento do programa Conhecimento do comportamento do programa para otimizar saltos, laços e procedimentos ativados mais frequentemente 32 16
17 Otimização Tipos de otimização Quanto ao instante em que são realizadas Quanto à área do programa em que se aplicam Quanto ao instante Empacotamento de constantes pode ser feito durante análise sintática Otimização de saltos poderia ser feita após a geração do código-alvo Otimizações de buraco de fechadura (veem-se apenas pequenas porções de código) 33 Otimização Quanto ao instante A maioria das otimizações é feita sobre o código intermediário ou durante a geração do códigoalvo Otimizações de nível de fonte: depende do programa (por exemplo, quantas vezes as variáveis são acessadas determina quais variáveis ficarão em registradores) Otimizações de nível de alvo: depende da máquina-alvo e do ambiente de execução (por exemplo, número de registradores disponíveis) 34 17
18 Otimização Quanto ao instante Análise do efeito de uma otimização sobre outras Faz sentido propagar constantes antes de tratar código inatingível (pode ser mais fácil identificá-los) x=1;... y=0;... if (y) x=0;... Propagação de constantes x=1; Remoção de... código inatingível y=0;... if (0) x=0;... x=1;... y=0; Otimização Quanto à área do programa Otimizações locais: que se aplicam a segmentos de código de linha reta, ou seja, que não contêm saltos para dentro ou fora da sequência; sequência maximal de código de linha reta é chamada bloco básico Relativamente fáceis de efetuar Otimizações globais: que se estendem para além dos blocos básicos, mas que sejam confinadas a um procedimento individual Exigem análise de fluxo de dados Otimizações interprocedimentos: que se estendem para além dos limites dos procedimentos, podendo atingir o programa todo As mais complexas, exigindo diversos tipos de informações e rastreamentos do programa 36 18
19 Para estudar em casa Pesquisar sobre bytecode, o código intermediário de java Fazer/responder Como é o código? Características do código, que estilo segue (P-código ou 3 endereços)? Exemplos É independente ou assume a existência de alguma organização de memória (pilha)? 37 19
Geração e Otimização de Código
Geração e Otimização de Código Representação de código intermediária Código de três endereços, P-código Técnicas para geração de código Otimização de código Prof. Thiago A. S. Pardo 1 Estrutura geral de
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
Linguagens de Programação:
Capítulo I : Noções Gerais 11 Linguagens de Programação: Como comunicar com o computador? Linguagem Máquina: Conjunto básico de instruções, em código binário, características de cada computador, correspondentes
Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão
MC3305 Algoritmos e Estruturas de Dados II Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão Prof. Jesús P. Mena-Chalco [email protected] 2Q-2015 1 Custo de um algoritmo
Árvores Parte 1. Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos
Árvores Parte 1 Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos Árvores uma introdução As listas apresentadas na aula anterior formam um conjunto de TADs extremamente importante
Fundamentos de Arquitetura e Organização de Computadores
Fundamentos de Arquitetura e Organização de Computadores Dois conceitos fundamentais no estudo dos sistemas de computação são o de Arquitetura e Organização de computadores. O termo arquitetura refere-se
03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral.
01. [Sebesta, 2000] Defina sintaxe e semântica. 02. [Sebesta, 2000] A quem se destinam as descrições de linguagem? 03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral. 04. [Sebesta,
Do alto-nível ao assembly
Do alto-nível ao assembly Compiladores Cristina C. Vieira 1 Viagem Como são implementadas as estruturas computacionais em assembly? Revisão dos conceitos relacionados com a programação em assembly para
Programação de Computadores I. Linguagem C Função
Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,
COMPUTAÇÃO. O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD:
COMPUTAÇÃO QUESTÃO DISCURSIVA 1 O estudante deve ser capaz de apontar algumas vantagens dentre as seguintes, quanto à modalidade EaD: (i) flexibilidade de horário e de local, pois o aluno estabelece o
Um Tradutor Dirigido por Sintaxe
Um tradutor dirigido por sintaxe 1 Um Tradutor Dirigido por Sintaxe Aula introdutória às técnicas de compilação. Ilustra técnicas desenvolvendo um programa Java que traduz instruções de uma linguagem de
Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz
Algoritmos e Programação : Conceitos e estruturas básicas Hudson Victoria Diniz Relembrando... Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar
Projetando um Computador Parte II Arquitetura do Processador BIP
Projetando um Computador Parte II Arquitetura do Processador BIP Prof. Dr. Cesar Albenes Zeferino ([email protected]) Objetivo Projetando um Computador Parte II (2) Apresentar as noções do funcionamento
Projetando um Computador
Objetivo Projetando um Computador Parte II (2) Projetando um Computador Parte II Arquitetura do Processador BIP Apresentar as noções do funcionamento de um computador através da descrição da arquitetura
Orientação a Objetos
Orientação a Objetos 1. Manipulando Atributos Podemos alterar ou acessar os valores guardados nos atributos de um objeto se tivermos a referência a esse objeto. Os atributos são acessados pelo nome. No
Arquitetura de Computadores - Operação da Unidade de Controle. por Helcio Wagner da Silva
Arquitetura de Computadores - Operação da Unidade de Controle por Helcio Wagner da Silva Microoperações Execução de programa... Ciclo de instrução Ciclo de instrução Ciclo de instrução Busca Indireto Execução
http://www.ic.uff.br/~boeres/fac.html! Conteúdos: Debora, Edcarllos, livros! slides disponíveis!
http://www.ic.uff.br/~boeres/fac.html! 1 Conteúdos: Debora, Edcarllos, livros! slides disponíveis! Unidade central de Processamento realiza operações básicas codificadas em 0s e 1s instrução contém código
Análise Léxica. Sumário
Análise Léxica Renato Ferreira Sumário Definição informal de Análise Léxica Identifica tokens numa string de entrada Alguns detalhes Lookahead Ambiguidade Especificação de Analisadores Léxicos Expressões
1 Introdução. 1.1 Importância da Utilização da Amostragem
1 Introdução Um dos principais objetivos da maioria dos estudos, análises ou pesquisas estatísticas é fazer generalizações seguras com base em amostras, sobre as populações das quais as amostras foram
Avaliação e Desempenho Aula 1 - Simulação
Avaliação e Desempenho Aula 1 - Simulação Introdução à simulação Geração de números aleatórios Lei dos grandes números Geração de variáveis aleatórias O Ciclo de Modelagem Sistema real Criação do Modelo
2. Tipos Abstratos de Dados
2. Tipos Abstratos de Dados Um Tipo Abstrato de Dados especifica uma classe de dados definida pelo usuário em termos de suas propriedades abstratas Esta especificação do TAD descreve o comportamento de
Construção de uma via de dados, abordagem monociclo, multiciclo e pipeline
INSTITUTO FEDERAL DO RIO GRANDE DO NORTE DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO CURSO SUPERIOR DE TECNOLOGIA EM REDES DE COMPUTADORES DISCIPLINA: ORGANIZAÇÃO DE COMPUTADORES Construção
Árvores de Derivação para GLC Ambigüidade nas GLC Precedência, Prioridade e Associatividade de operadores
Árvores de Derivação para GLC Ambigüidade nas GLC Precedência, Prioridade e Associatividade de operadores 1 Árvores de Derivação para GLC GLC são as mais importantes para a definição de linguagens de programação
Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante
Microcontroladores e Microprocessadores Conversão de Bases Prof. Samuel Cavalcante Conteúdo Conversão de Qualquer base para Decimal Decimal para Binário Hexadecimal para binário Componentes básicos de
1.1. Definição do Problema
13 1 Introdução Uma das principais preocupações de área de engenharia de software diz respeito à reutilização [1]. Isso porque a reutilização no contexto de desenvolvimetno de software pode contribuir
Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?
Resumo. O uso de uma variável é necessário quando você não sabe ainda um valor ou uma função, ou seja, quando há uma situação de mudança que impede a determinação direta destes valores. Uma variável pode
INF1005: Programação I. Algoritmos e Pseudocódigo
INF1005: Programação I Algoritmos e Pseudocódigo Tópicos Principais Definição de Algoritmo Exemplos Básicos Formas de representação Condicionais Exemplos com Condicionais Repetições Exemplos com Repetições
ANVISA BPF, PROCESSO DE FABRICAÇÃO E SISTEMA DE CODIFICAÇÃO. Artur J. Gradim. SÃO PAULO 28 DE Agosto de 2006
ANVISA BPF, PROCESSO DE FABRICAÇÃO E SISTEMA DE CODIFICAÇÃO Artur J. Gradim SÃO PAULO 28 DE Agosto de 2006 PORQUE BOAS PRÁTICAS E NÃO SÓ PRÁTICAS BOAS: (Plural feminino do adjetivo bom) Bom: que tem todas
Gramáticas Livres de Contexto
Conteúdo da aula Gramáticas Livres de Contexto Marcelo Johann Trabalho - primeira etapa Definição, código e estrutura Mais elementos e detalhes de lex GLCs Gramática, produção, derivações, árvores Ambíguas,
UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO
UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO SAD Sistemas de Apoio à Decisão 2011/02 Aula Cinco [email protected] Modelos de decisão Sistemas de
Organização e Arquitetura de Computadores I
Organização e Arquitetura de Computadores I Evolução e Desempenho dos Computadores Slide 1 Conceitos Arquitetura do Computador Refere-se aos atributos que são visíveis para o programador. Ex: conjunto
Método Simplex Revisado
Método Simplex Revisado Prof. Fernando Augusto Silva Marins Departamento de Produção Faculdade de Engenharia Campus de Guaratinguetá UNESP www.feg.unesp.br/~fmarins [email protected] Introdução Método
Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.
Introdução Software Básico Aula 3 Prof. Dr. Rogério Vargas http://rogerio.in Provocação Você já se perguntou como é que os programas que você escreve são traduzidos em instruções executáveis pelas estruturas
Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada. [email protected], [email protected].
Teoria dos Grafos Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada [email protected], [email protected] Grafos e Algoritmos Preparado a partir do texto: Rangel, Socorro.
CRIANDO MAPAS TEMÁTICOS COM SETORES CENSITÁRIOS DE SÃO PAULO
CRIANDO MAPAS TEMÁTICOS COM SETORES CENSITÁRIOS DE SÃO PAULO 1. Unificar as informações de interesse em uma única planilha Neste exemplo, temos os seguintes dados da Capital de São Paulo: Coluna A Código
Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo
Algoritmos e Estruturas de Dados I Variáveis Indexadas Pedro O.S. Vaz de Melo Por que índices são importantes? Como uma loja de sapatos artesanais deve guardar os seus produtos? 1 2 3 4 Tamanhos entre
Introdução à Algoritmos. Aula 11
Introdução à Algoritmos Aula 11 Um programa de computador é um produto resultante da atividade intelectual. Essa atividade depende de um treinamento prévio em abstração e modelagem de problemas, bem como
Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V. 2009-1
Curso de Sistemas de Informação 8º período Disciplina: Tópicos Especiais Professor: José Maurício S. Pinheiro V. 2009-1 Aula 5 Sistemas Biométricos 1. Sistema Biométrico Típico Qualquer que seja a característica
Qualidade de Produto. Maria Cláudia F. P. Emer
Qualidade de Produto Maria Cláudia F. P. Emer Introdução Qualidade diretamente ligada ao produto final Controle de qualidade Adequação do produto nas fases finais no processo de produção Software Atividades
OBSERVAÇÕES: EXERCÍCIOS
OBSERVAÇÕES: 1. Esta lista de exercícios poderá ser resolvida individualmente ou em grupos de 2 pessoas. 2. A lista possui 25 exercícios, destes você deve responder os 5 primeiros exercícios e os outros
Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação
Aula Extra Depurador Code::Blocks Monitoria de Introdução à Programação Depurador - Definição Um depurador (em inglês: debugger) é um programa de computador usado para testar outros programas e fazer sua
Análise de algoritmos. Parte II
Análise de algoritmos Parte II 1 Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas e decidir quais são os melhores Empírica ou teoricamente É desejável e possível
Sistemas de Tempo Real
Escola de Computação 2000 - IME-USP Sistemas de Tempo Real Jean-Marie Farines Joni da Silva Fraga Rômulo Silva de Oliveira LCMI - Laboratório de Controle e Microinformática DAS - Departamento de Automação
Arquiteturas para Sistemas Distribuídos I
Arquiteturas para Sistemas Distribuídos I Pedro Ferreira Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Tópicos Estilos Arquiteturais: formas de desenhar o software do SD Organização
Compiladores II. Fabio Mascarenhas - 2016.2.
Compiladores II Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/comp2 Objetivo Durante esse curso iremos revisitar as técnicas de implementação de linguagens de programação Veremos novas técnicas
Universidade Federal da Paraíba Centro de Informática Departamento de Informática
Universidade Federal da Paraíba Centro de Informática Departamento de Informática Disciplina: Introdução à Programação Horário: T08002, I08002 Sala: CISB01 T10002, I10002 Sala: CI304 Número de Créditos:
MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.
MANUAL DO USUÁRIO SIMPLEX Prof. Erico Fagundes Anicet Lisboa, M. Sc. [email protected] Versão digital disponível na internet http://www.ericolisboa.eng.br RIO DE JANEIRO, RJ - BRASIL DEZEMBRO DE
Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO
Linguagem de Montagem Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO 1 Introdução Independente da linguagem de programação utilizada, todo programa
Caminho de Dados e Controle. Prof. Leonardo Barreto Campos 1
Caminho de Dados e Controle Prof. Leonardo Barreto Campos 1 Sumário Introdução; Convenções Lógicas de Projeto; Construindo um Caminho de Dados; O Controle da ULA; Projeto da Unidade de Controle Principal;
Árvores Splay. Mestrado em Ciência da Computaçã. ção Estruturas de Dados Prof. Dr. Paulo Roberto Gomes Luzzardi Aluna: Nelsi Warken
Árvores Splay Mestrado em Ciência da Computaçã ção Estruturas de Dados Prof. Dr. Paulo Roberto Gomes Luzzardi Aluna: Nelsi Warken Características Inventada por Adel' son Vel' skii e Landis - 1962. Estudos
Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;
Módulo 7 UML Na disciplina de Estrutura de Sistemas de Informação, fizemos uma rápida passagem sobre a UML onde falamos da sua importância na modelagem dos sistemas de informação. Neste capítulo, nos aprofundaremos
Interpretações de Qualidade de Software. Interpretações de Qualidade de Software. Aspectos Importantes das Definições de Qualidade
terpretações de de é um termo que pode ter diferentes interpretações e para se estudar a qualidade de software de maneira efetiva é necessário, inicialmente, obter um consenso em relação à definição de
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 14: Ordenação: QuickSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: [email protected]
Calculando seno(x)/x com o interpretador Hall.
Calculando seno(x)/x com o interpretador Hall. Problema Seja, por exemplo, calcular o valor do limite fundamental f(x)=sen(x)/x quando x tende a zero. Considerações Fazendo-se a substituição do valor 0
7. Funções de Lógica Combinacional. 7. Funções de Lógica Combinacional 1. Somadores Básicos. Objetivos. Objetivos. Circuitos Digitais 03/11/2014
Objetivos 7. Funções de Lógica Combinacional Fazer distinção entre meio-somadores e somadores-completos Usar somadores-completos para implementar somadores binários em paralelo Explicar as diferenças entre
Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC 9126. Normas
Qualidade de Produto Maria Cláudia F.P. Emer Introdução z Qualidade diretamente ligada ao produto final z Controle de qualidade Adequação do produto nas fases finais no processo de produção z Software
Verificação e validação
UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA Verificação e validação Engenharia de Software 2o. Semestre de 2005
Prova Modelo. Nome: Número:
Arquitectura de Computadores (2008/2009) Licenciatura em Engenharia Informática Prova Modelo 27 de Abril de 2009 Duração: 56 min. + 5 min. de tolerância Nome: Número: Isto trata-se de uma prova modelo
Conceitos básicos de programação
Tipos de dados estruturados Tipos estruturados vectores matrizes Estruturas (registos) Vectores e matrizes são estruturas homogéneas. Uma estrutura homogénea é uma sequência linear de elementos de mesmo
PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA
PESQUISA OPERACIONAL: NA TOMADA DE DECISÕES ADMINISTRATIVA Rodrigo de Oliveira SOUZA 1 Letícia Pinheiro Ribeiro da COSTA 1 Camila Pires Cremasco GABRIEL 22 Luís Roberto Almeida GABRIEL-FILHO 2 RESUMO:
- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: [email protected]
Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula E-mail: [email protected] Sistemas de Arquivos- Parte 2 Pontos importantes de um sistema de arquivos Vários problemas importantes devem
3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C
3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C 3.1. Compilação de um Programa C O compilador C realiza a compilação do código-fonte de um programa em cinco etapas: edição, pré-processamento, compilação,
Oganização e Arquitetura de Computadores
Oganização e Arquitetura de Computadores Capítulo 14 e 15 Unidade de Controle Parte I Operação da Unidade de Controle 1 Micro-Operações Um computador executa um programa Ciclo: Busca/Executa Cada ciclo
Sistemas Distribuídos Capítulo 4 - Aula 5
Sistemas Distribuídos Capítulo 4 - Aula 5 Aula Passada Clusters de Servidores Migração de Código Comunicação (Cap. 4) Aula de hoje Chamada de Procedimento Remoto - RPC Fundamentos 1 Chamada de Procedimento
Capítulo VI Circuitos Aritméticos
Capítulo VI Circuitos Aritméticos Introdução No capítulo anterior estudamos a soma e subtração de números binários. Neste capítulo estudaremos como as operações aritméticas de soma e subtração entre números
Primeira Prova de Análise e otimização de Código - DCC888 -
Primeira Prova de Análise e otimização de Código - DCC888 - Ciência da Computação Nome: Eu dou minha palavra de honra que não trapacearei neste exame. Número de matrícula: As regras do jogo: A prova é
Algoritmo e Lógica de Programação. Conceitos de Linguagens de Programação
Algoritmo e Lógica de Programação Conceitos de Linguagens de Programação SUMÁRIO 1. LINGUAGENS DE PROGRAMAÇÃO...3 1.1 CLASSIFICAÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO...3 1.1.1 Linguagens de Alto Nível Comparadas
Geração de Código para LALG
Geração de Código para LALG Ambiente de execução para LALG Máquina hipotética Repertório de instruções Prof. Thiago A. S. Pardo 1 Geração de código para LALG Código-alvo será um código de montagem Portanto,
O cilindro deitado. Eduardo Colli
O cilindro deitado Eduardo Colli São poucas as chamadas funções elementares : potências e raízes, exponenciais, logaritmos, funções trigonométricas e suas inversas, funções trigonométricas hiperbólicas
Gerenciamento de Integração. Prof. Anderson Valadares
Gerenciamento de Integração Prof. Anderson Valadares 1. Conceito A área de conhecimento em gerenciamento de integração do projeto inclui processos e as atividades necessárias para identificar, definir,
Geração de Código para LALG
Geração de Código para LALG Ambiente de execução para LALG Máquina hipotética Repertório de instruções Prof. Thiago A. S. Pardo 1 Geração de código para LALG Código-alvo será um código de montagem Portanto,
ANEXO 3 GERENCIAMENTO DE MODIFICAÇÕES
ANEXO 3 GERENCIAMENTO DE MODIFICAÇÕES 1 OBJETIVO O objetivo do Gerenciamento de Modificações consiste em prover um procedimento ordenado e sistemático de análise dos possíveis riscos introduzidos por modificações,
Gerenciamento de projetos (Project Management).
Gerenciamento de projetos (Project Management). A gestão de projetos é uma das áreas fundamentais de qualquer departamento de sistemas de informação, estando hoje em dia amplamente difundido dentro das
LINHAS MESTRAS; FASES; DISCIPLINAS; PRINCÍPIOS E MELHORES PRÁTICAS.
INTRODUÇÃO O processo de engenharia de software define quem faz o quê, quando e como para atingir um determinado objetivo. Neste trabalho, iremos dissertar sobre o Rational Unified Process, ou RUP, que
Técnicas Digitais A AULA 08. Prof. João Marcos Meirelles da Silva. Sala 425
Técnicas Digitais A Prof. João Marcos Meirelles da Silva AULA 08 [email protected] Sala 425 www.professores.uff.br/jmarcos onversão de Expressões em TV Desenvolva uma Tabela-Verdade para a expressão de
f (x) = a n x n + a n - 1 x n - 1 +... + a 0 = 0 (a n > 0)
Lista de Exercícios Resolução de Equações Não Lineares 1) Para a delimitação das raízes reais de uma equação polinomial, além do teorema de Lagrange, existem vários outros como, por exemplo, o apresentado
III. Representações das portas lógicas (recordação): Figura 1: Símbolos padronizados e alternativos para várias portas lógicas e para o inversor 2
CIRCUITOS LÓGICOS COMBINACIONAIS I. Objetivos: Realizar os passos necessários para obter uma expressão do tipo soma-de-produtos com o objetivo de projetar um circuito lógico na sua forma mais simples.
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C. Exercícios: Structs
Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem C Exercícios: Structs 1. Utilizando estrutura, fazer um programa em C que permita
Arquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Interconexão do Computador Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha [email protected] Material do prof. Sílvio Fernandes -
Sistemas Numéricos. Tiago Alves de Oliveira
Sistemas Numéricos Tiago Alves de Oliveira Sumário Sistemas Numéricos Binário Octal Hexadecimal Operações aritméticas binária e hexadecimal Operações lógicas binárias e decimais Representação Interna de
ELETRÔNICA DIGITAL 1
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE SANTA CATARINA UNIDADE SÃO JOSÉ CURSO DE TELECOMUNICAÇÕES ELETRÔNICA DIGITAL 1 CAPÍTULO 2 SUMÁRIO 2. Funções Lógicas 2 2.1 Introdução 2 2.2 Funções Lógicas Básicas
Arquitetura de Computadores - Módulos de E/S. por Helcio Wagner da Silva
Arquitetura de Computadores - Módulos de E/S por Helcio Wagner da Silva Modelo Geral de um Módulo de E/S Barramento de Endereço Barramento de Dados Barramento de Controle Módulo de E/S Conexões com Dispositivos
TUTORIAL MATLAB Victor Breder 2016
TUTORIAL MATLAB Victor Breder 2016 1. INTERFACE A. Caminho de trabalho Mostra o caminho pasta raiz que será considerada para executar scripts e funções criados pelo usuário. B. Pasta de trabalho Mostra
5. O Mapa de Karnaugh
Objetivos 5. O Mapa de Karnaugh Usar um mapa de Karnaugh para simplificar expressões Booleanas Usar um mapa de Karnaugh para simplificar funções de tabela-verdade Utilizar condições don t care para simplificar
Complexidade de Algoritmos
MAC 5710 - Estruturas de Dados - 2008 Objetivo de estudar complexidade de algoritmos Por que analisar a complexidade dos algoritmos? A preocupação com a complexidade de algoritmos é fundamental para projetar
Gerenciamento de Memória Minix 3.1.7
Gerenciamento de Memória Minix 3.1.7 Prof. Alexandre Beletti Introdução Não utiliza paginação Não faz swapping (está disponível, mas inativo) PM = gerencia processos e memória Chamadas de sistemas: Memória
Turbina eólica: conceitos
Turbina eólica: conceitos Introdução A turbina eólica, ou aerogerador, é uma máquina eólica que absorve parte da potência cinética do vento através de um rotor aerodinâmico, convertendo em potência mecânica
Memórias cache. Tópicos. João Canas Ferreira 2007-11-15. Tópicos de Arquitectura de Computadores. 1 Aspectos elementares
Memórias cache João Canas Ferreira 2007-11-15 Tópicos de Arquitectura de Computadores Assuntos Tópicos 1 Aspectos elementares 2 Alternativas de implementação e desempenho 3 Melhoramento do desempenho de
Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011
Estruturas de Dados Aula 9: Listas (parte 1) 05/04/2011 Fontes Bibliográficas Livros: Projeto de Algoritmos (Nivio Ziviani): Capítulo 3; Introdução a Estruturas de Dados (Celes, Cerqueira e Rangel): Capítulo
Teste de Funções por Cobertura do Grafo de Fluxo de Controle
Teste de Funções por Cobertura do Grafo de Fluxo de Controle Programação II Universidade de Lisboa Faculdade de Ciências Departamento de Informática Licenciatura em Tecnologias da Informação Vasco Thudichum
Aula 2 - Revisão. Claudemir Claudino 2014 1 Semestre
Aula 2 - Revisão I Parte Revisão de Conceitos Básicos da Matemática aplicada à Resistência dos Materiais I: Relações Trigonométricas, Áreas, Volumes, Limite, Derivada, Integral, Vetores. II Parte Revisão
Data Path / Control Path Controle do MIPS
Organização e Arquitetura de Computadores Unidade de Controle Uniciclo A unidade de controle deve, a partir do código da instrução, fornecer os sinais que realizam as instruções na unidade operativa. Sequência
Programação Orientada a Objetos
Programação Orientada a Objetos Prof. Kléber de Oliveira Andrade [email protected] Objetos e Classes Programação Orientada ao Objeto O paradigma da Orientação ao Objeto é um mecanismo que ajuda a definir
GESTÃO DA MANUTENÇÃO
Classificação Nível de Criticidade para Equipamentos S Q W Itens para avaliação Segurança cliente interno cliente externo meio-ambiente Qualidade Condição de trabalho Status Equipamento A B D P M Perdas
INF 1771 Inteligência Artificial
INF 1771 Inteligência Artificial Aula 04 Busca Heurística Edirlei Soares de Lima Métodos de Busca Busca Cega ou Exaustiva: Não sabe qual o melhor nó da fronteira a ser expandido.
Circuito Decodificador BCD para Display de Sete Segmentos
Prática 5 Linguagem VHDL Prof. Cesar da Costa Circuito Decodificador BCD para Display de Sete Segmentos Um dos métodos mais simples para apresentação de dígitos alfanuméricos, em circuitos digitais, é
Informática Aplicada
Informática Aplicada Aula 1 Introdução Diogo Pinheiro Fernandes Pedrosa Departamento de Ciências Exatas e Naturais Universidade Federal Rural do Semi-Árido Introdução Informática informação aplicada; Pressupõe
Compiladores. Simão Melo de Sousa
Compiladores Análise Semântica versão α 0.001 Simão Melo de Sousa Este documento é uma tradução adaptada do capítulo Analyse Sémantique da sebenta Cours de Compilation de Christine Paulin-Morhing e Marc
