Qual é o código MIPS que implementa o seguinte código em linguagem de Alto Nível:
int s = 0;
for (int i = 1; i < 100; i++)
{
s = s + i;
printf(“A soma acumulada é igual a: %d”, s);
}
Soluções para a tarefa
Ficaria assim:
$LC0:
.ascii "A soma acumulada \303\251 igual a: %d\000"
main:
addiu $sp,$sp,-40
sw $31,36($sp)
sw $fp,32($sp)
move $fp,$sp
sw $0,24($fp)
li $2,1 # 0x1
sw $2,28($fp)
b $L2
nop
$L3:
lw $3,24($fp)
lw $2,28($fp)
nop
addu $2,$3,$2
sw $2,24($fp)
lw $5,24($fp)
lui $2,%hi($LC0)
addiu $4,$2,%lo($LC0)
jal printf
nop
lw $2,28($fp)
nop
addiu $2,$2,1
sw $2,28($fp)
$L2:
lw $2,28($fp)
nop
slt $2,$2,100
bne $2,$0,$L3
nop
move $2,$0
move $sp,$fp
lw $31,36($sp)
lw $fp,32($sp)
addiu $sp,$sp,40
j $31
nop
if (A[0] == A[2])
A[3] = A[1] + 1;
else
A[3] = A[2] - 1;
Suponha que o endereço-base do array A corresponde ao registrador $s0.