GSI013 – Arq. e Org. de Computadores Instruções Condicionais e de Acesso a Memória Arquitetura e Organização de Computadores Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala Na Aula Anterior ... 2 Nesta Aula • Instruções de controle de fluxo; • Codificando fluxo em Assembly: – If-then – If-then-else – Switch-case • Codificando repetições em Assembly: – while() / do while() – for() • Instruções de Acesso a memória 3 Instruções de Controle de Fluxo • • • • • • • • slt slti beq bne beqz bgtz blez bltz - set if less than - set if less than immediate - branch if equal - branch if not equal - branch if equal zero - branch if greather than zero - branch if less than or equal to zero - branch if less than zero 4 Instruções (2) • slt $t1,$t2,$t3 – Se t2 é menor que t3 então t1 = 1 senão t1 = 0 • slti $t1,$t2,-100 – Se t2 é menor ou igual a -100 então t1=1 senão t1-0 • beq $t1,$t2,label – Se t1 = t2 fluxo de execução pula para label • bne $t1,$t2,label – Se t1 !=t1 fluxo de execução pula para label • bgez $t1,label – Se t1>=0 fluxo de execução pula para label 5 Instruções (3) • bgtz $t1,label – Se t1>0 fluxo de execução pula para label • bltz $t1,label – Se t1<0 fluxo de execução pula para label • blez $t1,label – Se t1<=0 fluxo de execução pula para label 6 if –then - else 7 Switch/case • Jump address table 8 Switch/case (2) 9 Switch/case (3) 10 while 11 for 12 Jumps • Instruções de salto permitem alterar o fluxo de execução de programas; • A ISA do MIPS32 prevê vários tipos de instruções de salto: – Saltos relativos ao PC; – Saltos Absolutos. 13 Jump (2) j LABEL opcode address 31:26 25:0 PC address 31:28 27:02 00 14 Outras Instruções de Salto • jr – – – – • jal – – – – → jump register Usado para saltos absolutos; Usado em sub-rotinas (retorno da sub-rotina); Endereços de até 32 bits (capacidade do registrador); Ex: jr $s0 →jump and link Usado em sub-rotinas; Seta $ra para o endereço de PC+4 (prox. instrução); Salta para o endereço especificado; Ex: jal LABEL • jalr →jump and link register – Usado em sub-rotinas; – Seta $ra para PC+4 e salta para a pos. de mem. em $s0; – Ex: jalr $s0 15 Instruções de Acesso a Memória • Instruções que permitem a movimentação de dados entre o processador (registradores) e a memória; 16 Prolar • Leitura: – Hennessy: pgs. – Patterson: pgs. – Stallings: pgs. – Tanenbaum: pgs: 17