O programa prog1.a mostrado abaixo soma os valores 5 e 10 e coloca o resultado no registrador $t0.
.text
.globl main
main: addi $t1,$zero, 5
lw $t2, val
add $t0,$t1,$t2
li $v0,10
syscall
.data
val: .word 10
Você irá utilizar o simulador para traduzir este programa para linguagem de máquina e simular sua execução. Para isto, execute o simulador SPIM.
Carregue o programa prog1.asc, através da opção Reinitialize and Load File.
O arquivo fonte deverá aparecer na janela Text. O programa está traduzido para linguagem de máquina.
Caso o programa tenha sido traduzido com sucesso, verifique o código gerado pelo montador mostrado na janela Text e confirme se o código gerado está correto.
Agora, você irá executar o programa passo a passo. Escolha a opção Single Step. O simulador mostra o conteúdo dos 32 registradores e do registrador Contador de Instruções (PC) que indica o endereço da instrução a ser executada.
Execute uma instrução de cada vez, clicando o botão Single Step e verifique como o conteúdo dos registradores é modificado.
EXPLIQUE SUA RESPOSTA
EXPLIQUE SUA RESPOSTA
(for i=4;i>0;i--);inicia a variável i com o valor 4, testa se ela é maior que 0 e em caso positivo decrementa o valor de i e volta a testá-lo. Em caso negativo, o próximo comando depois deste será executado.
Supondo que a variável i esteja alocada ao registrador 1, o programa prog2.a mostrado abaixo implementa este comando:
.text
.globl main
main:
addi $t0,$zero, 4
ini: beq $t0,$zero,fim
addi $t0,$t0,-1
beq $zero,$zero, ini
fim: li $v0,10
syscall
Carregue este programa na ferramenta, traduza e executa passo a passo para entender o seu funcionamento.
int x,i; x=3; for (i=5;i>0;i--) x=x+2;Este trecho de programa utiliza as variáveis x e i do tipo inteiro e ao final de sua execução a variável x terá o valor 13. Considere que a variável x está alocada ao registrador 2 e a variável i ao registrador 1.
EXPLIQUE SUA RESPOSTA