Lab. de Programação Concorrente em Física Primeira Prática

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

Download "Lab. de Programação Concorrente em Física Primeira Prática"

Transcrição

1 Lab. de Programação Concorrente em Física Primeira Prática Paulo Matias de agosto de Introdução Nesta prática, avaliaremos a importância de se utilizar bons algoritmos e de otimizar o código antes de começar a paralelizá-lo. 2 Programas Bubble e Quick Compararemos o tempo de execução dos programas que implementam os algoritmos bubble sort e quick sort, com e sem otimizações habilitadas no compilador. Cada medida de tempo é computada como a média dos tempos de execução para pelo menos dez vetores aleatórios diferentes com o mesmo número de elementos. 2.1 Resultados Bubble sort sem otimização Tamanho do vetor Tempo (s)

2 2.1.2 Bubble sort com otimização Tamanho do vetor Tempo (s) Quick sort sem otimização Tamanho do vetor Tempo (s) Quick sort com otimização Tamanho do vetor Tempo (s)

3 2.2 Grácos Quick vs Bubble Sort (sem otimizacao) 35 Quick Bubble Tempo (s) Tamanho do vetor 3

4 Quick vs Bubble Sort (com otimizacao) 7 Quick Bubble 6 5 Tempo (s) Tamanho do vetor 4

5 Efeito da otimizacao no Bubble Sort Tempo (s) Bubble-O Bubble Tamanho do vetor 5

6 Efeito da otimizacao no Bubble Sort 10 1 Tempo (s) Bubble-O Bubble Tamanho do vetor 5 Efeito da otimizacao no Quick Sort 4 3 Tempo (s) Quick-O Quick Tamanho do vetor 1e7 6

7 2.3 Discussão O uso de algoritmos rápidos, de baixa complexidade, é essencial para o desenvolvimento de um programa de alto desempenho. O uso de otimizações oferecidas pelo compilador também é importante, pois permite obter um ganho de performance adicional signicativo. Para a maior entrada fornecida, o quick sort otimizado executou em cerca de 49% do tempo do quick sort não otimizado, ao passo que o bubble sort otimizado executou em apenas 25% do tempo do bubble sort não otimizado. Percebese que os códigos não são afetados da mesma forma pelas otimizações. Uma análise detalhada das otimizações realizadas pelo compilador gcc é apresentada no Apêndice A. O impacto causado pelo uso de um algoritmo de menor complexidade é bem maior que o impacto das otimizações. Para elementos, o quick sort otimizado é cerca de 1524 vezes mais rápido que o bubble sort otimizado. 3 Programa Cavalo Nesta seção, utilizaremos o gprof para identicar as partes do código que tomam mais tempo na execução de um programa. Esse tipo de informação é útil para identicar quais partes do código seriam mais beneciadas por uma otimização, auxiliando o desenvolvedor a melhorar a performance do programa. 7

8 3.1 As três funções/métodos que tomam mais tempo na execução De acordo com a saída do gprof, as três funções/métodos que tomam mais tempo na execução são Tabuleiro::vizinhos, posicionacavalo e Tabuleiro::valida. A porcentagem de tempo gasto em cada uma delas é, respectivamente, de 29.49%, 26.09% e 14.31%. Elas são chamadas , 25 e vezes, respectivamente. 3.2 As três linhas que mais tomam tempo As linhas que mais tomam tempo são a linha 120, que se encontra dentro do método Tabuleiro::vizinhos, a linha 59, que se encontra dentro do método Tabuleiro::valida e a linha 118, novamente no método Tabuleiro::vizinhos. A porcentagem de tempo gasto em cada uma delas é, respectivamente, de 13.00%, 11.62% e 9.59%. 8

9 A Análise das otimizações A.1 Bubble sort sem otimização 9

10 A.2 Bubble sort com otimização 10

11 A.3 Quick sort sem otimização 11

12 A.4 Quick sort com otimização A.5 Discussão O código compilado sem otimização é gerado pelo compilador o mais diretamente possível a partir do código fonte C++, empregando pouco ou nenhum esforço para reduzir o número de instruções utilizadas. Por exemplo, o seguinte trecho do código do bubble sort sem otimização: 12

