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

Documentos relacionados
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

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

Infraestrutura de Hardware. Instruindo um Computador

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

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

Organização e Arquitetura de Computadores I

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

SSC0611 Arquitetura de Computadores

MIPS ISA (Instruction Set Architecture)

SSC0114 Arquitetura de Computadores

Registradores na Arquitetura MIPS. 29/4/2016 MIPS - Instruction Set Architecture

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

Prof. Marcos Quinet Universidade Federal Fluminense UFF Pólo Universitário de Rio das Ostras - PURO

Conjunto de Instruções. Prof. Leonardo Barreto Campos 1

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 10

Organização e Projetos de Computadores. Capítulo 2. Organização e Projetos de Computadores. Instruções

Arquitetura de Computadores

Especificação do Projeto de Processador RISC

Arquitetura de Computadores. Linguagem de Máquina

3. INSTRUÇÕES. Instrução é uma palavra da linguagem de máquina. Instruction Set do MIPS ( usado pela NEC, Nintendo, Silicon Graphics e Sony.

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

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

Organização e Arquitetura de Computadores I

Organização de Computadores

Relembrando desempenho...

Infra-estrutura de Hardware

Conjunto de Instruções MIPS Parte I

Relembrando desempenho...

Organização de Computadores μarquitetura. Na Aula Anterior... Introdução. Nesta Aula. MIPS-Monociclo. Formas de Organização 17/10/2016

Infraestrutura de Hardware. Instruindo um Computador Subrotinas, Tipos de Dados e Modos de Endereçamento

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

ção de Computadores II

UCP: Construindo um Caminho de Dados (Parte I)

Nível Máquina Formatos de Instruções

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

Microcontroladores e Interfaces

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

Cap - 3: Linguagem de Máquina - MIPS

Capítulo 3. Instruções: Aritmética MIPS

Computadores de Programação (MAB353)

Conjunto de Instruções MIPS Parte IV

Capítulo 3. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

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

DataPath II Tomando o controle!

lw, sw add, sub, and, or, slt beq, j

Operações de Controle de Fluxo e Acesso a Memória. Na Aula Anterior... Nesta Aula. Instruções de Controle de Fluxo. if then - else.

4. Modelo de Programação do DLX Introdução

O Processador: Via de Dados e Controle

MIPS. Prof. Carlos Bazilio

Organização e Arquitetura de Computadores I

Faculdade de Computação

Escreva um programa em código assembly correspondente ao seguinte programa C.

Aula 17: UCP: Construindo um Caminho de Dados (Parte I)

Guia Rápido MIPS. Tipos de Dados e Formatações

ARQUITECTURA DE COMPUTADORES CAPÍTULO II AULA VII

ção de Computadores I

Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas

MICROPROCESSADORES II (EMA911915) NIOS II - ASSEMBLY 2 O SEMESTRE / 2018

Conjunto de Instruções MIPS Parte III

Exercícios resolvidos (aula de 4 de Maio) Resolução:

Sistemas de Computação Gabarito - Lista 2

Disciplina: Organização e Arquitetura de Computadores II Professores: Fabiano Hessel e Ney Calazans 22/abril/2009

ARQUITECTURA DE COMPUTADORES

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

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

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Aula 1. Cibele Lemos Freire Viginoski

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Arquitetura e Organização de Computadores

Neander - características

Arquitetura e Organização de Computadores

Anotações da 2a Edição

Arquiteturas de Computadores

Prof. Gustavo Oliveira Cavalcanti

Organização de Unidades de Processamento

Figura 1. Datapath do MIPS Superescalar Especulativo CES SE

Arquiteturas de Computadores. Princípios e exemplos de conjuntos de instruções

UNIVERSIDADE FEDERAL FLUMINENSE INSTITUTO DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO

Conteúdos: Debora, Edcarllos, livros! slides disponíveis!

[1] $2,$0,$3 105 [2] 0x004000e8

Questionário Arquitetura e Organização de Computadores

ARQUITETURA DO PROCESSADOR MIPS

Figura 8 Diagrama de Compilação

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização. Resposta:

Organização ou MicroArquitectura

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

PSI3441 Arquitetura de Sistemas Embarcados

Instruções. Maicon A. Sartin

Dicas: Nas linhas 7 e 8 as constantes imediatas são especificadas como caracteres ASCIIE, o que é aceito pelo montador MARS.

1: 2: 2, [1] [2] 0x x001f8021 $16,$0,$31 13 [3] 0x x

1: 2: 2, [1] [2] 0x x3c011001

Arquitetura de Computadores. Prof. Alexandro Baldassin. 1o semestre/2017

ção de Computadores I

Organização de Computadores

Faculdade de Computação

2. Descrição do Trabalho. Figura 1. Datapath do MIPS Superescalar CES SE

Procedimentos. Sistemas de Computação

Aula 14: Instruções e Seus Tipos

Organização de Computadores

Transcriçã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 DCC/UFAM - galvao@dcc.ufam.edu.br pelo Prof. Ricardo de Oliveira Duarte

Arquitetura MIPS :: Diagrama simplificado MUX MUX MUX MUX 2

Convenção de uso dos registradores Registrador Número Uso $zero 0 Valor constante igual a zero $v0-$v1 2-3 Retorno de funções $a0-$a3 4-7 Argumentos de funcoes $t0-$t7 8-15 Temporários, não precisam ser salvos $s0-$s7 16-23 Salvos por uma função chamada $t8-$t9 24-25 Mais temporários $gp 28 Apontador global $sp 29 Apontador de pilha $fp 30 Apontador de quadro $ra 31 Endereço de retorno 3

Princípios de projeto MIPS 1. Simplicidade favorece regularidade 2. Menor significa mais rápido 3. Agilize os casos mais comuns 4

:: Armazenamento na memória O espaço de endereçamento de memória do MIPS é de 2 30 palavras (de 32 bits) MIPS exige que todas as palavras comecem em endereços que são múltiplos de 4 bytes Alinhado Bytes na palavra 0 1 2 3 Não Alinhado 5

:: Armazenamento na memória Big endian - byte mais à esquerda marca endereço da palavra Little endian byte mais à direita marca endereço da palavra Exemplo: palavra = 6151CE94 h, endereço = 0F40 1) Big Endian: 0F40 61 51 CE 94 0F44 00 00 00 00 2) Little Endian: 0F40 94 CE 51 61 0F44 00 00 00 00 6

