.data
$$tab: .space 40
.text
__start:
jal main
li $v0, 10
syscall
initialiser :
subi $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
subi $sp, $sp, 4
sw $ra, 0($sp)
li $t0, 8
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 0
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 6
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 9
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 9
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 3
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 4
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 4
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 2
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 5
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 3
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 6
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 7
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 4
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 8
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
li $t0, 5
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 9
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
addi $sp, $sp 0 # desallocation variables locales
lw $ra, 0($sp)
addi $sp, $sp, 4
lw $fp, 0($sp)
addi $sp, $sp, 4
addi $sp, $sp, 4 #ignore valeur de retour
jr $ra
afficher :
subi $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
subi $sp, $sp, 4
sw $ra, 0($sp)
subi $sp, $sp, 4
li $t0, 0
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -8($fp) #variable locale
e0:
lw $t0, -8($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 4($fp) #variable argument $n
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
li $t0, 1
blt $t1, $t2 e2
li $t0, 0
e2:
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
beq $t0 $0 e1
lw $t0, -8($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, $$tab($t4)
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
move $a0, $t0
li $v0, 1
syscall
li  $a0, '\n'
li  $v0, 11
syscall
lw $t0, -8($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
add $t0, $t1, $t2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -8($fp) #variable locale
j e0
e1:
li $t0, 0
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
move $a0, $t0
li $v0, 1
syscall
li  $a0, '\n'
li  $v0, 11
syscall
addi $sp, $sp 4 # desallocation variables locales
lw $ra, 0($sp)
addi $sp, $sp, 4
lw $fp, 0($sp)
addi $sp, $sp, 4
addi $sp, $sp, 4 #ignore valeur de retour
jr $ra
echanger :
subi $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
subi $sp, $sp, 4
sw $ra, 0($sp)
subi $sp, $sp, 4
lw $t0, 4($fp) #variable argument $j
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, $$tab($t4)
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -8($fp) #variable locale
lw $t0, 8($fp) #variable argument $i
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, $$tab($t4)
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 4($fp) #variable argument $j
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
lw $t0, -8($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 8($fp) #variable argument $i
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, $$tab($t4)
addi $sp, $sp 4 # desallocation variables locales
lw $ra, 0($sp)
addi $sp, $sp, 4
lw $fp, 0($sp)
addi $sp, $sp, 4
addi $sp, $sp, 4 #ignore valeur de retour
jr $ra
trier :
subi $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
subi $sp, $sp, 4
sw $ra, 0($sp)
subi $sp, $sp, 4
subi $sp, $sp, 4
subi $sp, $sp, 4
lw $t0, 4($fp) #variable argument $n
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -16($fp) #variable locale
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -8($fp) #variable locale
e3:
lw $t0, -8($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
li $t0, 1
beq $t1, $t2 e5
li $t0, 0
e5:
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
beq $t0 $0 e4
li $t0, 0
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -8($fp) #variable locale
li $t0, 0
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -12($fp) #variable locale
e6:
lw $t0, -12($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, -16($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
sub $t0, $t1, $t2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
li $t0, 1
blt $t1, $t2 e8
li $t0, 0
e8:
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
beq $t0 $0 e7
lw $t0, -12($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
add $t0, $t1, $t2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, $$tab($t4)
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, -12($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t4, 0($sp)
addi $sp, $sp, 4
add $t4,$t4,$t4
add $t4,$t4,$t4
lw $t0, $$tab($t4)
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
li $t0, 1
blt $t1, $t2 e9
li $t0, 0
e9:
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
beq $t0 $zero e10
subi $sp, $sp, 4 #Val Retour
lw $t0, -12($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, -12($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
add $t0, $t1, $t2
subi $sp, $sp, 4
sw $t0, 0($sp)
jal echanger
addi $sp, $sp, 8 #désalocation des arguments
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -8($fp) #variable locale
j e11
e10:
e11:
lw $t0, -12($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
add $t0, $t1, $t2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -12($fp) #variable locale
j e6
e7:
lw $t0, -16($fp) #variable locale
subi $sp, $sp, 4
sw $t0, 0($sp)
li $t0, 1
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t2, 0($sp)
addi $sp, $sp, 4
lw $t1, 0($sp)
addi $sp, $sp, 4
sub $t0, $t1, $t2
subi $sp, $sp, 4
sw $t0, 0($sp)
lw $t0, 0($sp)
addi $sp, $sp, 4
sw $t0, -16($fp) #variable locale
j e3
e4:
addi $sp, $sp 12 # desallocation variables locales
lw $ra, 0($sp)
addi $sp, $sp, 4
lw $fp, 0($sp)
addi $sp, $sp, 4
addi $sp, $sp, 4 #ignore valeur de retour
jr $ra
main :
subi $sp, $sp, 4
sw $fp, 0($sp)
move $fp, $sp
subi $sp, $sp, 4
sw $ra, 0($sp)
subi $sp, $sp, 4 #Val Retour
jal initialiser
subi $sp, $sp, 4 #Val Retour
li $t0, 10
subi $sp, $sp, 4
sw $t0, 0($sp)
jal afficher
addi $sp, $sp, 4 #désalocation des arguments
subi $sp, $sp, 4 #Val Retour
li $t0, 10
subi $sp, $sp, 4
sw $t0, 0($sp)
jal trier
addi $sp, $sp, 4 #désalocation des arguments
subi $sp, $sp, 4 #Val Retour
li $t0, 10
subi $sp, $sp, 4
sw $t0, 0($sp)
jal afficher
addi $sp, $sp, 4 #désalocation des arguments
addi $sp, $sp 0 # desallocation variables locales
lw $ra, 0($sp)
addi $sp, $sp, 4
lw $fp, 0($sp)
addi $sp, $sp, 4
addi $sp, $sp, 4 #ignore valeur de retour
jr $ra
