Programação em Assembly MIPS II

  1. O que calcula o seguinte programa?
    	.data
    _msg1:	.asciiz	"The result is "
    _msg2:	.asciiz "\n"
    
    	.text
    _main:
    	li	$s0, 0
    	li	$s1, 100
    	li	$s2, 0
    _loop:
    	bge	$s0, $s1, _end
    	mul	$t0, $s0, $s0
    	add	$s2, $s2, $t0
    	addiu	$s0, $s0, 1
    	j	_loop
    _end:	
    	li	$v0, 4
    	la	$a0, _msg1
    	syscall
    	li	$v0, 1
    	move	$a0, $s2
    	syscall
    	li	$v0, 4
    	la	$a0, _msg2
    	syscall
    	li	$v0, 10
    	syscall
    
  2. Escreva o código em assembly MIPS correspondente ao programa em C que se segue, preservando a sua estrutura funcional (soma de uma sequência de inteiros positivos).
    int main() {
       int i, upTo, sum;
       scanf("%d", &upTo);
       sum = 0;
       for (i = 0; i < upTo ; i++)
          sum += i * i;
       printf("The result is %d\n", sum);
       return 0;
    }
    
  3. Escreva o código em assembly MIPS correspondente ao programa em C que se segue, preservando a sua estrutura funcional (cálculo do quadrado de inteiros positivos).
    int squares[100];
    
    int main() {
       int i, upTo;
       scanf("%d", &upTo);
       for (i = 0; i < upTo ; i++)
          squares[i] = i * i;
       return 0;
    }
    
  4. Escreva o código em assembly MIPS correspondente ao programa em C que se segue, preservando a sua estrutura funcional (soma de uma sequência de quadrados de inteiros positivos).
    int squares[100];
    
    int main() {
       int i, upTo, sum;
       scanf("%d", &upTo);
       for (i = 0; i < upTo ; i++)
          squares[i] = i * i;
       sum = 0;
       for (i = 0; i < upTo ; i++)
          sum += squares[i];
       printf("The result is %d\n", sum);  
       return 0;
    }