Exercício 7
Objetivo
Seção intitulada “Objetivo”Consolidar o aprendizado da linguagem Assembly RISC-V e compreender como as instruções de suporte a procedimentos são executadas. A seguinte expressão em C é implementada como uma chamada de procedimento usando jal e jr ra:
int f = (g + h) - (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 07# C expression: int f = (g + h) - (i + j);
.text j main
leaf_example: add a5, a1, a2 # a5 = g + h add a6, a3, a4 # a6 = i + j sub a0, a5, a6 # f = (g + h) - (i + j), resultado em a0 jr ra # retorna para o chamador
main: addi a1, zero, 4 # g = 4 addi a2, zero, 7 # h = 7 addi a3, zero, 2 # i = 2 addi a4, zero, 1 # j = 1 jal leaf_example # chama a função nop # a0 agora tem o valor de retorno (f)Execuçã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.