:: Instruções de transferência de dados nº. registrador dados endereço dados 0 1 2 3 31 90166000 ff666e30 0000000b 00000000 h 00000004 h 00000008 h 0000000c h 00000010 h 00000014 h 00000018 h 0000001c h 90166000 ff666e30 00000000 00000000 00000000 00000000 00000000 00000000 fffffffc h 0000000b Banco de Registradores Memória 7

:: Instruções de transferência de dados Load word (lw) Banco de registradores nº. dados registrador lw $30,4($2) endereço Memória dados 0 1 2 3 30 31 9016 6000 ff66 6e30 0000 000c 0000 012f 0000 000b + 00000000 h 00000004 h 00000008 h 0000000c h 00000010 h 00000014 h 00000018 h 0000001c h 9016 6000 ff66 6e30 0000 0000 0000 0000 0000 012f 0000 0000 0000 0000 0000 0000 fffffffc h 0000 000b 8

Representando instruções no computador Formato registrador (R) Shamt Formato imediato (I) Formato jump (J) 9

Lei de Amdahl O maior aumento de desempenho possível introduzindo melhorias numa determinada característica é limitado pela percentagem em que essa característica é utilizada Tempo de execução (Tex) após melhoria = T ex afetado pela melhoria Quantidade da melhoria + T ex não afetado F Tvelho F Tnovo 1 F Tvelho Tvelho 1 F S S Melhoria global T T velho novo F S 1 1 F 10

Sistemas Processadores e Periféricos Aula 3 - Conjunto de Instruções MIPS II 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 DCC/UFAM - galvao@dcc.ufam.edu.br pelo Prof. Ricardo de Oliveira Duarte