13 mov eax, [ ebp + var_c ] add eax, 1 shl eax, 2 add eax, [ ebp + arg_0 ] mov edx, [ eax ] Corresponde a apenas uma instrução do código com otimização: mov ebx, [ edx + eax *4+4] sort, onde o seguinte tre- Otimizações similares ocorrem no código do quick cho do código sem otimização: mov eax, [ ebp + var_c ] shl eax, 2 add eax, [ ebp + arg_0 ] Corresponde à seguinte instrução do código com otimização: lea eax, [ esi + edx *4] Outra otimização que ocorre em ambos os códigos é o uso de registradores para algumas das variáveis locais. Por exemplo, no código não otimizado do bubble sort, a variável n é armazenada no local de memória ebp+var_10: mov eax, [ ebp + arg_4 ] ; N sub eax, 1 mov [ ebp + var_10 ], eax Já no código otimizado, a mesma varíavel é armazenada no registrador edi: mov edi, [ ebp + arg_4 ] ; N sub edi, 1 No código não otimizado do quick sort, a variável current é armazenada no local de memória ebp+var_c: add [ ebp + var_c ], 1 mov eax, [ ebp + var_c ] cmp eax, [ ebp + arg_8 ] ; current, fin setl al test al, al jnz short loc_ 80491C9 Enquanto no código otimizado, a mesma variável é armazenada no registrador edx: add edx, 1 add eax, 4 cmp [ ebp + arg_8 ], edx ; fin, current jg short loc_ B0493CF 13

14 Por m, comentamos a respeito de otimizações que foram realizadas sobre o código do bubble sort, mas que não possuem equivalentes no quick sort. O bubble sort utiliza uma função inline denominada swap. Porém, o gcc respeita a diretiva inline apenas se o programa for compilado com a opção -O. Assim, a função swap não é colocada como inline no código do bubble sort sem otimização, apesar de estar especicada como inline no código fonte: mov [ esp +4], edx ; segundo argumento mov [ esp ], eax ; primeiro argumento call _ Z4swapRiS_ ; swap ( int &, int &) Outra otimização que ocorre no mesmo trecho do código do bubble sort é o reaproveitamento dos valores e endereços para a realização da troca swap(v[i],v[i+1]) depois da comparação v[i+1]<v[i]. Enquanto no código sem otimização temos o seguinte trecho: mov eax, [ ebp + var_c ] add eax, 1 shl eax, 2 add eax, [ ebp + arg_0 ] mov edx, [ eax ] mov eax, [ ebp + var_c ] shl eax, 2 add eax, [ ebp + arg_0 ] mov eax, [ eax ] cmp edx, eax jge short loc_80491ef ;!( v[i +1] < v[i ]) mov eax, [ ebp + var_c ] add eax, 1 shl eax, 2 mov edx, eax add edx, [ ebp + arg_0 ] mov eax, [ ebp + var_c ] shl eax, 2 add eax, [ ebp + arg_0 ] mov [ esp +4], edx ; primeiro argumento mov [ esp ], eax ; segundo argumento call _ Z4swapRiS_ ; swap ( int &, int &) O código com otimização corresponde apenas ao seguinte trecho, onde os valores ebx e ecx e os endereços edx+eax*4 e edx+eax*4+4 são reaproveitados: mov ebx, [ edx + eax *4+4] mov ecx, [ edx + eax *4] cmp ebx, ecx jge short loc_80493df ;!( v[i +1] < v[i ]) mov [ edx + eax *4], ebx mov [ edx + eax *4+4], ecx 14

15 Essas duas últimas otimizações são em grande parte responsáveis pelo fato de o bubble sort ter sofrido um impacto maior da otimização do compilador que o quick sort. A.6 Curiosidades O compilador não é perfeito e, às vezes, gera códigos estranhos mesmo com a otimização habilitada. No código do bubble sort com otimização, a variável swapped é armazenada no local de memória ebp+var_d. A linha de código fonte swapped=true; é compilada da seguinte forma: movzx ecx, [ ebp + var_e ] mov [ ebp + var_d ], cl O local de memória ebp+var_e só é usado uma única outra vez no código, logo no início da função: mov [ ebp + var_e ], 1 Ou seja, as três instruções acima estão servindo apenas ao próposito de mover o byte 1 para a posição de memória ebp+var_d. Em vez de utilizar essas três instruções, uma única instrução bastaria: mov [ ebp + var_d ], 1 O código Assembly foi modicado desta forma e testado, e continuou funcionando corretamente. 15

