Pular para o conteúdo

Exercício 6

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++;
  1. Abra o simulador de linguagem RISC-V.
  2. No editor de texto do simulador, transcreva o código abaixo:
# Exercício 06
# C expression: for (i = 0; i < 3; i++) j++;
.text
main:
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 programa

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 x5x8x9
(t0)(s0 (i))(s1 (j))
0x000000000x000000000x00000000
0x00400000 addi s0 zero 0 0x00000000

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