147 lines
2.4 KiB
Plaintext
147 lines
2.4 KiB
Plaintext
.data
|
|
.text
|
|
__start:
|
|
jal main
|
|
li $v0, 10
|
|
syscall
|
|
max :
|
|
subi $sp, $sp, 4
|
|
sw $fp, 0($sp)
|
|
move $fp, $sp
|
|
subi $sp, $sp, 4
|
|
sw $ra, 0($sp)
|
|
lw $t0, 8($fp) #variable argument $a
|
|
subi $sp, $sp, 4
|
|
sw $t0, 0($sp)
|
|
lw $t0, 4($fp) #variable argument $b
|
|
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
|
|
lw $t0, 4($fp) #variable argument $b
|
|
subi $sp, $sp, 4
|
|
sw $t0, 0($sp)
|
|
lw $t0, 0($sp)
|
|
addi $sp, $sp, 4
|
|
sw $t0 12($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:
|
|
e2:
|
|
lw $t0, 8($fp) #variable argument $a
|
|
subi $sp, $sp, 4
|
|
sw $t0, 0($sp)
|
|
lw $t0, 0($sp)
|
|
addi $sp, $sp, 4
|
|
sw $t0 12($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
|
|
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
|
|
subi $sp, $sp, 4
|
|
li $v0 5
|
|
syscall
|
|
move $t0, $v0
|
|
subi $sp, $sp, 4
|
|
sw $t0, 0($sp)
|
|
lw $t0, 0($sp)
|
|
addi $sp, $sp, 4
|
|
sw $t0, -8($fp) #variable locale
|
|
li $v0 5
|
|
syscall
|
|
move $t0, $v0
|
|
subi $sp, $sp, 4
|
|
sw $t0, 0($sp)
|
|
lw $t0, 0($sp)
|
|
addi $sp, $sp, 4
|
|
sw $t0, -12($fp) #variable locale
|
|
subi $sp, $sp, 4 #Val Retour
|
|
lw $t0, -8($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)
|
|
jal max
|
|
addi $sp, $sp, 8 #désalocation des arguments
|
|
lw $t0, -8($fp) #variable locale
|
|
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 e3
|
|
li $t0, 0
|
|
e3:
|
|
subi $sp, $sp, 4
|
|
sw $t0, 0($sp)
|
|
lw $t0, 0($sp)
|
|
addi $sp, $sp, 4
|
|
beq $t0 $zero e4
|
|
lw $t0, -8($fp) #variable locale
|
|
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
|
|
j e5
|
|
e4:
|
|
lw $t0, -12($fp) #variable locale
|
|
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
|
|
e5:
|
|
addi $sp, $sp 8 # 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
|