Transferência de Dados Lógicas Controle Suporte a procedimentos 12

:: Instruções Lógicas Operação lógica Instrução MIPS Significado Shift à esquerda sll Shift left logical Shift à direita srl Shift right logical AND bit a bit and, andi E OR bit a bit or, ori OR NOR bit a bit nor NOR 13

:: Instruções Lógicas Operações de deslocamento (shift) Deslocam todos os bits de uma palavra para esquerda ou direita, preenchendo os bits vazios com zero (não cíclico) São instruções do tipo R (registrador) A quantidade de bits a serem deslocados é especificada pelo campo shamt (shift amount) 14

:: Instruções Lógicas shift left logical (sll) sll $t2, $s0, 4 # $t2 $s0 << 4 Conteúdo: $s0 0110 1000 1111 0000 0111 0110 1111 1111 $t2 1000 1111 0000 0111 0110 1111 1111 0000 15

:: Instruções Lógicas shift left logical (sll) sll $t2, $s0, 4 # $t2 $s0 << 4 Instrução (decimal): op 0 sll rs 0 -- rt 16 $s0 rd 10 $t2 shamt 4 shamt funct 0 sll Instrução (binário): 000000 00000 10000 01010 00100 000000 16

:: Instruções Lógicas shift right logical (srl) srl $t2, $s0, 8 # $t2 $s0 >> 8 Conteúdo: $s0 0110 1000 1111 0000 0111 0110 1111 1111 $t2 0000 0000 0110 1000 1111 0000 0111 0110 17

:: Instruções Lógicas shift right logical (srl) srl $t2, $s0, 8 # $t2 $s0 >> 8 Instrução (decimal): op 0 srl rs 0 -- rt 16 $s0 rd 10 $t2 shamt 8 shamt funct 2 srl Instrução (binário): 000000 00000 10000 01010 01000 000010 18

:: Instruções Lógicas shift right arithmetic (sra) Desloca bits à direita, preservando o sinal (compl. a 2) Deslocamento de n bits corresponde à divisão por 2 n Dica: para divisões com valores de tipo integer sra $t2, $s0, 4 # $t2 $s0 >> 4 Conteúdo: $s0 1110 1000 1111 0000 0111 0110 1111 1111 $t2 1111 1110 1000 1111 0000 0111 0110 1111 19

:: Revisão Complemento a 2-4 -5-3 -6-2 1101 1100 1011 1010-7 1111 1110 1001-1 1000-8 +0 0000 0001 0111 +7 0110 +1 0010 0011 0100 0101 +6 +2 +3 +4 +5 + 0 100 = + 4-8 421 1 100 = - 4-20

:: Instruções Lógicas shift right arithmetic (sra) sra $t2, $s0, 4 # $t2 $s0 >> 4 Instrução (decimal): op 0 sra rs 0 -- rt 16 $s0 rd 10 $t2 shamt 4 shamt funct 3 sra Instrução (binário): 000000 00000 10000 01010 00100 000011 21

:: Instruções Lógicas AND bit a bit (and) and $t0, $t1, $t2 # $t0 $t1 & $t2 Conteúdo: $t1 0000 0000 1111 0000 0000 0110 0000 1111 $t2 0000 0000 0110 0000 0000 0000 0000 1110 $t0 0000 0000 0110 0000 0000 0000 0000 1110 22

:: Instruções Lógicas AND bit a bit (and) and $t0, $t1, $t2 # $t0 $t1 & $t2 Instrução (decimal): op 0 and rs 9 $t1 rt 10 $t2 rd 8 $t0 shamt 0 -- funct (24) h and Instrução (binário): 000000 01001 01010 01000 00000 100100 23

:: Instruções Lógicas OR bit a bit (or) or $t0, $t1, $t2 # $t0 $t1 $t2 Conteúdo: $t1 0000 0000 1111 0000 0000 0110 0000 1111 $t2 0000 0000 0110 0000 0000 0000 0000 1110 $t0 0000 0000 1111 0000 0000 0110 0000 1111 24

