Files
compilateur-l/eval-fourni/ref-mips/boucle.mips
2016-04-01 11:43:25 +02:00

92 lines
2.1 KiB
Plaintext

.data
$i: .space 4
$carre: .space 4
.text
__start:
jal main
li $v0, 10
syscall # stoppe l'execution du processus
main:
subi $sp, $sp, 4 # empile registre
sw $fp, 0($sp)
move $fp, $sp # nouvelle valeur de $fp
subi $sp, $sp, 4 # empile registre
sw $ra, 0($sp)
li $t0, 0
subi $sp, $sp, 4 # empile registre
sw $t0, 0($sp)
lw $t1, 0($sp) # depile vers registre
addi $sp, $sp, 4
sw $t1, $i # stocke variable
e0:
lw $t1, $i # lit variable dans $t1
subi $sp, $sp, 4 # empile registre
sw $t1, 0($sp)
li $t0, 10
subi $sp, $sp, 4 # empile registre
sw $t0, 0($sp)
lw $t1, 0($sp) # depile vers registre
addi $sp, $sp, 4
lw $t0, 0($sp) # depile vers registre
addi $sp, $sp, 4
li $t2, -1 # inf
blt $t0, $t1, e2
li $t2, 0
e2:
subi $sp, $sp, 4 # empile registre
sw $t2, 0($sp)
lw $t0, 0($sp) # depile vers registre
addi $sp, $sp, 4
beq $t0, $zero, e1
lw $t1, $i # lit variable dans $t1
subi $sp, $sp, 4 # empile registre
sw $t1, 0($sp)
lw $t1, $i # lit variable dans $t1
subi $sp, $sp, 4 # empile registre
sw $t1, 0($sp)
lw $t1, 0($sp) # depile vers registre
addi $sp, $sp, 4
lw $t0, 0($sp) # depile vers registre
addi $sp, $sp, 4
mult $t0, $t1
mflo $t2
subi $sp, $sp, 4 # empile registre
sw $t2, 0($sp)
lw $t1, 0($sp) # depile vers registre
addi $sp, $sp, 4
sw $t1, $carre # stocke variable
lw $t1, $carre # lit variable dans $t1
subi $sp, $sp, 4 # empile registre
sw $t1, 0($sp)
lw $a0, 0($sp) # depile vers registre
addi $sp, $sp, 4
li $v0, 1
syscall # ecriture
li $a0, '\n'
li $v0, 11
syscall # ecrire char
lw $t1, $i # lit variable dans $t1
subi $sp, $sp, 4 # empile registre
sw $t1, 0($sp)
li $t0, 1
subi $sp, $sp, 4 # empile registre
sw $t0, 0($sp)
lw $t1, 0($sp) # depile vers registre
addi $sp, $sp, 4
lw $t0, 0($sp) # depile vers registre
addi $sp, $sp, 4
add $t2, $t0, $t1
subi $sp, $sp, 4 # empile registre
sw $t2, 0($sp)
lw $t1, 0($sp) # depile vers registre
addi $sp, $sp, 4
sw $t1, $i # stocke variable
j e0
e1:
lw $ra, 0($sp) # depile vers registre
addi $sp, $sp, 4
lw $fp, 0($sp) # depile vers registre
addi $sp, $sp, 4
jr $ra