Computadores de Programação (MAB353)



Documentos relacionados
Conjunto de. Instrução MIPS. Parte II. Instruções MIPS. Instruções MIPS. Instruções MIPS :: Instruções lógicas. :: Instruções lógicas

Arquitetura de Computadores

Organização e Arquitetura de Computadores I

MIPS. Prof. Carlos Bazilio

Arquitetura de Computadores. Linguagem de Máquina

Arquitetura de Computadores. Assembly Miscelâneas. Mário O. de Menezes.

Computadores de Programação (MAB353)

MODOS DE ENDEREÇAMENTO

Sistemas Processadores e Periféricos Aula 2 - Revisão

Aula 14: Instruções e Seus Tipos

Componentes do Computador e. aula 3. Profa. Débora Matos

Arquitetura de Computadores I

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Geração de código intermediário. Novembro 2006

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Arquitetura de Computadores. Ivan Saraiva Silva

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I

Arquitetura de Sistemas Digitais (FTL066) Instruções: Linguagem do Computador Segunda Lista de Exercícios

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Conjunto de Instruções. Conjunto de Instruções

Sistemas de Computação. Instruções de Linguagem de Máquina

Organização e Arquitetura de Computadores I. de Computadores

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

Computadores de Programação (MAB353)

Arquitetura de Computadores. Tipos de Instruções

Geração de código. Ivan Ricarte INTRODUÇÃO À COMPILAÇÃO

Conjunto de Instruções e Arquitectura p.1

Anotações da 2a Edição

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

Programando o computador IAS

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Computadores de Programação (MAB353)

ArchC. Wesley Nunes Gonçalves

2 Formalidades referentes ao trabalho

Programação de Computadores III

Caminho dos Dados e Atrasos

Infraestrutura de Hardware. Instruindo um Computador

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

RISC simples. Aula de Março de

Organização de Computadores Hardware

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados

Conjunto de Instruções

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

Introdução à Arquitetura de Computadores

ALP Algoritmos e Programação. . Linguagens para Computadores

ULA- Unidade Lógica Aritmética. Prof. Rômulo Calado Pantaleão Camara. Carga Horária: 60h

Arquitetura e Organização de Computadores

Arquitectura de Computadores

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Introdução às Linguagens de Programação

CALCULADORA SIMPLES COM ULA

OPERADORES E ESTRUTURAS DE CONTROLE

3. O NIVEL DA LINGUAGEM DE MONTAGEM

O Processador: Caminho de Dados e Controle

Organização e Arquitetura de Computadores I

Aritmética. E agora: Implementação da Arquitetura

Usando o simulador MIPS

Figura 1 - O computador

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

Parte II Introdução a Linguagens de Programação

ARQUITECTURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES

Arquitetura de Computadores I

MIPS ISA (Instruction Set Architecture)

Testando e Comparando Valores

Implementação de um soft-core em VHDL baseado no conjunto de instruções MIPS-I

Sistemas Computacionais II Professor Frederico Sauer

Programação WEB I Estruturas de controle e repetição

Organização de Computadores 1

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Arquitetura de Computadores. Ivan Saraiva Silva

28/9/2010. Unidade de Controle Funcionamento e Implementação

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

A Figura 1 mostra uma organização do NEANDER com uma UAL de 6 funções. Figura 1: Organização para o NEANDER.

e à Linguagem de Programação Python

Conjunto de instruções e modos de. aula 4. Profa. Débora Matos

ULA Sinais de Controle enviados pela UC

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Operadores lógicos (bit a bit)

Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial

Representação de Dados Inteiros com sinal

Processadores para Ensino de Conceitos Básicos de Arquitetura de Computadores

Operações Aritméticas e Lógicas e Avaliação de Condições

Aritmética Binária e. Bernardo Nunes Gonçalves

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

CAPÍTULO 6 ARITMÉTICA DIGITAL

Arquiteturas RISC. (Reduced Instructions Set Computers)

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

PARTE II - CONJUNTO DE INSTRUÇÕES ARQUITETURA DE COMPUTADORES ANTONIO RAMOS DE CARVALHO JÚNIOR

Introdução aos Computadores

Transcrição:

Computadores de Programação (MAB353) Aula 6: 27 de abril de 2010

1 Recaptulando operações já estudadas Operações lógicas 2 3 Exercícios Referências bibliográficas