:: Instruções Lógicas OR bit a bit (or) or $t0, $t1, $t2 # $t0 $t1 $t2 Instrução (decimal): op 0 or rs 9 $t1 rt 10 $t2 rd 8 $t0 shamt 0 -- funct (25) h or Instrução (binário): 000000 01001 01010 01000 00000 100101 25

:: Instruções Lógicas NOR bit a bit (nor) A operação NOT (negação) tem apenas um operando Para acompanhar o formato de dois operandos, a instrução NOR foi projetada no lugar do NOT Se um operando for zero, NOR é equivalente ao NOT: A NOR 0 = NOT (A OR 0) = NOT (A) 26

:: Instruções Lógicas NOR bit a bit (nor) nor $t0, $t1, $zero # $t0 ~ $t1 Instrução (decimal): op 0 nor rs 9 $t1 rt 0 $zero rd 8 $t0 shamt 0 -- funct (27) h nor Instrução (binário): 000000 01001 00000 01000 00000 100111 27

:: Instruções Lógicas XOR bit a bit (xor) xor $t0, $t1, $t2 # $t0 $t1 $t2 Instrução (decimal): op 0 xor rs 9 $t1 rt 10 $t2 rd 8 $t0 shamt 0 -- funct (26) h xor Instrução (binário): 000000 01001 01010 01000 00000 100110 28

:: Instruções Lógicas AND imediato (andi) andi $t0, $t1, 40 # $t0 $t1 & 40 Instrução (decimal): op (C) h rs 9 rt 8 immediate 40 andi $t1 $t0 constante Instrução (binário): 001100 01001 01000 0000000000101000 29

:: Instruções Lógicas OR imediato (ori) ori $t0, $t1, 40 # $t0 $t1 40 Instrução (decimal): op (D) h rs 9 rt 8 immediate 40 ori $t1 $t0 constante Instrução (binário): 001101 01001 01000 0000000000101000 30

:: Instruções Lógicas :: Resumo 31

Transferência de Dados Lógicas Controle Suporte a procedimentos 32

:: Processando instruções sequenciais endereços Memória conteúdo significado Região de Códigos 00000000 h 00400000 h 00400004 h 00400008 h 0040000c h 00400010 h 3c08 1000 8d09 0004 8d0a 0010 012a 4820 ad09 0008 lui $8, 0x1000 lw $9, 4($8) lw $10,16($8) add $9, $9, $10 sw $9, 8($8) instruções Região de Dados 0ffffffc h 10000000 h 10000004 h 10000008 h 1000000c h 10000010 h 10007ffc h 10008000 h 10008004 h 10008008 h 0000 0000 0000 0003 ffff fff0 0000 0000 0000 0000 0000 0003 x y n[0] n[1] n[2] variáveis fffffffc h 33

:: Processando instruções seqüenciais Processador endereços Memória conteúdo significado PC IR 00400000 3c081000 00000000 h 00400000 h 00400004 h 00400008 h 0040000c h 00400010 h 0ffffffc h 3c08 1000 8d09 0004 8d0a 0010 012a 4820 ad09 0008 0000 0000 lui $8, 0x1000 lw $9, 4($8) lw $10,16($8) add $9, $9, $10 sw $9, 8($8) Execução da instrução lui na via de dados 34

:: Processando instruções seqüenciais Processador endereços Memória conteúdo significado PC IR 00400004 8d090004 00000000 h 00400000 h 00400004 h 00400008 h 0040000c h 00400010 h 0ffffffc h 3c08 1000 8d09 0004 8d0a 0010 012a 4820 ad09 0008 0000 0000 lui $8, 0x1000 lw $9, 4($8) lw $10,16($8) add $9, $9, $10 sw $9, 8($8) Execução da instrução lw na via de dados 35