Computadores de Programação (DCC/UFRJ)

Computadores de Programação (DCC/UFRJ) Computadores de Programação (DCC/UFRJ) Aula 14: 04 de junho de 2013 1 2 ...antigamente.. No início da Computação, todos os programas eram escritos em linguagem de montagem Complexidade, propenso a erros,

Leia mais

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.

A arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento

Leia mais

Intel x AT&T - recapitulação

Intel x AT&T - recapitulação ASSEMBLY aula 2 Intel x AT&T - recapitulação mov mov int mov mov mov mov add lea sub Intel Code eax,1 ebx,0ffh 80h ebx, eax eax,[ecx] eax,[ebx&plus;3] eax,[ebx+20h] eax,[ebx+ecx*2h] eax,[ebx+ecx] eax,[ebx+ecx*4h-20h]

Leia mais

Programando em Assembly

Programando em Assembly Programando em Assembly precisa-se saber exatamente como interpretar & gerenciar a memória e como usar instruções de baixo nível para o processamento Não existem tipos e variáveis (apenas bytes na memória)

Leia mais

Professor: Dr. Rogério Rodrigues de Vargas.

Professor: Dr. Rogério Rodrigues de Vargas. UNIVERSIDADE ESTADUAL DE SANTA CRUZ DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS Bacharelado em Ciência da Computação Software Básico Linguagem de Programação Assembly: Uma introdução no Linux/i386 (AT&T)

Leia mais

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 1 Pilha de execução Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 2 Agenda Os desafios da execução

Leia mais

Sistemas de Computação

Sistemas de Computação Sistemas de Computação Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo Gambini Santos Sistemas de Computação 1/30 Assembly

Leia mais

Exceções no Fluxo de Execução: Interrupções e Traps

Exceções no Fluxo de Execução: Interrupções e Traps Exceções no Fluxo de Execução: Interrupções e Traps 1 Fluxo de Controle Fluxo de controle de um programa: a 0 a 1 a 2 a n sequência de endereços I 0 I 1 I 2 I n sequência de instruções O fluxo mais simples

Leia mais

Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho

Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho Linguagem de Montagem e Assembly André Luiz da Costa Carvalho Linguagem de Montagem Todo programa para ser executado precisar ser convertido de linguagem fonte (alto nível) para um programa equivalente

Leia mais

Computadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos

