Você está na página 1de 29

Arquitetura de

Computadores
Prof. Rodrigo Monteiro de Aquino
Arquitetura de Computadores
Aula de hoje

● Fluxograma de um algoritmo
● Desvio Condicional
○ if,then, else
■ Instruções MIPS: jump, beq, bne
● Laços
● exercícios
Arquitetura de Computadores
Início

a=2
Fluxograma de um algoritmo

● b=3

c=a+b

F
c = 5?

c=5 V

Fim
Arquitetura de Computadores
Início

a=2
Fluxograma de um algoritmo

● Determinação de início e fim de código b=3

c=a+b

F
c = 5?

c=5 V

Fim
Arquitetura de Computadores
Início

a=2
Fluxograma de um algoritmo

● Determinação de início e fim de código b=3


● Operações
c=a+b

F
c = 5?

c=5 V

Fim
Arquitetura de Computadores
Início

a=2
Fluxograma de um algoritmo

● Determinação de início e fim de código b=3


● Operações
● Fluxo do algoritmo
c=a+b

F
c = 5?

c=5 V

Fim
Arquitetura de Computadores
Início

a=2
Fluxograma de um algoritmo

● Determinação de início e fim de código b=3


● Operações
● Fluxo do algoritmo
c=a+b
● Tomada de decisão (desvios de fluxo)
F
c == 5?

c=5 V

Fim
Arquitetura de Computadores
Desvios condicionais F
c == 5?

● Lê-se: c=5 V
○ Caso c seja igual a 5 ir para Fim, caso contrário
atribuir 5 a c e ir para Fim Fim
Arquitetura de Computadores
Desvios condicionais F
c == 5?

● Lê-se: c=5 V
○ Caso c seja igual a 5 ir para Fim, caso contrário
atribuir 5 a c e ir para Fim Fim
● No MIPS:
○ Branch if equal
Arquitetura de Computadores
Desvios condicionais F
c == 5?

● Lê-se: c=5 V
○ Caso c seja igual a 5 ir para Fim, caso contrário
atribuir 5 a c e ir para Fim Fim
● No MIPS:
○ Branch if equal
○ Branch if not equal
Arquitetura de Computadores
Desvios condicionais F
c == 5?

● Lê-se: c=5 V
○ Caso c seja igual a 5 ir para Fim, caso contrário
atribuir 5 a c e ir para Fim Fim
● No MIPS:
○ Branch if equal Compostos de uma
○ Branch if not equal instrução ‘if’ e um
desvio
Arquitetura de Computadores
Desvio incondicional F
c == 5?

● Uma vez que entramos em um “fluxo alternativo” do c=5 V


código, devemos voltar para algum ponto do código
Fim
Arquitetura de Computadores
Desvio incondicional F
c == 5?

● Uma vez que entramos em um “fluxo alternativo” do c=5 V


código, devemos voltar para algum ponto do código
● No MIPS: Fim
○ Jump
Arquitetura de Computadores
Desvios

Exemplo

Código de alto nível:

Figura 2.9 do livro


Em MIPS:
Arquitetura de Computadores
Desvios

Exemplo

Código de alto nível:

Figura 2.9 do livro


Em MIPS:

Rótulos
Arquitetura de Computadores
Laços

Instruções que permitem a execução repetida de trechos


Em C:
do algoritmo
Arquitetura de Computadores
Laços

Instruções que permitem a execução repetida de trechos do


Em C:
algoritmo

Suposições:

● i e K: registradores $s3 e $s5


● base do array save está em $s6

Como este trecho de código ficaria em assembly do MIPS?


Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Devemos obter o valor do endereço de save[i]. Para isso, temos


que calcular sua posição efetiva, antes de somar ao valor de base
do array:
Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Soma do valor de i efetivo ao valor do endereço de base do array


save.
Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Carregar o valor armazenado na posição de memória encontrado


(save[i])
Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Determinando o critério de parada do loop: quando save[i] for


diferente de k, sair do loop.
Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Incremento na variável de controle, para que o laço funcione de


acordo.
Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Instrução de retorno do laço.


Arquitetura de Computadores
Laços

● i e K: registradores $s3 e $s5


Em C:
● base do array save está em $s6

Código completo
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● Endereço de memória de a e de b estão armazenado em $s1 e $s2, respectivamente

1)
if (a != b)
a=b-1
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● Endereço de memória de a e de b estão armazenado em $s1 e $s2, respectivamente

2)
while (a != b)
a += 1
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3
● base do array arr1 está em $s4
● Endereço de memória de a e de b estão armazenado em $s1 e $s2, respectivamente

3)
while (arr[i] != b)
a += b
i+=1
Arquitetura de Computadores
Exercícios

Converta os códigos a seguir em instruções assembly do MIPS:


● i: registrador $s3;
● base do array arr1 está em $s4
● base do array arr2 está em $s5
● base do array arr3 está em $s6
● Endereço de memória de a e de b estão armazenado em $s1 e $s2, respectivamente

4) i = 0 ;
while ( i !=5 )
arr3[i] = arr1[i] + arr2[i]
i+=1
Fim!

Prof. Rodrigo Monteiro de Aquino


rodrigo.aquino@eseg.edu.br

Você também pode gostar