Exercício 5
Objetivo
Seção intitulada “Objetivo”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;Instruções
Seção intitulada “Instruções”- Abra o simulador de linguagem RISC-V.
- No editor de texto do simulador, transcreva o código abaixo:
# Exercício 05# C expression:# while (save[i] == k)# i = i + 1;
.dataArray_save: .word 3, 3, 1, 3, 3, 1, 4, 3, 1 # save[0] até save[8]
.textmain: 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çoExecução Passo a Passo
Seção intitulada “Execução Passo a Passo”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.