:: Processando instruções seqüenciais Processador endereços Memória conteúdo significado PC IR 00400008 8d0a0010 00000000 h 00400000 h 00400004 h 00400008 h 0040000c h 00400010 h 0ffffffc h 3c08 1000 8d09 0004 8d0a 0010 012a 4820 ad09 0008 0000 0000 lui $8, 0x1000 lw $9, 4($8) lw $10,16($8) add $9, $9, $10 sw $9, 8($8) Execução da instrução lw na via de dados 36

:: Processando instruções seqüenciais Processador endereços Memória conteúdo significado PC IR 0040000c 012a4820 00000000 h 00400000 h 00400004 h 00400008 h 0040000c h 00400010 h 0ffffffc h 3c08 1000 8d09 0004 8d0a 0010 012a 4820 ad09 0008 0000 0000 lui $8, 0x1000 lw $9, 4($8) lw $10,16($8) add $9, $9, $10 sw $9, 8($8) Execução da instrução add na via de dados 37

:: Processando instruções seqüenciais Processador endereços Memória conteúdo significado PC IR 00400010 ad090008 00000000 h 00400000 h 00400004 h 00400008 h 0040000c h 00400010 h 0ffffffc h 3c08 1000 8d09 0004 8d0a 0010 012a 4820 ad09 0008 0000 0000 lui $8, 0x1000 lw $9, 4($8) lw $10,16($8) add $9, $9, $10 sw $9, 8($8) Execução da instrução sw na via de dados 38

:: Instruções de controle Instruções para tomada de decisão Alteram o fluxo de controle do programa Alteram a próxima instrução a ser executada Instruções de controle: Salto condicional Salto incondicional 39

:: Instruções de controle Instruções MIPS para salto condicional: Branch on equal (beq) Branch on not equal (bne) Set on less than (slt) Set on less than immediate (slti) Instruções MIPS para salto incondicional: jump (j) 40

:: Instruções de controle Branch on not equal (bne) Desvia o programa para <label1> se $t0!= $t1 bne $t0, $t1, label1 #if ($t0!= $t1) goto label1 Branch on equal (beq) Desvia o programa para <label2> se $t0 == $t1 beq $t0, $t1, label2 #if ($t0 == $t1) goto label2 41

:: Instruções de controle :: Ex 01 Exemplo sai: bne $8, $9, sai add $10, $8, $9 nop não i = j sim h = i + j 42

:: Instruções de controle :: Ex 01.1 $8 $9 $10 Processador endereços 00000000 h 00000004 00400000 h 1509 0002 bne $8, $9, sai add $10, $8, $9 sai: nop 00000003 00400004 h 00400008 h 0ffffffc h Memória conteúdo 0109 5020 0000 0000 0000 0000 significado PC 00400000 Execução da instrução bne na via de dados 43

:: Instruções de controle :: Ex 01.1 $8 $9 $10 Processador endereços 00000000 h 00000004 00400000 h 1509 0002 bne $8, $9, sai add $10, $8, $9 sai: nop 00000003 00400004 h 00400008 h 0ffffffc h Memória conteúdo 0109 5020 0000 0000 0000 0000 significado PC 00400008 desvio para o label sai 44

:: Instruções de controle :: Ex 01.2 $8 $9 $10 Processador endereços 00000000 h 00000004 00400000 h 1509 0002 bne $8, $9, sai add $10, $8, $9 sai: nop 00000004 00400004 h 00400008 h 0ffffffc h Memória conteúdo 0109 5020 0000 0000 0000 0000 significado PC 00400000 Execução da instrução bne na via de dados. 45

:: Instruções de controle :: Ex 01.2 $8 $9 $10 Processador endereços 00000000 h 00000004 00400000 h 1509 0002 bne $8, $9, sai add $10, $8, $9 sai: nop 00000004 00000008 00400004 h 00400008 h 0ffffffc h Memória conteúdo 0109 5020 0000 0000 0000 0000 significado PC 00400004 Execução da instrução add na via de dados 46

:: Instruções de controle :: Ex 01.2 $8 $9 $10 Processador endereços 00000000 h 00000004 00400000 h 1509 0002 bne $8, $9, sai add $10, $8, $9 sai: nop 00000004 00000008 00400004 h 00400008 h 0ffffffc h Memória conteúdo 0109 5020 0000 0000 0000 0000 significado PC 00400008 Fim de execução 47

