.data .text ___start: jal f_main li $v0, 10 syscall # stoppe l'execution du processus f_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, 16 # allocation variables locales li $v0, 5 syscall # lecture subi $sp, $sp, 4 # empile registre sw $v0, 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) li $t0, 0 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, i_e0 li $t2, 0 i_e0: subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) bne $t0, $zero, i_cc1 lw $t1, -8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 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 lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 li $t2, -1 # egal beq $t0, $t1, i_e2 li $t2, 0 i_e2: 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 or $t2, $t0, $t1 subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) i_cc1: lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 beq $t0, $zero, i_condexp_f4 li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) j i_condexp_s3 i_condexp_f4: li $t0, 0 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) i_condexp_s3: lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, -12($fp) # stocke variable lw $t1, -8($fp) # lit variable dans $t1 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) li $t0, 100 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, i_e5 li $t2, 0 i_e5: subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) beq $t0, $zero, i_cc6 li $t0, 0 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) lw $t1, -8($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, i_e7 li $t2, 0 i_e7: 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 and $t2, $t0, $t1 subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) i_cc6: lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 beq $t0, $zero, i_condexp_f9 li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) j i_condexp_s8 i_condexp_f9: li $t0, 0 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) i_condexp_s8: lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, -16($fp) # stocke variable 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 not $t1, $t0 subi $sp, $sp, 4 # empile registre sw $t1, 0($sp) lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) beq $t0, $zero, i_cc10 lw $t1, -16($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 not $t1, $t0 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 and $t2, $t0, $t1 subi $sp, $sp, 4 # empile registre sw $t2, 0($sp) i_cc10: lw $t0, 0($sp) # depile vers registre addi $sp, $sp, 4 beq $t0, $zero, i_condexp_f12 li $t0, 1 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) j i_condexp_s11 i_condexp_f12: li $t0, 0 subi $sp, $sp, 4 # empile registre sw $t0, 0($sp) i_condexp_s11: lw $t1, 0($sp) # depile vers registre addi $sp, $sp, 4 sw $t1, -20($fp) # stocke variable lw $t1, -12($fp) # 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, -16($fp) # 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, -20($fp) # 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 addi $sp, $sp, 16 # 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