.data .text __start: jal main li $v0, 10 syscall fibo : subi $sp, $sp, 4 sw $fp, 0($sp) move $fp, $sp subi $sp, $sp, 4 sw $ra, 0($sp) lw $t0, 4($fp) #variable argument $n subi $sp, $sp, 4 sw $t0, 0($sp) li $t0, 2 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 e0 li $t0, 0 e0: subi $sp, $sp, 4 sw $t0, 0($sp) lw $t0, 0($sp) addi $sp, $sp, 4 beq $t0 $zero e1 li $t0, 1 subi $sp, $sp, 4 sw $t0, 0($sp) lw $t0, 0($sp) addi $sp, $sp, 4 sw $t0 8($fp) #Adresse de retour 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 j e2 e1: subi $sp, $sp, 4 #Val Retour lw $t0, 4($fp) #variable argument $n 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) jal fibo addi $sp, $sp, 4 #désalocation des arguments subi $sp, $sp, 4 #Val Retour lw $t0, 4($fp) #variable argument $n subi $sp, $sp, 4 sw $t0, 0($sp) li $t0, 2 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) jal fibo addi $sp, $sp, 4 #désalocation des arguments 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) #Adresse de retour 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 e2: 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 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 li $v0 5 syscall move $t0, $v0 subi $sp, $sp, 4 sw $t0, 0($sp) jal fibo addi $sp, $sp, 4 #désalocation des arguments 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 addi $sp, $sp, 4 #ignore valeur de retour jr $ra