:: Instruções de controle :: Formato Branch on not equal (bne) bne $t0, $t1, label Instrução (decimal): op 5 rs 8 rt 9 immediate xx bne $t0 $t1 n o. words saltadas Instrução (binário): 000101 01000 01001 xxx (16 bits) 48

:: Instruções de controle :: Formato Branch on equal (beq) beq $t0, $t1, label Instrução (decimal): op 4 rs 8 rt 9 immediate xx beq $t0 $t1 n o. words saltadas Instrução (binário): 000100 01000 01001 xxx (16 bits) 49

:: Instruções de controle :: Formato As instruções de desvio condicional armazenam, no campo immediate, a quantidade de palavras (words) que devem ser saltadas para chegar a instrução marcada pelo label (rótulo) Um número positivo indica que o salto deve ser no sentido para frente (até o fim do código) Um número negativo indica que o salto deve ser no sentido para trás (até o início do código) 50

:: Instruções de controle Set on less than (slt) Compara dois registradores slt $s1, $s2, $s3 #if ($s2 < $s3) $s1 = 1 #else $s1 = 0 Set on less than immediate (slti) Compara um registrador e uma constante slti $s1, $s2, 100 #if ($s2 < 100) $s1 = 1 #else $s1 = 0 51

:: Instruções de controle Instruções do tipo Set on less than combinadas com instruções do tipo Branch permitem criar todas as condições relativas: igual diferente maior maior ou igual menor menor ou igual 52

:: Instruções de controle Jump (j) Desvio incondicional para um endereço de memória apontado por um label j label Instruções do tipo branch indicam desvio da sequência do programa mediante análise de uma condição Instruções do tipo jump indicam desvio incondicional da sequência do programa 53

:: Instruções de controle :: Ex 02 Exemplo bne $8, $9, else add $10, $8, $9 j sai else: sub $10, $8, $9 sai: nop h = i - j não i = j sim h = i + j 54

:: Instruções de controle :: Ex 02.1 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000003 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 h 0000 0000 sai: nop PC 00400000 Execução da instrução bne na via de dados 55

:: Instruções de controle :: Ex 02.1 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000003 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 0000 0000 00000001 h sai: nop PC 0040000c Execução da instrução sub na via de dados 56

:: Instruções de controle :: Ex 02.1 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000003 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 0000 0000 00000001 h sai: nop PC 00400010 Fim de execução 57

:: Instruções de controle :: Ex 02.2 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000004 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 h 0000 0000 sai: nop PC 00400000 Execução da instrução bne na via de dados 58

:: Instruções de controle :: Ex 02.2 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000004 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 0000 0000 00000008 h sai: nop PC 00400004 Execução da instrução add na via de dados 59

:: Instruções de controle :: Ex 02.2 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000004 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 0000 0000 00000008 h sai: nop PC 00400008 Execução da instrução j na via de dados 60

:: Instruções de controle :: Ex 02.2 $8 $9 $10 Processador endereços Memória conteúdo significado 00000000 h 00000004 00400000 h 1509 0003 bne $8, $9, else 00400004 h 0109 5020 add $10, $8, $9 00000004 00400008 h 0810 0004 j sai 0040000c h 0109 5022 else: sub $10, $8, $9 00400010 0000 0000 00000008 h sai: nop PC 00400010 Desvio incondicional Fim de execução 61

:: Instruções de controle :: Ex 3 Exemplo slt $11, $8, $9 beq $11, $0, else add $10, $8, $9 j sai else: sub $10, $8, $9 sai: nop h = i - j não i < j sim h = i + j 62

:: Instruções de controle :: Ex 03.1 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000000A 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000001C 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 h 0109 5022 else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000001 00400000 Execução da instrução slt na via de dados 63

:: Instruções de controle :: Ex 03.1 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000000A 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000001C 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 h 0109 5022 else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000001 00400004 Execução da instrução beq na via de dados 64

