Faculdade de Ciências Aplicadas e Sociais de Petrolina FACAPE Conjunto de Pae II Transferência de Dados Lógicas Controle Supoe a procedimentos Prof. Sérgio Adaptado dos slides de Sistemas Processadores do Prof. Frank Torres - UFMG Organização de Computadores 1 Organização de Computadores 2 Operação lógica deslocamento à esquea deslocamento à direita E bit a bit OU bit a bit NOU bit a bit MIPS sll srl and, andi or, ori nor Significado shift left logical shift right logical and or notor Operações de deslocamento (shift). Deslocam todos os bits de uma palavra para esquea 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 (shift amount). Organização de Computadores 3 Organização de Computadores 4
shift left logical(sll) shift left logical(sll) sll $t2, $s, 4 # $t2 $s << 4 sll $t2, $s, 4 # $t2 $s << 4 Conteúdo: $s 11 1 1111 111 11 1111 1111 sll 16 $s 1 $t2 4 sll $t2 1 1111 111 11 1111 1111 1 11 1 Organização de Computadores 5 Organização de Computadores 6 shift right logical(srl) shift right logical(srl) srl $t2, $s, # $t2 $s >> srl $t2, $s, # $t2 $s >> Conteúdo: $s 11 1 1111 111 11 1111 1111 srl 16 $s 1 $t2 2 srl $t2 11 1 1111 111 11 1 11 1 1 Organização de Computadores 7 Organização de Computadores
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. :: Revisão Complemento de 2 1 = +4 Complemento de 1: 111 Soma 1: +1 11 = -4 Conteúdo: sra $t2, $s, 4 # $t2 $s >> 4 $s 111 1 1111 111 11 1111 1111 $t2 1111 111 1 1111 111 11 1111 Organização de Computadores Organização de Computadores 1 shift right arithmetic(sra) sra $t2, $s, 4 # $t2 $s >> 4 AND bit a bit (and) and $t,, $t2 # $t & $t2 sra 16 $s 1 $t2 4 3 sra Conteúdo: 1111 11 1111 $t2 11 1111 111 1 11 1 11 $t 11 11 111 Organização de Computadores 11 Organização de Computadores 12
AND bit a bit (and) and $t,, $t2 # $t & $t2 OR bit a bit (or) or $t,, $t2 # $t $t2 and 1 $t2 $t (24) h and Conteúdo: 1111 11 1111 11 11 1 11 $t2 11 111 $t 1111 11 1111 Organização de Computadores 13 Organização de Computadores 14 OR bit a bit (or) or $t,, $t2 # $t $t2 or 11 1 $t2 11 $t 1 (25) h or 111 NOR bit a bit (nor) A eração NOT (negação) tem apenas um erando. Para acompanhar o formato de dois erandos, a instrução NOR foi projetada no lugar do NOT. Se um erando for zero, NOR éequivalente ao NOT: A NOR = NOT (A OR ) = NOT (A) Organização de Computadores 15 Organização de Computadores 16
NOR bit a bit (nor) XOR bit a bit (xor) nor $t,, $zero # $t ~ xor $t,, $t2 # $t $t2 nor $zero $t (27) h nor xor 1 $t2 $t (26) h xor 11 1 1111 11 11 1 111 Organização de Computadores 17 Organização de Computadores 1 AND imediato (andi) andi $t,, 4 # $t & 4 OR imediato (ori) ori $t,, 4 # $t 4 (C) h andi $t immediate 4 constante (D) h ori $t immediate 4 constante 11 11 1 11 111 11 1 11 Organização de Computadores 1 Organização de Computadores 2
:: Resumo Categoria Nome or Exemplo or $,$,$1 Operação $ = $ or$1 Comentários Transferência de Dados and xor nor and $,$,$1 xor $,$,$1 nor $,$,$1 $ = $ and$1 $ = $ xor$1 $ = $ nor$1 Lógicas Controle lógicas andi ori andi $,$,5 ori $,$,4 $ = $ and5 $ = $ or4 Imediato em 16 bits Imediato em 16 bits Supoe a procedimentos sll sll $,$,1 $ = $ << 1 Deslocamento 32 srl srl $,$,5 $ = $ >> 5 Deslocamento 32 sra sra $,$,5 $ = $ >> 5 Desl. 32, preserva sinal Operações Lógicas do MIPS Organização de Computadores 21 Organização de Computadores 22 Organização de Computadores 23 Organização de Computadores 24
Organização de Computadores 25 Organização de Computadores 26 Organização de Computadores 27 Organização de Computadores 2
:: 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. :: Instruções de controle para salto condicional: Branch on equal (beq) Branch on not equal (bne) Set on less than (slt) Set on less than immediate (slti) para salto incondicional: jump(j) Organização de Computadores 2 Organização de Computadores 3 :: Instruções de controle Branch on not equal (bne) Desvia o programa para <label1> se $t!= bne $t,, label1 #if ($t!= ) goto label1 Branchonequal(beq) Desvia o programa para <label2> se $t == :: Instruções de controle :: Ex 1 Exemplo: bne $, $, sai add $1, $, $ sai: n beq $t,, label2 #if ($t == ) goto label2 Organização de Computadores 31 Organização de Computadores 32
Organização de Computadores 33 Organização de Computadores 34 Organização de Computadores 35 Organização de Computadores 36
:: Instruções de controle :: Formato Branch on not equal (bne) bne $t,, label 5 bne $t immediate xxx nº de wos saltadas 11 1 11 xxx (16 bits) Organização de Computadores 37 Organização de Computadores 3 :: Instruções de controle :: Formato :: Instruções de controle :: Formato Branch on equal (beq) beq $t,, label 4 beq $t immediate xxx nº de wos saltadas As instruções de desvio condicional armazenam, no campo immediate, a quantidade de palavras (wos) que devem ser saltadas para chegar à 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). 1 1 11 xxx (16 bits) Um número negativo indica que o salto deve ser no sentido para trás (atéo início do código). Organização de Computadores 3 Organização de Computadores 4
:: Instruções de controle Set on less than (slt) Compara dois registradores. slt $s1, $s2, $s3 #if ($s2 < $s3) $s1 = 1 #else $s1 = Set on less than immediate (slti) Compara um registrador e uma constante. slti $s1, $s2, 1 #if ($s2 < 1) $s1 = 1 #else $s1 = Organização de Computadores 41 :: Instruções de controle Instruções do tipo Set onlessthan combinadas com instruções do tipo Branch permitem criar todas as condições relativas: igual diferente maior maior ou igual menor menor ou igual Organização de Computadores 42 :: 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 branchindicam desvio da sequênciado programa mediante análise de uma condição. Instruções do tipo jumpindicam desvio incondicional da sequência do programa. :: Instruções de controle :: Ex 2 Exemplo bne $, $, else add $1, $, $ j sai else: sub $1, $, $ sai: n Organização de Computadores 43 Organização de Computadores 44
Organização de Computadores 45 Organização de Computadores 46 Organização de Computadores 47 Organização de Computadores 4
Organização de Computadores 4 Organização de Computadores 5 :: Instruções de controle :: Formato Set on less than (slt) slt $t,, $t2 #if ( < $t2) $t = 1 #else $t = slt 1 $t2 $t (2A) h slt 11 11 1 111 Organização de Computadores 51 Organização de Computadores 52
:: Instruções de controle :: Formato Set on less than immediate (slti) :: Instruções de controle :: Formato Jump (j) slti $t,, 1 #if ( < 1) $t = 1 #else $t = j label # PC endereço[label] (A) h slti $t immediate 1 valor target (2) h xxx j endereço da instrução 11 11 1 111 1 xxx (26 bits) Organização de Computadores 53 Organização de Computadores 54 :: Instruções de controle :: Formato Ao contrário das instruções de desvio condicional (beqe bne), o campo targetda 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 (1 b ), seus dois últimos bits não são representados na instrução jump. O novo endereço consiste dos 4 bits mais significativos do PC atual e dos 26 (+2) bits da instrução. Organização de Computadores 55 :: Instruções de controle :: Resumo Categoria Supoe a decisão Nome bne beq j slt slti Exemplo bne $,$,rotulo beq $,$,rotulo j rotulo slt $1,$,$ slti $1,$,1 Operação se $ $ então PC endereço[rotulo] se $ = $ então PC endereço[rotulo] PC endereço[rotulo] se $ <$ então $1 1 senão $1 se $ <1 então $1 1 senão $1 Organização de Computadores 56
Questões Questões Como fazer? while lo Código assembly // $s3 = i, $s5 = k, $s6 = base ofsave[] Como fazer? for lo Código assembly // $s1 = j, $s2 = k while(save[i]!= k) { i += 1; } Lo: sll, $s3, 2 #t1 = 4*i add,, $s6 #t1 = end. de save[i] lw$t, () # t = valor de save[i] beq$t, $s5, Exit # ifsave[i] = k vai p. Exit addi$s3, $s3, 1 # i = i + 1 j Lo Exit: n for (j < k) { j += 1; } Lo: slt,$s1,$s2 # t1 = 1 if j < k, else t1 = beq, $, Exit # if j>= k then Exit addi$s1,$s1, 1 # j = j + 1 j Lo Exit: n Organização de Computadores 57 Organização de Computadores 5