Escolar Documentos
Profissional Documentos
Cultura Documentos
06 - MIPS 2
I
Processamento de instruções
sequenciais
Op-code Rs Rt Immediate
6bits 5bits 5bits 16bits
I
ffffff sssss ttttt iiiiiiiiiiiiiiii
bne $s1 $s3 sai (n. de words saltadas)
5 17 18 1
001100 10001 10010 0000000000000001
I beq (Branch on Equal)
I Executa o desvio caso os valores a serem testados forem iguais
I beq [REG 1], [REG 2], [LABEL]
I REG 1 e REG 2 são os registradores a serem testados
Processamento de instruções
sequenciais
I LABEL o rótulo da instrução em que será desviada
I Execução do desvio e fluxo do controle
I 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)
I Um número positivo indica que o salto deve ser no sentido para
frente (até o fim do código)
I Um número negativo indica que o salto deve ser no sentido para
trás (até o início do código)
I slt (Set on Less Than)
Processamento de instruções
sequenciais
I Compara 2 registradores e armazena a resposta no registrador
alvo
I slt $s2,$s3,$t0
Op-code Rs Rt Rd Shamt Function-code
6bits 5bits 5bits 5bits 5bits 6bits
I
0x0 sssss ttttt ddddd 00000 ffffff
0x0 $s3 $t0 $s2 0 sra
0 19 8 18 0 2A16
000000 10011 01000 10010 00000 101010
I slti (Set on less than immediate)
Processamento de instruções
sequenciais
I Compara um registrador e uma constante
I slti $s2,$s3,30
I O uso do slt e beq juntos podem ser feitos para criar
qualquer outro tipo de instrução relacional
I j (JUMP)
I Desvio incondicional para um endereço de memória apontado por
um label
I Instruções do tipo branch indicam desvio da sequência do
programa mediante análise de uma condição
Processamento de instruções
sequenciais
I Instruções do tipo jump indicam desvio incondicional da
sequência do programa
I bne $s1, $s3, else
add $s4, $s3, $s5
j sai
else: sub $t0, $t1, $s5
sai: nop
Processamento de instruções
sequenciais
I
Processamento de instruções
sequenciais
I 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
I Como o endereço de memória é um múltiplo de 4 bytes seus dois
últimos bits não são representados na instrução jump
I O novo endereço consiste de 4 Bits mais significativos do PC
atual e de 26 (+2) Bits da instrução
Exercício