456 lines
7.2 KiB
Plaintext
456 lines
7.2 KiB
Plaintext
.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, 0
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 8
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0,
|
||
li $t0, 1
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 6
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0,
|
||
li $t0, 2
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 9
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, ÿÿÿÿÿÿÿÿ
|
||
li $t0, 3
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 9
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, P`Ç<>ý
|
||
li $t0, 4
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 4
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, €û
|
||
li $t0, 5
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 2
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0,
|
||
li $t0, 6
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 3
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, @^Ç<>ý
|
||
li $t0, 7
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 1
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0,
|
||
li $t0, 8
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 4
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, sw $t0,
|
||
li $t0, 9
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
li $t0, 5
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, sw $t0,
|
||
addi $sp, $sp 0 # desallocation variables locales
|
||
lw $ra, 0($sp)
|
||
addi $sp, $sp, 4
|
||
lw $fp, 0($sp)
|
||
addi $sp, $sp, 4
|
||
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 $t0,
|
||
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 0 # desallocation variables locales
|
||
lw $ra, 0($sp)
|
||
addi $sp, $sp, 4
|
||
lw $fp, 0($sp)
|
||
addi $sp, $sp, 4
|
||
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 $t0, ]Ç<>ý
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, -8($fp) #variable locale
|
||
lw $t0, 4($fp) #variable argument $j
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 8($fp) #variable argument $i
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, ÿÿÿÿÿÿÿÿ
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0,
|
||
lw $t0, 8($fp) #variable argument $i
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, -8($fp) #variable locale
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, 0($sp)
|
||
addi $sp, $sp, 4
|
||
sw $t0, $…@
|
||
addi $sp, $sp 0 # desallocation variables locales
|
||
lw $ra, 0($sp)
|
||
addi $sp, $sp, 4
|
||
lw $fp, 0($sp)
|
||
addi $sp, $sp, 4
|
||
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 $t0, ÿÿÿÿÿÿÿÿ
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, -12($fp) #variable locale
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
lw $t0, ÿÿÿÿÿÿÿÿ
|
||
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
|
||
sub $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
|
||
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 0 # desallocation variables locales
|
||
lw $ra, 0($sp)
|
||
addi $sp, $sp, 4
|
||
lw $fp, 0($sp)
|
||
addi $sp, $sp, 4
|
||
jr $ra
|
||
main :
|
||
subi $sp, $sp, 4
|
||
sw $fp, 0($sp)
|
||
move $fp, $sp
|
||
subi $sp, $sp, 4
|
||
sw $ra, 0($sp)
|
||
sub $sp, $sp, 4 #Val Retour
|
||
jal initialiser
|
||
addi $sp, $sp, 0
|
||
sub $sp, $sp, 4 #Val Retour
|
||
li $t0, 10
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
jal afficher
|
||
addi $sp, $sp, 4
|
||
sub $sp, $sp, 4 #Val Retour
|
||
li $t0, 10
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
jal trier
|
||
addi $sp, $sp, 4
|
||
sub $sp, $sp, 4 #Val Retour
|
||
li $t0, 10
|
||
subi $sp, $sp, 4
|
||
sw $t0, 0($sp)
|
||
jal afficher
|
||
addi $sp, $sp, 4
|
||
addi $sp, $sp 12 # desallocation variables locales
|
||
lw $ra, 0($sp)
|
||
addi $sp, $sp, 4
|
||
lw $fp, 0($sp)
|
||
addi $sp, $sp, 4
|
||
jr $ra
|