Recaptulando operações já estudadas Operações lógicas Operações aritméticas e de transferência de dados no MIPS Instruções aritméticas add R1, R2, R3: instrui o computador a somar os valores em R2 e R3 e colocar o resultado em R1 sub R1, R2, R3: instrui o computador a subtrair os valores em R2 e R3 e colocar o resultado em R1 addi R1, R2, K: add imediato (o segundo operando é uma constante) Intruções de transferência de dados lw R1, K(R2) : instrução de transferência de dados que copia dados da memória para um registrador sw R1, K(R2): instrução de transferência de dados que copia dados de um registrador para a memória

Operações lógicas Recaptulando operações já estudadas Operações lógicas Usadas para operar sobre bits individuais ou sobre campos de bits dentro de uma palavra Operações de shift Movem bits de uma palavra à esquerda ou à direita, preenchendo os bits vazios com 0s shift binário à esquerda: multiplica o valor por 2 i (onde i = tamanho do deslocamento) shift binário à direita: divide o valor por 2 i (onde i = tamanho do deslocamento)

Operações lógicas Recaptulando operações já estudadas Operações lógicas Operações booleanas and: operação bit-a-bit que retorna 1 apenas se ambos os operandos são 1 or: operação bit-a-bit que retorna 1 se um dos operandos for 1 not: inverte os valores dos bits do operando

Recaptulando operações já estudadas Operações lógicas Operadores lógicos em C e Java e instruções correspondentes em MIPS Logical operations C operators Java operators MIPS instructions Shift left << << sll Shift right >> >>> srl Bit-by-bit AND & & and, andi Bit-by-bit OR or, ori Bit-by-bit NOT ~ ~ nor FIGURE 2.8 C and Java logical operators and their corresponding MIPS instructions. MIPS implements NOT using a NOR with one operand being zero. Copyright 2009 Elsevier, Inc. All rights reserved.

Intruções lógicas no MIPS Recaptulando operações já estudadas Operações lógicas Instruções de shift sll (shift left logical): ex., sll $t2, $s0, 4 t2 = s0 << 4 srl (shift right logical): ex., srl $t2, $s0, 4 t2 = s0 >> 4 Instruções booleanas and (AND booleano): ex., and $t0, $t1, $t2 t0 = t1&t2 or (OR booleano): ex., or $t0, $t1, $t2 t0 = t1 t2 nor (NOT OR booleano): ex., nor $t0, $t1, $zero t0 = (t1 zero)

Aplicação das instruções booleanas Recaptulando operações já estudadas Operações lógicas and: permite aplicar um padrão de bits sobre um conjunto de bits para forçar o resultado em 0 nas posições 0 do padrão (chamado normalmente operação de máscara) or: permite aplicar um padrão de bits sobre um conjunto de bits para forçar o resultado em 1 nas posições 1 do padrão nor: se um dos operandos for zero, então NOR é equivalente a NOT A NOR 0 = NOT(A OR 0) = NOT(A)

Extensões de and (andi) e or (ori) Recaptulando operações já estudadas Operações lógicas Assim como nas operações aritméticas, valores constantes são comuns também nas operações lógicas and e or O MIPS provê as instruções: and imediato (andi) e or imediato (ori)

Operações de tomada de decisão O que distingue um computador de uma calculadora simples é a capacidade de tomar decisões Baseado nos valores de entrada o nos valores computados durante a execução do programa, diferentes instruções são executadas Nas linguagens de programação de alto nível, tomadas de decisão são normalmente representadas pela sentença if-else, algumas vezes combinadas com sentenças go to e rótulos de desvio

Intruções de desvio Desvio condicional 1 beq (branch if equal): beq R1, R2, L1 vá para a sentença rotulada L1 se os valores dos registradores R1 e R2 forem iguais 2 bne (branch if not equal):beq R1, R2, L1 vá para a sentença rotulada L1 se os valores dos registradores R1 e R2 forem diferentes Desvio incondicional 1 j (jump): j FIM vá para a sentença rotulada FIM

Exemplo de implementação de if-then-else em MIPS Considere a sentença em C: if (i == j) f = g + h; else f = g h i=j i= =j? i j Else: f=g+h f=g h Exit: FIGURE2.9 Illustra tion of the options in the if state ment above. The left box corresponds to the then part of the if statement, and the right box corresponds to the else part. Copyright 2009 Elsevier, Inc. All rights reserved.

