.data $tab: .space 40 .text __start: jal main li $v0, 10 syscall # stoppe l'execution du processus initialiser: 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, 8 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 0 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 6 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 9 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 2 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 9 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 3 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 4 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 4 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 2 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 5 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 3 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 6 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 7 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 4 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 8 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable li $t0, 5 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) li $t0, 9 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable lw $ra, 0($sp) # depile vers registre addi $sp, $sp, 4 lw $fp, 0($sp) # depile vers registre addi $sp, $sp, 4 jr $ra afficher: 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) subi $sp, $sp, 4 # allocation variables locales 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, -8($fp) # stocke variable e0: lw $t1, -8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t1, 4($fp) # 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 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, -8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, $tab($t0) # 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, -8($fp) # 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, -8($fp) # stocke variable j e0 e1: li $t0, 0 subi $sp, $sp, 4 # empile registre sw $t0, 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 addi $sp, $sp, 4 # desallocation variables locales lw $ra, 0($sp) # depile vers registre addi $sp, $sp, 4 lw $fp, 0($sp) # depile vers registre addi $sp, $sp, 4 jr $ra echanger: 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) subi $sp, $sp, 4 # allocation variables locales lw $t1, 4($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, $tab($t0) # 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 sw $t1, -8($fp) # stocke variable lw $t1, 8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, $tab($t0) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t1, 4($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable lw $t1, -8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t1, 8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, $tab($t0) # stocke variable addi $sp, $sp, 4 # desallocation variables locales lw $ra, 0($sp) # depile vers registre addi $sp, $sp, 4 lw $fp, 0($sp) # depile vers registre addi $sp, $sp, 4 jr $ra trier: 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) subi $sp, $sp, 12 # allocation variables locales lw $t1, 4($fp) # 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 sw $t1, -16($fp) # stocke variable li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, -8($fp) # stocke variable e3: lw $t1, -8($fp) # 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 li $t2, -1 # egal beq $t0, $t1, e5 li $t2, 0 e5: subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 beq $t0, $zero, e4 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, -8($fp) # stocke variable 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, -12($fp) # stocke variable e6: lw $t1, -12($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t1, -16($fp) # 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 sub $t2, $t0, $t1 subi $sp, $sp, 4 # empile registre sw $t2, 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, e8 li $t2, 0 e8: subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 beq $t0, $zero, e7 lw $t1, -12($fp) # 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 $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, $tab($t0) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t1, -12($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 add $t0, $t0, $t0 add $t0, $t0, $t0 lw $t1, $tab($t0) # 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 li $t2, -1 # inf blt $t0, $t1, e11 li $t2, 0 e11: subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 beq $t0, $zero, e10 subi $sp, $sp, 4 # allocation valeur de retour # empile arg 0 lw $t1, -12($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) # empile arg 1 lw $t1, -12($fp) # 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) jal echanger addi $sp, $sp, 8 # desallocation parametres addi $sp, $sp, 4 # valeur de retour ignoree li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, -8($fp) # stocke variable e10: lw $t1, -12($fp) # 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, -12($fp) # stocke variable j e6 e7: lw $t1, -16($fp) # 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 sub $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, -16($fp) # stocke variable j e3 e4: addi $sp, $sp, 12 # desallocation variables locales lw $ra, 0($sp) # depile vers registre addi $sp, $sp, 4 lw $fp, 0($sp) # depile vers registre addi $sp, $sp, 4 jr $ra 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) subi $sp, $sp, 4 # allocation valeur de retour jal initialiser addi $sp, $sp, 4 # valeur de retour ignoree subi $sp, $sp, 4 # allocation valeur de retour # empile arg 0 li $t0, 10 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) jal afficher addi $sp, $sp, 4 # desallocation parametres addi $sp, $sp, 4 # valeur de retour ignoree subi $sp, $sp, 4 # allocation valeur de retour # empile arg 0 li $t0, 10 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) jal trier addi $sp, $sp, 4 # desallocation parametres addi $sp, $sp, 4 # valeur de retour ignoree subi $sp, $sp, 4 # allocation valeur de retour # empile arg 0 li $t0, 10 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) jal afficher addi $sp, $sp, 4 # desallocation parametres addi $sp, $sp, 4 # valeur de retour ignoree lw $ra, 0($sp) # depile vers registre addi $sp, $sp, 4 lw $fp, 0($sp) # depile vers registre addi $sp, $sp, 4 jr $ra