:: Instruções de controle :: Ex 03.1 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000000A 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000001C 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 0109 5022 00000026 h else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000001 00400008 Execução da instrução add na via de dados 65

:: Instruções de controle :: Ex 03.1 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000000A 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000001C 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 0109 5022 00000026 h else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000001 0040000c Execução da instrução j na via de dados 66

:: Instruções de controle :: Ex 03.1 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000000A 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000001C 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 0109 5022 00000026 h else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000001 00400014 Desvio incondicional. Fim da execução 67

:: Instruções de controle :: Ex 03.2 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000001C 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000000A 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 h 0109 5022 else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000000 00400000 Execução da instrução slt na via de dados 68

:: Instruções de controle :: Ex 03.2 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000001C 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000000A 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 h 0109 5022 else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000000 00400004 Execução da instrução beq na via de dados 69

:: Instruções de controle :: Ex 03.2 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000001C 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000000A 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 0109 5022 00000012 h else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000000 00400010 Desvio condicional. Execução da instrução sub na via de dados 70

:: Instruções de controle :: Ex 03.2 $0 $8 $9 $10 $11 PC Processador 00000000 endereços Memória conteúdo significado 00000000 h 0000001C 00400000 h 0109 582a slt $11, $8, $9 00400004 h 1160 0003 beq $11, $0, else 0000000A 00400008 h 0109 5020 add $10, $8, $9 0040000c h 0810 0005 j sai 00400010 h 0109 5022 else: sub $10, $8, $9 00400014 h 0000 0000 sai: nop 00000000 00400010 Fim da execução 71

:: Instruções de controle :: Formato Set on less than (slt) slt $t0, $t1, $t2 #if ($t1 < $t2) $t0 = 1 #else $t0 = 0 Instrução (decimal): op 0 slt rs 9 $t1 rt 10 $t2 rd 8 $t0 shamt 0 -- funct (2A) h slt Instrução (binário): 000000 01001 01010 01000 00000 101010 72

:: Instruções de controle :: Formato Set on less than immediate (slti) slti $t0, $t1, 100 #if ($t1 < 100) $t0 = 1 #else $t0 = 0 Instrução (decimal): op (A) h rs 9 rt 8 immediate 100 slti $t1 $t0 valor Instrução (binário): 001010 01001 01000 0000000001100100 73

:: Instruções de controle :: Formato Jump (j) j label # PC endereço[label] Instrução (decimal): op target (2) h xxx j endereço da instrução Instrução (binário): 000010 xxx (26 bits) 74

:: Instruções de controle :: Formato Ao contrário das instruções de desvio condicional (beq e bne), o campo target da instrução jump armazena o endereço da memória correspondente à instrução marcada pelo label Como o endereço de memória é um múltiplo de 4 bytes (100 b ), seus dois últimos bits não são representados na instrução jump O novo endereço consiste de 4 Bits mais significativos do PC atual e de 26 (+2) Bits da instrução 75

:: Instruções de controle :: Resumo slti slti $10, $8, 100 100 76

O que você aprenderam hoje? Instruções lógicas Formas de shift AND, OR, NOR, XOR e versões imediatas Processo de instruções sequenciais Instruções de controle Condicional, incondicional Formato

Questões Como fazer? while loop while (save[i]!= k) { i += 1; } Código de assembly // $s3 = i, $s5 = k, $s6 = base of save[] Loop: sll $t1, $s3, 2 #t1 = 4*i add $t1, $t1, $s6 #t1 = end. de save[i] lw $t0, 0($t1) # t0 = valor de save[i] beq $t0, $s5, Exit # if save[i] = k vai p. Exit addi $s3, $s3, 1 # i = i + 1 j Loop Exit: nop

Questões Como fazer? for loop for (j < k) { j += 1; } Código de assembly // $s1 = j, $s2 = k Loop: slt $t1,$s1,$s2 #t1 = 1 if j < k, else t1 = 0 beq $t1, $0, Exit # if j>= k then Exit addi $s1,$s1, 1 # j = j + 1 j Loop Exit: nop