Exercício 6
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. O seguinte laço for em C é traduzido para assembly usando slti e beq:
for (i = 0; i < 3; i++) j++;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 06# C expression: for (i = 0; i < 3; i++) j++;
.textmain: addi s0, zero, 0 # i = 0
Loop: slti t0, s0, 3 # se i < 3 então t0 = 1, senão t0 = 0 beq t0, zero, Exit # se t0 == 0, pula para Exit addi s1, s1, 1 # j++ addi s0, s0, 1 # i++ j Loop # volta para o início do laço
Exit: nop # fim do programaExecuçã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.