Computadores e Programação (MAB ) Lista 2 - Grupo de até 3 alunos - 90 pontos Computadores e Programação (MAB-353 2017-1) Lista 2 - Grupo de até 3 alunos - 90 pontos Entrega impressa em sala de aula até o dia 04 de maio (mesmo limite da lista1). Grupo: GABARITO... Questão 1 (45

Leia mais

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly Sistemas de Computação para Controle e Automação CIC132 Décima quarta aula: Introdução a programação Assembly Haroldo Gambini Santos Universidade Federal de Ouro Preto - UFOP 5 de novembro de 2009 Haroldo

Leia mais

Assembly do IA-32 em ambiente Linux

Assembly do IA-32 em ambiente Linux Sistemas de Computação 2010/11 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC5 Alberto José Proença Objectivo A lista de exercícios propostos em TPC5 para resolução antes e durante a próxima

Leia mais

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m

Instruções funcionamento em 16 bits. 8B bytes W Mod 000 r/m Instruções funcionamento em 6 bits 0 a bytes Mov BYTE PTR [BX], 06h 00 0W Mod 000 r/m 0000 00 0 0 0 8A 07 06 3 bytes 00 8B 07 06 00 4 bytes 00 0W Mod 000 r/m 000 00 0000 0000 Mov WORD PTR [BX], 06h Instruções

Leia mais

Assembly IA32 Procedimentos

Assembly IA32 Procedimentos 1 Procedimentos Assembly IA32 Procedimentos Uma chamada a um procedimento implica a transferência de dados (na forma de parâmetros do procedimento e na forma de valores retornados pelo procedimento) e

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

Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos

Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/ pontos Computadores e Programação (MAB-353) Primeira Prova -Prof. Paulo Aguiar (DCC/UFRJ) 19/05/2015-100 pontos Nome: GABARITO (revisado) Questão 1 (20 pontos) Preencha os pontilhados do código C com variável

Leia mais

Assembly do IA-32 em ambiente Linux

Assembly do IA-32 em ambiente Linux MIEI: Sistemas de Computação 2015/16 Assembly do IA-32 em ambiente Linux Trabalho para Casa: TPC6 Alberto José Proença Objectivo A lista de exercícios propostos em TPC6 para resolução antes e durante a

Leia mais

Programação em Assembly Optimização do código

Programação em Assembly Optimização do código Programação em Assembly Optimização do código IA32 AC1 IA32: Optimização do código 1 Optimização do desempenho A optimização decorre ao longo de 2 eixos: escolha cuidada dos algoritmos e estruturas de

Leia mais

Compiladores. Otimização de código

Compiladores. Otimização de código Compiladores Otimização de código Otimização de código Recebe uma representação intermediária e produz como saída código de máquina eficiente Parser Checagem Estática Geração de código intermediário Otimização

Leia mais

Estruturas de controlo do C if-else statement

Estruturas de controlo do C if-else statement Análise do Instruction Set Architecture (3) Alteração do fluxo de execução de instruções Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações

Leia mais

A linguagem ASSEMBLY

A linguagem ASSEMBLY A linguagem ASSEMBLY Assembly é uma linguagem de baixo nível, chamada freqüentemente de linguagem de montagem É uma linguagem considerada difícil, principalmente porque o programador precisa conhecer a

Leia mais

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo Nível da Arquitetura do Conjunto de Instruções Ronaldo de Freitas Zampolo Tópicos Introdução Visão geral do nível ISA Tipos de dados Formatos de instruções Endereçamento Tipos de instruções Fluxo de controle

Leia mais

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

TEÓRICA. lb $t0, 1($t1) T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma das respostas está correcta, valendo 1

Leia mais

Introdução a Engenharia Reversa

Introdução a Engenharia Reversa Introdução a Engenharia Reversa Por Maycon Maia Vitali a.k.a. 0ut0fBound maycon@consysonline.com.br http://outofbound.host.sk Conceito Resumo História da Engenharia Reversa - WWII Engenharia Reversa de

Leia mais

Organização Básica de computadores e linguagem de montagem

Organização Básica de computadores e linguagem de montagem Organização Básica de computadores e linguagem de montagem Prof. Edson Borin 1 o Semestre de 2012 Regras do Curso http://www.ic.unicamp.br/~edson/disciplinas/mc404/2012-1s/ Porque Aprender Linguagem de

Leia mais

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores

Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Sistemas Elétricos de Automação e Energia ENG10032 Microcontroladores 1 Objetivo Roteiro de Laboratório 04 Convenções de Chamada

Leia mais

Arquitetura do SET de instruções Instruction SET. CISC vs RISC. What s assembly as to do with it?

Arquitetura do SET de instruções Instruction SET. CISC vs RISC. What s assembly as to do with it? Arquitetura do SET de instruções Instruction SET CISC vs RISC What s assembly as to do with it? Low-level - high-level programming language Assambley CODE section.text global _start ;must be declared for

Leia mais

Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m

Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m MCC Arquitectura de Computadores 2005/2006 Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m Nota: Apresente sempre o raciocínio ou os cálculos que efectuar;

Leia mais

Universidade de São Paulo - USP. Instituto de Física de São Carlos - IFSC. Programação de Alto Desempenho. Prática 1. André de Freitas Smaira

Universidade de São Paulo - USP. Instituto de Física de São Carlos - IFSC. Programação de Alto Desempenho. Prática 1. André de Freitas Smaira Universidade de São Paulo - USP Instituto de Física de São Carlos - IFSC Programação de Alto Desempenho Prática 1 Aluno: André de Freitas Smaira 1 Otimização pelo Compilador Atualmente, os compiladores

Leia mais

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados CPU CPU Unidade Central de Processamento Função: leitura, escrita e processamento de dados Constituída por: dispositivos que gerem a entrada (leitura) e saída (escrita) de dados; registos (memórias auxiliares)

Leia mais

Fluxo de Execução em Assembly

Fluxo de Execução em Assembly Fluxo de Execução em Assembly A forma natural de execução de um programa é sequencial: CPU busca instruções na memória em endereços sequenciais Instruções de desvio de assembly servem para quebrar a execução

Leia mais

Getting Started. Pedro Garcia de Janeiro de Assembly Working Party

Getting Started. Pedro Garcia de Janeiro de Assembly Working Party Pedro Garcia http://www.sawp.com.br 22 de Janeiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil Motivação Tópicos 1 Motivação

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 6: 1 2 3 A necessidade dos programadores escreverem código em linguagem de montagem tem mudado ao longo dos últimos anos: de um programador capaz de escrever

Leia mais

Infraestrutura de Hardware. Desempenho

Infraestrutura de Hardware. Desempenho Infraestrutura de Hardware Desempenho Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado pelo HW? Qual é a interface entre

Leia mais

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

Linguagem de Montagem Assembly

Linguagem de Montagem Assembly Linguagem de Montagem Assembly Especificações O programa em Assembly Fica sobre a camada do Sistema Operacional Efetua chamadas ao Sistema Operacional O montador Chama-se Assembler Traduz a linguagem de

Leia mais

Introdução ao Assembly

Introdução ao Assembly Introdução ao Assembly Movimentação de Dados Operações Aritméticas e Lógicas Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Representação de Programas O compilador gera o código

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

Procedimentos Chamada de Funções e Parâmetros

Procedimentos Chamada de Funções e Parâmetros Procedimentos Chamada de Funções e Parâmetros Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Memória Durante a execução de um programa, o SO precisa alocar memória principal para:

Leia mais

Procedimentos Chamada de Funções e Parâmetros

Procedimentos Chamada de Funções e Parâmetros Procedimentos Chamada de Funções e Parâmetros Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018 Memória Durante a execução de um programa, o SO precisa alocar memória principal para:

Leia mais

Arquitectura de Computadores Y86 Instruções

Arquitectura de Computadores Y86 Instruções Arquitectura de Computadores Y86 Instruções Créditos Randal E. Bryant http://csapp.cs.cmu.edu António Pina e Luís Paulo Santos DI/UM Arquitectura do Jogo de Instruções Linguagem de montagem Estado do processador

Leia mais

Estrutura de uma função ( / procedimento )

Estrutura de uma função ( / procedimento ) Análise do Instruction Set Architecture (4) Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos e operações 3. Suporte a estruturas de controlo 4. Suporte

Leia mais

Assembly x86. Hugo Bessa - hrba Paulo Serra Filho ptvsf

Assembly x86. Hugo Bessa - hrba Paulo Serra Filho ptvsf Assembly x86 Hugo Bessa - hrba Paulo Serra Filho ptvsf Roteiro Assembly Assemblers Sections Registradores Registradores de Segmentos Principais Operações do NASM Funcões e Macros Interrupções Compilando

Leia mais

Movimentação de código

Movimentação de código Avaliação de Desempenho no IA-32 (2) Otimização de código: técnicas independentes da máquina Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização

Leia mais

Keygennando o Ardamax Keylogger 2.8

Keygennando o Ardamax Keylogger 2.8 Keygennando o Ardamax Keylogger 2.8 por n2u, em 27/10/2007 Informações sobre a vítima Nome: Ardamax Keylogger. Versão: 2.8 Desenvolvedor: Ardamax (http://www.ardamax.com). Plataforma: Windows 98/ME/NT4/2000/XP/2003/Vista.

Leia mais

Nível da Arquitetura do Conjunto das Instruções

Nível da Arquitetura do Conjunto das Instruções Nível da Arquitetura do Conjunto das Instruções (Aula 11) Visão Geral do Nível ISA Antes de deixarmos o hardware (1) 8 2 Antes de deixarmos o hardware (2) 3 ISA (Instruction Set Architecture) Arquitetura

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos

Leia mais

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2) Arquitetura de Computadores I Prof. Ricardo Santos ricr.santos@gmail.com (Cap 2) Instruções Comandos utilizados para indicar ao hardware o que deve ser feito Utilizaremos neste curso o conjunto de instruções

Leia mais

x86 arquitetura e instruções básicas

x86 arquitetura e instruções básicas x86 arquitetura e instruções básicas 1 Família x86 Data CPU Palavra Endereço (bits) 1978 8086, 8088 1982 80186, 80188 1985 80386 1989 80486 1993 Pentium, Pentium MMX 1995 Pentium Pro 1997 Pentium II/III,

Leia mais

Testando o Teorema de De Morgan

Testando o Teorema de De Morgan Pedro Garcia http://www.sawp.com.br 04 de Fevereiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil O Teorema Teorema de De Morgan

Leia mais

Arquitectura de Computadores II. Medição de desempenho

Arquitectura de Computadores II. Medição de desempenho Arquitectura de Computadores II LESI - 3º Ano Medição de desempenho João Luís Ferreira Sobral Departamento do Informática Universidade do Minho Abril 2002 1. Introdução A medição de desempenho pretende

Leia mais

Arquitetura de Computadores

Arquitetura de Computadores Arquitetura de Computadores 2018.1 Relembrando... Paralelismo Relembrando... Paralelismo Paralelismo em Instrução Relembrando... Paralelismo Paralelismo em Instrução Paralelismo em Aritmética Relembrando...

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (5) x86-64: 64-bit extension to Intel 64: Intel implementation of x86-64 Estrutura do tema ISA do 1. Desenvolvimento de programas no em Linux 2. Acesso a operandos

Leia mais

Arquitectura de Computadores II L.E.S.I. 3º ano 2005/06. Módulo nº 4 Encadeamento e resolução de anomalias

Arquitectura de Computadores II L.E.S.I. 3º ano 2005/06. Módulo nº 4 Encadeamento e resolução de anomalias Arquitectura de Computadores II L.E.S.I. 3º ano 2005/06 Módulo nº 4 Encadeamento e resolução de anomalias 1. Introdução No final deste módulo os alunos deverão ser capazes de: avaliar os ganhos/perdas

Leia mais

Ordem de Bytes: Big Endian e Little Endian

Ordem de Bytes: Big Endian e Little Endian Ordem de Bytes: Big Endian e Little Endian Dependendo da máquina que se usa, tem de se considerar a ordem pela qual os números constituídos por múltiplos bytes estão armazenados. As ordem são duas: big

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado nos slides do capítulo

Leia mais

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 Análise do Instruction Set Architecture (2) Acesso a operandos no IA-32: sua localização e modos de acesso Estrutura do tema ISA do IA-32 1. Desenvolvimento de programas no IA-32 em Linux 2. Acesso a operandos

Leia mais

Compiladores. Otimização de Código

Compiladores. Otimização de Código Compiladores Otimização de Código 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

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M. Quick Sort Considerações Sobre Algoritmos de Ordenação Professor: Claudio F. M. Toledo 26 de Outubro de 2016 Professor: Claudio Quick F. M. Sort Toledo 26 de Outubro de 2016 1 / 14 Quicksort: Escolha do

Leia mais

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores. Prof. João Bosco Jr. Arquitetura de Computadores Prof. João Bosco Jr. Unidade II Aula 1 Nível ISA Posicionado entre a microarquitetura e o SO Define a arquitetura (Conjunto de Instruções) É a interface entre o Software e o

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 09 Ordenação de Vetores Edirlei Soares de Lima Ordenação de Vetores Problema: Entrada: vetor com os elementos a serem ordenados; Saída: mesmo vetor com

Leia mais

Estrutura do tema Avaliação de Desempenho (IA-32)

Estrutura do tema Avaliação de Desempenho (IA-32) Avaliação de Desempenho no IA-32 (4) Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização de código (IM) 3. Técnicas de otimização de hardware

Leia mais

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade Prof. Jesús P. Mena-Chalco 3Q-2017 1 0 A = n-1... 2 0 A = n-1... - O programa funciona (está correto)? - Como medir/mensurar

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

Compiladores Ambiente de Execução

Compiladores Ambiente de Execução Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Processamento da informação. Prof. Fabrício Olivetti de França

Processamento da informação. Prof. Fabrício Olivetti de França Processamento da informação Prof. Fabrício Olivetti de França Informação Do latim, informatio onis, conceber ideia. Conceber Ideia Preciso que você encontre a derivada de log(x)! Conceber Ideia Encontre

Leia mais

Programação ao nível da máquina. Operações lógicas e aritméticas

Programação ao nível da máquina. Operações lógicas e aritméticas Programação ao nível da máquina Operações lógicas e aritméticas Operações lógicas e aritméticas Operações: aritméticas: add, sub, inc, dec, cmp lógicas: and, or, xor, not Realizadas pela ALU (Arithmetic

Leia mais

Instruções Assembly x Código de máquina Microprocessador Didático

Instruções Assembly x Código de máquina Microprocessador Didático Instruções Assembly x Código de máquina Microprocessador Didático Professor Afonso Ferreira Miguel (afmiguel@rla01.pucpr.br) Disciplina de Projetos Lógicos e Microprocessadores Curitiba, 1 de junho de

Leia mais

Movimentação de código

Movimentação de código Avaliação de Desempenho no IA-32 (2) Otimização de código: técnicas independentes da máquina Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização

Leia mais

Nível da Arquitetura do Conjunto das Instruções

Nível da Arquitetura do Conjunto das Instruções Nível da Arquitetura do Conjunto das Instruções (Aula 12) Formatos de Instruções Modos de Endereçamento Tipos de Instruções Formatos de Instruções (1) Uma instrução é formada por: um código de operação

Leia mais

Sistemas de Microprocessadores I Lista de exercícios (questões de provas de semestre anteriores)

Sistemas de Microprocessadores I Lista de exercícios (questões de provas de semestre anteriores) Sistemas de Microprocessadores I Lista de exercícios (questões de provas de semestre anteriores) 1 - Fazendo uma comparação entre a arquitetura proposta por Von Neumann e a arquitetura de um microcomputador

Leia mais

Estrutura do tema Avaliação de Desempenho (IA-32)

Estrutura do tema Avaliação de Desempenho (IA-32) Avaliação de Desempenho no IA-32 (2) Estrutura do tema Avaliação de Desempenho (IA-32) 1. A avaliação de sistemas de computação 2. Técnicas de otimização de código (IM) 3. Técnicas de otimização de hardware

Leia mais

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores I. Prof. Ricardo Santos (Cap 2) Arquitetura de Computadores I Prof. Ricardo Santos ricr.santos@gmail.com (Cap 2) Fluxo de Controle Vimos até agora: beq, bne Uma nova instrução: slt $t0, $s1, $s2 if $s1 < $s2 then $t0 = 1 else $t0 = 0

Leia mais

ESTRUTURA DE DADOS I AULA I

ESTRUTURA DE DADOS I AULA I ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO O que é um dado? Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta). o que é a informação A

Leia mais

Arquiteturas RISC e CISC. Adão de Melo Neto

Arquiteturas RISC e CISC. Adão de Melo Neto Arquiteturas RISC e CISC Adão de Melo Neto 1 Arquitetura RISC Arquitetura RISC. É um das inovações mais importantes e interessantes. RISC significa uma arquitetura com um conjunto reduzido de instruções

Leia mais

16. Compilação no Linux

16. Compilação no Linux 16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código

Leia mais

EL68E Sistemas Embarcados Programação Assembly Prof. Douglas Renaux (Out/2014)

EL68E Sistemas Embarcados Programação Assembly Prof. Douglas Renaux (Out/2014) EL68E Sistemas Embarcados Programação Assembly Prof Douglas Renaux (Out/2014) Os dois exercícios a seguir foram questões de prova em semestres anteriores 1) Implemente em assembly (Cortex-M) a função:

Leia mais

Programação ao nível da máquina

Programação ao nível da máquina Programação ao nível da máquina Ponto de vista do programador O nível Assembly Modelo de programação Assembler (processo de compilação da linguagem C) Que assembly para AC? Introdução ao assembly NASM

Leia mais

Universidade de São Paulo

Universidade de São Paulo Universidade de São Paulo Organização de Computadores Dr. Jorge Luiz e Silva Cap 4 Generalizar Problema - G1 Fazer um programa que calcule o complemento para dois de uma posição de memória e coloque o

Leia mais

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais

Leia mais

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

Compiladores Ambiente de Execução

Compiladores Ambiente de Execução Compiladores Ambiente de Execução Fabio Mascarenhas 2015.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

MATA49 Programação de Software Básico

MATA49 Programação de Software Básico MATA49 Programação de Software Básico Leandro Andrade leandrojsadcc.ufba.br PROF. LEANDRO ANDRADE 1 Introdução a linguagem de montagem com Nasm PROF. LEANDRO ANDRADE 2 Sintaxe básica Não é sensível

Leia mais

Análise empírica de algoritmos de ordenação

Análise empírica de algoritmos de ordenação Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:

Leia mais

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.

Sistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas. 25-215 Volns Bernal 1 25-215 Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br Os problemas Controle do endereço de retorno da função Controle do quadro da pilha de Departamento de Sistemas Eletrônicos

