Baixe o app para aproveitar ainda mais
Prévia do material em texto
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INSTRUÇÕES DE DESVIO Críjina Chagas ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Instruções para tomada de decisão: Alteram o fluxo de controle do programa; Alteram a “próxima” instrução a ser executada. Instrução de Desvio: Salto condicional; Salto incondicional. ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Instruções MIPS para salto condicional: Branch if equal (beq); Branch if not equal (bne); Instruções MIPS para salto incondicional jump (j) ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Branch if equal (beq) beq registrador1, registrador2, L1 Semântica: Ir até a instrução rotulada por L1 se o valor no registrador 1 for igual ao valor no registrador 2 ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Branch if not equal (bne): bne registrador1, registrador2, L1 Semântica: Ir até a instrução rotulada por L1 se o valor no registrador 1 não for igual ao valor no registrador 2 ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Desvio incondicional : J rotulo Semântica: Ir para o rótulo especificado, incondicionalmente. ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Supondo que as cinco variáveis de f ate j corresponda aos cinco registradores de $s0 a $s4, qual p código MIPS gerado pelo compilador? if ( i == j) f = g + h; else f = g – h; ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Vejamos a solução: bne $s3, $s4, Else # Desvia para Else se i ≠ j add $s0, $s1, $s2 # f = g + h (ignorada se i ≠ j ) j Exit # Desvia para Exit Else: sub $s0, $s1, $s2 # f = g – h (ignorada se i=j) Exit: # Label Exit ARQUITETURA MIPS Linguagem de Montagem (Assembly) – Instruções de desvio Sejam A e B com o endereço de memória dado nos registradores, respectivamente, em $s0 e $s1. Qual o código assembly MIPS correspondente? if (A==B) A++; else B++; _______________________ if (A!=5) A++; else A--;
Compartilhar