Pular para o conteúdo

Exercício 5

Consolidar o aprendizado da linguagem Assembly RISC-V e compreender como as instruções de desvio condicional são executadas dentro de um laço. A seguinte expressão em C é traduzida para assembly usando bne e j:

while (save[i] == k)
i = i + 1;
  1. Abra o simulador de linguagem RISC-V.
  2. No editor de texto do simulador, transcreva o código abaixo:
# Exercício 05
# C expression:
# while (save[i] == k)
# i = i + 1;
.data
Array_save: .word 3, 3, 1, 3, 3, 1, 4, 3, 1 # save[0] até save[8]
.text
main:
la s6, Array_save # endereço base de save[]
addi s5, zero, 3 # k = 3
addi s3, zero, 0 # i = 0
Loop:
add t1, s3, s3 # t1 = i * 2
add t1, t1, t1 # t1 = i * 4
add t1, t1, s6 # t1 = endereço de save[i]
lw t0, 0(t1) # t0 = save[i]
bne t0, s5, Exit # se save[i] != k, vai para Exit
addi s3, s3, 1 # i = i + 1
j Loop # repete o laço
Exit:
nop # fim do laço

Execute o programa passo a passo clicando no botão Run One Step. A cada instrução, preencha a tabela abaixo cada vez que o valor de um registrador for modificado.

Preencha a tabela abaixo

  • Preencha o PC com o endereço da instrução e copie a coluna Instrução com o conteúdo da coluna Source do simulador. Preencha apenas os campos que forem modificados.
  • Para pseudo-instruções, o simulador exibe a instrução real na coluna Basic e a forma original na coluna Source. Copie o valor Basic na coluna Instrução e o valor Source na coluna Pseudoinstrução. Deixe a coluna de pseudoinstrução em branco para instruções reais.
  • Se precisar de mais linhas, clique em Adicionar linha. A verificação só é realizada quando todas as linhas estiverem preenchidas, se nada aparecer ao clicar em Verificar, significa que ainda há linhas em branco.
Antes Após executar a instrução
PC Instruction Pseudoinstrução x5x6x19x21x22
(t0)(t1)(s3 (i))(s5 (k))(s6 (save))
0x000000000x000000000x000000000x000000000x00000000
0x00400000 auipc x22 64528 la s6 Array_save 0x10010000
0x00400004 addi x22 x22 0

Dica: no diálogo de impressão, selecione o tamanho A2 para melhor resultado.