Exemplo de implementação de if-then-else em MIPS Considere que os valores de f,g,h,i,j estão nos registradores $s0 a $s4

Tarefas do Montador e do Compilador Rótulos (labels) O Montador libera o programador de linguagem de montagem e o Compilador da tarefa de calcular endereços de desvio, permitindo o uso de rótulos Go to e rótulos Quando go to (desvios) e labels (rótulos) não aparecem na Linguagem de Programação de nível mais alto, é o Compilador quem os constrõe (evitar os problemas de escrever rótulos e desvios é um dos benefícios das LPs)

Sumário As instruções de tomada de decisão são importante para escolher entre duas alternativas (uso de if) e para computações iterativas (uso de uma sequência de instruções repetidamente, ex., sentenças while, for, repeat) As mesmas instruções de linguagem de montagem são usadas como blocos fundamentais nos dois casos

Exemplo de implementação de while em MIPS Considere a sentença em C: while (save[i] == k) i += 1; Considere que os valores de i, k estão nos registradores $s3 e $s5 e a base do vetor save está em $s6 Como essa sentença pode ser traduzida para MIPS?

Exemplo de implementação de while em MIPS

slt e slti Avaliam se um valor é menor que outro: slt (set on less than): slt $t0, $s3, $s4 $t0 = 1, se $s3 < $s4 $t0 = 0, se $s3 > $s4 slti (slt imediato): slti $t0, $s3, 10

Dicotomia entre números com e sem sinal devem lidar com a dicotomia entre números com e sem sinal: Em números com sinal (complemento a 2), uma padrão de bits com o bit mais significativo igual a 1 representa um número negativo e é sempre MENOR que um padrão de bits com bit mais significativo igual a 0 Com números sem sinal é o contrário, um padrão que inicia com 1 é sempre maior que um padrão que inicia com 0...essas características podem ser exploradas para reduzir o custo da comparação!

sltu e sltiu O MIPS oferece duas versões da comparação slt para explorar as alternativas de comparação: 1 slt e slti: trabalham com números com sinal 2 sltu e sltiu: trabalham com números sem sinal Exemplo

Comparação dupla Otimização da sentença 0 x < y Tratando números com sinal como se eles fossem sem sinal, nos dá uma maneira de implementar uma sentença do tipo 0 x < y (usada normalmente para checar os limites de um vetor) com baixo custo A idéia básica é que inteiros negativos em C2 são números grandes na notação sem sinal...então uma comparação sem sinal de 0 x < y checa, ao mesmo tempo, x < y e x 0

Comparação dupla Exemplo Considere a sentença de comparação dupla 0 x < y e x em $s1 e y em $t2:

Implementação de condições relativas Os Compiladores MIPS usam as instruções beq, bne, slt, slti e o registrador $zero para criar as condições relativas: >, <,, =,,

Sentença case/switch Muitas LPs oferecem sentenças case ou switch que permitem selecionar uma de várias alternativas, dependendo de um único valor A maneira mais simples de implementar essa sentença é usando uma sequência se testes condicionais, transformando a sentença case/switch em sentenças if-then-else Algumas vezes pode ser mais eficiente codificar a sentença como uma tabela de endereços sequenciais de instruções alternativas, chamada tabela de endereços de desvio (vetor de endereços)... e o programa precisa apenas indexar essa tabela

Sentença case/switch e a instrução jr... o programa carrega a entrada apropriada da tabela (endereço para o desvio) em um registrador e faz o desvio usando o valor desse registrador Para dar suporte a essas situações, o MIPS inclui a instrução jr (jump register) ex., jr $t0 desvio incondicional para o endereço contido em $t0

Exercícios Sumário Exercícios Referências bibliográficas Primeira lista de exercícios Disponível em www.dcc.ufrj.br/ silvana/compprog/lista1.pdf

Exercícios Referências bibliográficas O produto do pensamento é superior ao produto da intuição. Aristophanes

Referências bibliográficas Exercícios Referências bibliográficas 1 Organização e projeto de computadores: a interface hardware/software, D. A. Patterson e J. L. Hennessy, Elsevier, 2005. 2 Simulador SPIM (http://pages.cs.wisc.edu/ larus/spim.html)