Préparation pour test intermediaire

- Analyseur lexical OK
- Analyseur syntaxyque OK
This commit is contained in:
2016-02-09 15:45:20 +01:00
parent 3b5b693f67
commit 755d2b6140
63 changed files with 8847 additions and 49 deletions

137
test/ref-mips/max.mips Normal file
View File

@@ -0,0 +1,137 @@
.data
.text
__start:
jal main
li $v0, 10
syscall # stoppe l'execution du processus
max:
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)
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, 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
sw $t0, 12($fp) # ecriture de la valeur de retour
lw $ra, 0($sp) # depile vers registre
addi $sp, $sp, 4
lw $fp, 0($sp) # depile vers registre
addi $sp, $sp, 4
jr $ra
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
sw $t0, 12($fp) # ecriture de la valeur de retour
lw $ra, 0($sp) # depile vers registre
addi $sp, $sp, 4
lw $fp, 0($sp) # depile vers registre
addi $sp, $sp, 4
jr $ra
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, 8 # 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
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, -12($fp) # stocke variable
subi $sp, $sp, 4 # allocation valeur de retour
# empile arg 0
lw $t1, -8($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)
jal max
addi $sp, $sp, 8 # desallocation parametres
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 # 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, e3
lw $t1, -8($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
j e4
e3:
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
e4:
addi $sp, $sp, 8 # 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