Leia mais

Microprocessadores. Família x86 - Evolução

Microprocessadores. Família x86 - Evolução Família x86 - Evolução António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt i8086 16 bits de dados 20 bits de endereços 1MByte Clock 2 [4,8] MHz i80286 24 bits de endereço

Leia mais

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador: Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.

Leia mais

Prof. Adilson Gonzaga

Prof. Adilson Gonzaga Microprocessadores são Máquinas de Estado Seqüenciais Síncronas que operam mediante a execução de uma seqüência de códigos binários armazenados em memória. Prof. Adilson Gonzaga 1 As ordens ou comandos

Leia mais

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel Processadores 8086 Registradores: 16 bits 1978 Data bus:

Leia mais

1) Considere a situação atual da memória do sistema computacional abaixo discriminada.

1) Considere a situação atual da memória do sistema computacional abaixo discriminada. 1) Considere a situação atual da memória do sistema computacional abaixo discriminada. a) Encontre o resultado da instrução com 01 ENDEREÇO abaixo discriminada que será armazenada em registrador ACUMULADOR.

Leia mais

Organização de Computadores

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

Estrutura do tema ISA do IA-32

Estrutura do tema ISA do IA-32 nálise do Instruction Set rchitecture (6) Dados estruturados em C Estrutura do tema IS do I-32 1. Desenolimento de programas no I-32 em Linux 2. cesso a operandos e operações 3. Suporte a estruturas de

Leia mais

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2)

Arquitetura de Computadores I Prof. Ricardo Santos (Cap 2) Arquitetura de Computadores I Prof. Ricardo Santos ricr.santos@gmail.com (Cap 2) 1 Fluxo de controle Vimos até agora: beq, bne Uma nova instrução: if $s1 < $s2 then $t0 = 1 slt $t0, $s1, $s2 else $t0 =

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

Assembly na arquitetura IA-32 com NASM no Linux

Assembly na arquitetura IA-32 com NASM no Linux Assembly na arquitetura IA-32 com NASM no Linux Prof. Dr. Luciano José Senger 1 Introdução A Figura 1 mostra os registradores principais para a arquitetura IA-32. Essa arquitetura trabalha com palavras

Leia mais

EA876 - Introdução a Software de Sistema

EA876 - Introdução a Software de Sistema A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos

Leia mais

Arquitetura de Computadores Trabalhos Práticos

Arquitetura de Computadores Trabalhos Práticos Arquitetura de Computadores Trabalhos Práticos Trabalhos Práticos 1. Bloco de memória em Verilog 2. Y86 1 instrução 5 ciclos 3. Y86 pipeline 4. Y86 dual core com cache 5. Trabalho no CUDA 3 pontos 7 pontos

Leia mais