Sistemas de Computação

Aula de laboratório - Programação em linguagem de montagem

Arquitetura do conjunto de instruções

O processador MIPS apresentado em sala de aula possui as seguintes características:
  1. palavra de 32 bits
  2. 32 registradores de 32 bits, sendo que o registrador 0 armazena o valor constante 0
  3. capacidade máxima de endereçamento de 65536 palavras de memória
  4. instruções de 32 bits
O conjunto de instruções desta máquina é pode ser consultado em Instruções MIPS .

Simulador

O programa SPIM traduz um programa escrito na linguagem de montagem MIPS e simula sua execução na máquina. Para utilizar esta ferramenta, um programa deve ser escrito na linguagem de montagem, carregado e traduzido pela ferramenta. Após esta tradução o programa poderá ser executado diretamente ou no modo passo a passo.

Como utilizar o simulador

Para utilizar o simulador você deve acessar SPIM que contém o código executável do simulador.

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.

Questão 1:

Mostre como o programa deve ser modificado de modo que ele some 15 com 20. Utilize o simulador para verificar se seu programa está funcionando.

EXPLIQUE SUA RESPOSTA

Questão 2:

Mostre como o programa deve ser modificado de modo que o resultado da soma seja armazenado em uma posição de memória depois da posição da linha "val". Utilize o simulador para verificar se seu programa está funcionando.

EXPLIQUE SUA RESPOSTA

Implementação de laços

O comando em C
(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.

Questão 3:

A partir do código acima, crie um programa para executar o seguinte código em C:
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