EVAL FINAL ESAYYYYYYY
This commit is contained in:
4
eval-final-projet/input.cond/eval13-err.l
Normal file
4
eval-final-projet/input.cond/eval13-err.l
Normal file
@@ -0,0 +1,4 @@
|
||||
main()
|
||||
{
|
||||
ecrire( 1 ? 0 ? 1 : 1 ? 0 );
|
||||
}
|
||||
6
eval-final-projet/input.cond/eval25.l
Normal file
6
eval-final-projet/input.cond/eval25.l
Normal file
@@ -0,0 +1,6 @@
|
||||
entier $a;
|
||||
main()
|
||||
{
|
||||
$a = lire();
|
||||
ecrire( $a < 10 ? 0 : 1);
|
||||
}
|
||||
11
eval-final-projet/input.cond/eval26.l
Normal file
11
eval-final-projet/input.cond/eval26.l
Normal file
@@ -0,0 +1,11 @@
|
||||
main()
|
||||
entier $temp, entier $g, entier $l, entier $v;
|
||||
{
|
||||
$temp = lire(); # temperature de l'eau
|
||||
$g = $temp < 0 | $temp = 0 ? 1 : 0; # glace ?
|
||||
$l = $temp < 100 & 0 < $temp ? 1 : 0; # liquide ?
|
||||
$v = !$g & !$l ? 1 : 0; # vapeur ?
|
||||
ecrire($g);
|
||||
ecrire($l);
|
||||
ecrire($v);
|
||||
}
|
||||
6
eval-final-projet/input.cond/eval27.l
Normal file
6
eval-final-projet/input.cond/eval27.l
Normal file
@@ -0,0 +1,6 @@
|
||||
main()
|
||||
{
|
||||
ecrire( 1 ? 0 : 1 ? 0 : 1 );
|
||||
ecrire( ( 1 ? 0 : 1 ) ? 0 : 1 );
|
||||
ecrire( 1 ? 0 : ( 1 ? 0 : 1 ) );
|
||||
}
|
||||
@@ -1,113 +1,37 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$a
|
||||
lw $t0, $$a
|
||||
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
|
||||
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
|
||||
|
||||
@@ -1,118 +1,54 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
procedure :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0 4($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 #Val Retour
|
||||
jal procedure
|
||||
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
|
||||
|
||||
@@ -1,146 +1,52 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAppel>
|
||||
<appelFct>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAppel>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
procedure :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
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
|
||||
addi $sp, $sp 4 # 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
|
||||
jal procedure
|
||||
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
|
||||
|
||||
@@ -1,112 +1,40 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e0
|
||||
li $t0, 1
|
||||
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 e1
|
||||
e0:
|
||||
e1:
|
||||
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
|
||||
|
||||
0
eval-final-projet/output/eval13-err.synt.xml
Normal file
0
eval-final-projet/output/eval13-err.synt.xml
Normal file
@@ -1,154 +1,51 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
<mot_clef>sinon</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e0
|
||||
li $t0, 1
|
||||
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 e1
|
||||
e0:
|
||||
li $t0, 0
|
||||
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
|
||||
e1:
|
||||
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
|
||||
|
||||
@@ -1,487 +1,140 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$tab</id_variable>
|
||||
<optTailleTableau>
|
||||
<symbole>CROCHET_OUVRANT</symbole>
|
||||
<nombre>10</nombre>
|
||||
<symbole>CROCHET_FERMANT</symbole>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionTantque>
|
||||
<mot_clef>tantque</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>10</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>faire</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$tab</id_variable>
|
||||
<optIndice>
|
||||
<symbole>CROCHET_OUVRANT</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>CROCHET_FERMANT</symbole>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</instructionTantque>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionTantque>
|
||||
<mot_clef>tantque</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>10</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>faire</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$tab</id_variable>
|
||||
<optIndice>
|
||||
<symbole>CROCHET_OUVRANT</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>CROCHET_FERMANT</symbole>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</instructionTantque>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$tab: .space 40
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
e0:
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
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 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e1
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t4, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t4,$t4,$t4
|
||||
add $t4,$t4,$t4
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$tab($t4)
|
||||
lw $t0, -8($fp) #variable locale
|
||||
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
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
j e0
|
||||
e1:
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
e3:
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
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 e5
|
||||
li $t0, 0
|
||||
e5:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e4
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t4, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t4,$t4,$t4
|
||||
add $t4,$t4,$t4
|
||||
lw $t0, $$tab($t4)
|
||||
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
|
||||
lw $t0, -8($fp) #variable locale
|
||||
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
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
j e3
|
||||
e4:
|
||||
addi $sp, $sp 4 # 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
|
||||
|
||||
@@ -1,170 +1,51 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$tab</id_variable>
|
||||
<optTailleTableau>
|
||||
<symbole>CROCHET_OUVRANT</symbole>
|
||||
<nombre>10</nombre>
|
||||
<symbole>CROCHET_FERMANT</symbole>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$tab</id_variable>
|
||||
<optIndice>
|
||||
<symbole>CROCHET_OUVRANT</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>4</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>CROCHET_FERMANT</symbole>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>4</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$tab</id_variable>
|
||||
<optIndice>
|
||||
<symbole>CROCHET_OUVRANT</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>4</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>CROCHET_FERMANT</symbole>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$tab: .space 40
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t4, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t4,$t4,$t4
|
||||
add $t4,$t4,$t4
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$tab($t4)
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t4, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
add $t4,$t4,$t4
|
||||
add $t4,$t4,$t4
|
||||
lw $t0, $$tab($t4)
|
||||
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
|
||||
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
|
||||
|
||||
@@ -1,110 +1,40 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionTantque>
|
||||
<mot_clef>tantque</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>faire</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</instructionTantque>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
e0:
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e1
|
||||
li $t0, 1
|
||||
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 e0
|
||||
e1:
|
||||
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
|
||||
|
||||
@@ -1,222 +1,75 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionTantque>
|
||||
<mot_clef>tantque</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>10</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>faire</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</instructionTantque>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$a
|
||||
e0:
|
||||
lw $t0, $$a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
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 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e1
|
||||
lw $t0, $$a
|
||||
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
|
||||
lw $t0, $$a
|
||||
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
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$a
|
||||
j e0
|
||||
e1:
|
||||
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
|
||||
|
||||
@@ -1,401 +1,108 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$t0</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$t1</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$123</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$$</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$$$</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$f</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$_</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>f</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$$</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$$$</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$f</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$_</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$123</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$_</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$$</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$t0</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$123</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$t0</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAppel>
|
||||
<appelFct>
|
||||
<id_fonction>f</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$123</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAppel>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$t0: .space 4
|
||||
$$t1: .space 4
|
||||
$$123: .space 4
|
||||
$$: .space 4
|
||||
$$$: .space 4
|
||||
$$$$: .space 4
|
||||
$$f: .space 4
|
||||
$$_: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
f :
|
||||
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
|
||||
subi $sp, $sp, 4
|
||||
lw $t0, $$123
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -16($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
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 4($fp) #variable argument $$
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
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, $$
|
||||
lw $t0, $$
|
||||
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
|
||||
addi $sp, $sp 12 # 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)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$t0
|
||||
lw $t0, $$t0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
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, $$123
|
||||
subi $sp, $sp, 4 #Val Retour
|
||||
lw $t0, $$123
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal f
|
||||
addi $sp, $sp, 4 #désalocation des arguments
|
||||
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
|
||||
|
||||
@@ -16,11 +16,15 @@ sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e1
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 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
|
||||
beq $zero, $t2, e1
|
||||
and $t0, $t1, $t2
|
||||
j e0
|
||||
|
||||
@@ -1,80 +1,50 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
<symbole>ET</symbole>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>2</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e1
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 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
|
||||
beq $zero, $t2, e1
|
||||
and $t0, $t1, $t2
|
||||
j e0
|
||||
e1 :
|
||||
li $t0 0
|
||||
e0 :
|
||||
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
|
||||
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
|
||||
|
||||
@@ -1,283 +1,93 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$i</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$carre</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$i</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionTantque>
|
||||
<mot_clef>tantque</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$i</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>10</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>faire</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$carre</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$i</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
<symbole>FOIS</symbole>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$i</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$carre</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$i</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$i</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</instructionTantque>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$i: .space 4
|
||||
$$carre: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$i
|
||||
e0:
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
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 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $0 e1
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, $$i
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
mult $t1, $t2
|
||||
mflo $t0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$carre
|
||||
lw $t0, $$carre
|
||||
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
|
||||
lw $t0, $$i
|
||||
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
|
||||
add $t0, $t1, $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, $$i
|
||||
j e0
|
||||
e1:
|
||||
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
|
||||
|
||||
@@ -49,11 +49,10 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e2 :
|
||||
or $t0, $t1, $t2
|
||||
or $t0, $zero, $t2
|
||||
j e3
|
||||
e1 :
|
||||
or $t0, $t1, $t2
|
||||
e2 :
|
||||
move $t0 $t1
|
||||
e3 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
|
||||
@@ -1,408 +1,155 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>fact</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$f</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$f</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>EGAL</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
<symbole>OU</symbole>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$f</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>EGAL</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
<mot_clef>sinon</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>fact</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$f</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>MOINS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
<symbole>FOIS</symbole>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$f</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>fact</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
fact :
|
||||
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 $f
|
||||
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
|
||||
li $t0, 1
|
||||
beq $t1, $t2 e4
|
||||
li $t0, 0
|
||||
e4:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e0
|
||||
j e2
|
||||
e0 :
|
||||
lw $t0, 4($fp) #variable argument $f
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
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 e5
|
||||
li $t0, 0
|
||||
e5:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e3
|
||||
e2 :
|
||||
move $t0 $t1
|
||||
e3 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e6
|
||||
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 e7
|
||||
e6:
|
||||
subi $sp, $sp, 4 #Val Retour
|
||||
lw $t0, 4($fp) #variable argument $f
|
||||
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 fact
|
||||
addi $sp, $sp, 4 #désalocation des arguments
|
||||
lw $t0, 4($fp) #variable argument $f
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
mult $t1, $t2
|
||||
mflo $t0
|
||||
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
|
||||
e7:
|
||||
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
|
||||
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
|
||||
subi $sp, $sp, 4 #Val Retour
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal fact
|
||||
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 4 # 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
|
||||
|
||||
@@ -1,360 +1,130 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>fibo</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$n</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$n</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>2</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
<mot_clef>sinon</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>fibo</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$n</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>MOINS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>fibo</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$n</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>MOINS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>2</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>fibo</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.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
|
||||
|
||||
@@ -1,759 +1,197 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$b</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>pgcd</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$b</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$c</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$c</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>MOINS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
<symbole>DIVISE</symbole>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
<symbole>FOIS</symbole>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$c</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>EGAL</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
<mot_clef>sinon</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>pgcd</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$c</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>pgcd</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
<mot_clef>sinon</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>pgcd</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
$$b: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
pgcd :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
subi $sp, $sp, 4
|
||||
lw $t0, 8($fp) #variable argument $a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 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
|
||||
div $t1, $t2
|
||||
mflo $t0
|
||||
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
|
||||
mult $t1, $t2
|
||||
mflo $t0
|
||||
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)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -8($fp) #variable locale
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
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 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 4 # 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 $b
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal pgcd
|
||||
addi $sp, $sp, 8 #désalocation des arguments
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0 12($fp) #Adresse de retour
|
||||
addi $sp, $sp 4 # 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 4 # 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)
|
||||
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, $$a
|
||||
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, $$b
|
||||
lw $t0, $$b
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, $$a
|
||||
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 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
|
||||
subi $sp, $sp, 4 #Val Retour
|
||||
lw $t0, $$a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, $$b
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal pgcd
|
||||
addi $sp, $sp, 8 #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
|
||||
j e5
|
||||
e4:
|
||||
subi $sp, $sp, 4 #Val Retour
|
||||
lw $t0, $$b
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, $$a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal pgcd
|
||||
addi $sp, $sp, 8 #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
|
||||
e5:
|
||||
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
|
||||
|
||||
@@ -25,7 +25,7 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $t1, $t2
|
||||
or $t0, $zero, $t2
|
||||
j e3
|
||||
e2 :
|
||||
move $t0 $t1
|
||||
|
||||
@@ -1,127 +1,58 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
<symbole>OU</symbole>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>5</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e0
|
||||
j e2
|
||||
e0 :
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e3
|
||||
e2 :
|
||||
move $t0 $t1
|
||||
e3 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t0 $zero e4
|
||||
li $t0, 5
|
||||
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:
|
||||
e5:
|
||||
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
|
||||
|
||||
@@ -23,7 +23,7 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $t1, $t2
|
||||
or $t0, $zero, $t2
|
||||
j e3
|
||||
e2 :
|
||||
move $t0 $t1
|
||||
@@ -44,11 +44,15 @@ sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e5
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $t0, 6
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e5
|
||||
and $t0, $t1, $t2
|
||||
j e4
|
||||
@@ -80,7 +84,7 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $t1, $t2
|
||||
or $t0, $zero, $t2
|
||||
j e9
|
||||
e8 :
|
||||
move $t0 $t1
|
||||
@@ -101,6 +105,8 @@ sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e11
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
@@ -108,6 +114,8 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e11
|
||||
and $t0, $t1, $t2
|
||||
j e10
|
||||
@@ -139,7 +147,7 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $t1, $t2
|
||||
or $t0, $zero, $t2
|
||||
j e15
|
||||
e14 :
|
||||
move $t0 $t1
|
||||
@@ -160,6 +168,8 @@ sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e17
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
@@ -167,6 +177,8 @@ subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e17
|
||||
and $t0, $t1, $t2
|
||||
j e16
|
||||
|
||||
@@ -1,375 +1,204 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>3</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
<symbole>OU</symbole>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>4</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>3</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
<symbole>ET</symbole>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>6</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>3</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
<symbole>OU</symbole>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>3</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
<symbole>ET</symbole>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
<symbole>OU</symbole>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>0</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
<symbole>ET</symbole>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 3
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e0
|
||||
j e2
|
||||
e0 :
|
||||
li $t0, 4
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e3
|
||||
e2 :
|
||||
move $t0 $t1
|
||||
e3 :
|
||||
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
|
||||
li $t0, 3
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e5
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $t0, 6
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e5
|
||||
and $t0, $t1, $t2
|
||||
j e4
|
||||
e5 :
|
||||
li $t0 0
|
||||
e4 :
|
||||
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
|
||||
li $t0, 3
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e6
|
||||
j e8
|
||||
e6 :
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e9
|
||||
e8 :
|
||||
move $t0 $t1
|
||||
e9 :
|
||||
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
|
||||
li $t0, 3
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e11
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e11
|
||||
and $t0, $t1, $t2
|
||||
j e10
|
||||
e11 :
|
||||
li $t0 0
|
||||
e10 :
|
||||
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
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e12
|
||||
j e14
|
||||
e12 :
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e15
|
||||
e14 :
|
||||
move $t0 $t1
|
||||
e15 :
|
||||
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
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e17
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $v0 5
|
||||
syscall
|
||||
move $t0, $v0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e17
|
||||
and $t0, $t1, $t2
|
||||
j e16
|
||||
e17 :
|
||||
li $t0 0
|
||||
e16 :
|
||||
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
|
||||
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
|
||||
|
||||
33
eval-final-projet/output/eval25.asynt
Normal file
33
eval-final-projet/output/eval25.asynt
Normal file
@@ -0,0 +1,33 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<varDec>$a</varDec>
|
||||
</l_dec>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$a</var_simple>
|
||||
<lireExp>
|
||||
</lireExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<opExp>
|
||||
condexp
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$a</var_simple>
|
||||
</varExp>
|
||||
<intExp>10</intExp>
|
||||
</opExp>
|
||||
<intExp>0</intExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
26
eval-final-projet/output/eval25.lex
Normal file
26
eval-final-projet/output/eval25.lex
Normal file
@@ -0,0 +1,26 @@
|
||||
entier mot_clef entier
|
||||
$a id_variable $a
|
||||
; symbole POINT_VIRGULE
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$a id_variable $a
|
||||
= symbole EGAL
|
||||
lire mot_clef lire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$a id_variable $a
|
||||
< symbole INFERIEUR
|
||||
10 nombre 10
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
1 nombre 1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
70
eval-final-projet/output/eval25.mips
Normal file
70
eval-final-projet/output/eval25.mips
Normal file
@@ -0,0 +1,70 @@
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
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, $$a
|
||||
lw $t0, $$a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
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 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e0
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e1
|
||||
e0 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e1 :
|
||||
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
|
||||
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
|
||||
@@ -0,0 +1,70 @@
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
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, $$a
|
||||
lw $t0, $$a
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 10
|
||||
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 e2
|
||||
li $t0, 0
|
||||
e2:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e0
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e1
|
||||
e0 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e1 :
|
||||
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
|
||||
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
|
||||
|
||||
6
eval-final-projet/output/eval25.tab
Normal file
6
eval-final-projet/output/eval25.tab
Normal file
@@ -0,0 +1,6 @@
|
||||
------------------------------------------
|
||||
base = 2
|
||||
sommet = 2
|
||||
0 $a GLOBALE ENTIER 0 -1
|
||||
1 main GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
126
eval-final-projet/output/eval26.asynt
Normal file
126
eval-final-projet/output/eval26.asynt
Normal file
@@ -0,0 +1,126 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_dec>
|
||||
<varDec>$temp</varDec>
|
||||
<l_dec>
|
||||
<varDec>$g</varDec>
|
||||
<l_dec>
|
||||
<varDec>$l</varDec>
|
||||
<l_dec>
|
||||
<varDec>$v</varDec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
</l_dec>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$temp</var_simple>
|
||||
<lireExp>
|
||||
</lireExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$g</var_simple>
|
||||
<opExp>
|
||||
condexp
|
||||
<opExp>
|
||||
ou
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$temp</var_simple>
|
||||
</varExp>
|
||||
<intExp>0</intExp>
|
||||
</opExp>
|
||||
<opExp>
|
||||
egal
|
||||
<varExp>
|
||||
<var_simple>$temp</var_simple>
|
||||
</varExp>
|
||||
<intExp>0</intExp>
|
||||
</opExp>
|
||||
</opExp>
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$l</var_simple>
|
||||
<opExp>
|
||||
condexp
|
||||
<opExp>
|
||||
et
|
||||
<opExp>
|
||||
inf
|
||||
<varExp>
|
||||
<var_simple>$temp</var_simple>
|
||||
</varExp>
|
||||
<intExp>100</intExp>
|
||||
</opExp>
|
||||
<opExp>
|
||||
inf
|
||||
<intExp>0</intExp>
|
||||
<varExp>
|
||||
<var_simple>$temp</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
</opExp>
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_affect>
|
||||
<var_simple>$v</var_simple>
|
||||
<opExp>
|
||||
condexp
|
||||
<opExp>
|
||||
et
|
||||
<opExp>
|
||||
non
|
||||
<varExp>
|
||||
<var_simple>$g</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
<opExp>
|
||||
non
|
||||
<varExp>
|
||||
<var_simple>$l</var_simple>
|
||||
</varExp>
|
||||
</opExp>
|
||||
</opExp>
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
</opExp>
|
||||
</instr_affect>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$g</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$l</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<varExp>
|
||||
<var_simple>$v</var_simple>
|
||||
</varExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
79
eval-final-projet/output/eval26.lex
Normal file
79
eval-final-projet/output/eval26.lex
Normal file
@@ -0,0 +1,79 @@
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
entier mot_clef entier
|
||||
$temp id_variable $temp
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$g id_variable $g
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$l id_variable $l
|
||||
, symbole VIRGULE
|
||||
entier mot_clef entier
|
||||
$v id_variable $v
|
||||
; symbole POINT_VIRGULE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
$temp id_variable $temp
|
||||
= symbole EGAL
|
||||
lire mot_clef lire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
$g id_variable $g
|
||||
= symbole EGAL
|
||||
$temp id_variable $temp
|
||||
< symbole INFERIEUR
|
||||
0 nombre 0
|
||||
| symbole OU
|
||||
$temp id_variable $temp
|
||||
= symbole EGAL
|
||||
0 nombre 0
|
||||
? symbole INTERROGATION
|
||||
1 nombre 1
|
||||
: symbole DEUXPOINTS
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
$l id_variable $l
|
||||
= symbole EGAL
|
||||
$temp id_variable $temp
|
||||
< symbole INFERIEUR
|
||||
100 nombre 100
|
||||
& symbole ET
|
||||
0 nombre 0
|
||||
< symbole INFERIEUR
|
||||
$temp id_variable $temp
|
||||
? symbole INTERROGATION
|
||||
1 nombre 1
|
||||
: symbole DEUXPOINTS
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
$v id_variable $v
|
||||
= symbole EGAL
|
||||
! symbole NON
|
||||
$g id_variable $g
|
||||
& symbole ET
|
||||
! symbole NON
|
||||
$l id_variable $l
|
||||
? symbole INTERROGATION
|
||||
1 nombre 1
|
||||
: symbole DEUXPOINTS
|
||||
0 nombre 0
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$g id_variable $g
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$l id_variable $l
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
$v id_variable $v
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
255
eval-final-projet/output/eval26.mips
Normal file
255
eval-final-projet/output/eval26.mips
Normal file
@@ -0,0 +1,255 @@
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
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
|
||||
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
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
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 e6
|
||||
li $t0, 0
|
||||
e6:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e2
|
||||
j e4
|
||||
e2 :
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
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 e7
|
||||
li $t0, 0
|
||||
e7:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e5
|
||||
e4 :
|
||||
move $t0 $t1
|
||||
e5 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e0
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e1
|
||||
e0 :
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e1 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -12($fp) #variable locale
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 100
|
||||
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 e12
|
||||
li $t0, 0
|
||||
e12:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e11
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
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
|
||||
blt $t1, $t2 e13
|
||||
li $t0, 0
|
||||
e13:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e11
|
||||
and $t0, $t1, $t2
|
||||
j e10
|
||||
e11 :
|
||||
li $t0 0
|
||||
e10 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e8
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e9
|
||||
e8 :
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e9 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -16($fp) #variable locale
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
not $t0 $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e17
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
lw $t0, -16($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
not $t0 $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e17
|
||||
and $t0, $t1, $t2
|
||||
j e16
|
||||
e17 :
|
||||
li $t0 0
|
||||
e16 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e14
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e15
|
||||
e14 :
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e15 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -20($fp) #variable locale
|
||||
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
|
||||
lw $t0, -16($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
|
||||
lw $t0, -20($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
|
||||
addi $sp, $sp 16 # 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
|
||||
255
eval-final-projet/output/eval26.synt
Normal file
255
eval-final-projet/output/eval26.synt
Normal file
@@ -0,0 +1,255 @@
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
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
|
||||
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
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
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 e6
|
||||
li $t0, 0
|
||||
e6:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e2
|
||||
j e4
|
||||
e2 :
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 0
|
||||
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 e7
|
||||
li $t0, 0
|
||||
e7:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
or $t0, $zero, $t2
|
||||
j e5
|
||||
e4 :
|
||||
move $t0 $t1
|
||||
e5 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e0
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e1
|
||||
e0 :
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e1 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -12($fp) #variable locale
|
||||
lw $t0, -8($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 100
|
||||
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 e12
|
||||
li $t0, 0
|
||||
e12:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e11
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
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
|
||||
blt $t1, $t2 e13
|
||||
li $t0, 0
|
||||
e13:
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e11
|
||||
and $t0, $t1, $t2
|
||||
j e10
|
||||
e11 :
|
||||
li $t0 0
|
||||
e10 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e8
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e9
|
||||
e8 :
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e9 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -16($fp) #variable locale
|
||||
lw $t0, -12($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
not $t0 $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t1, e17
|
||||
subi $sp, $sp, 4
|
||||
sw $t1, 0($sp)
|
||||
lw $t0, -16($fp) #variable locale
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
not $t0 $t2
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t2, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $zero, $t2, e17
|
||||
and $t0, $t1, $t2
|
||||
j e16
|
||||
e17 :
|
||||
li $t0 0
|
||||
e16 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e14
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e15
|
||||
e14 :
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e15 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
sw $t0, -20($fp) #variable locale
|
||||
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
|
||||
lw $t0, -16($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
|
||||
lw $t0, -20($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
|
||||
addi $sp, $sp 16 # 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
|
||||
9
eval-final-projet/output/eval26.tab
Normal file
9
eval-final-projet/output/eval26.tab
Normal file
@@ -0,0 +1,9 @@
|
||||
------------------------------------------
|
||||
base = 1
|
||||
sommet = 5
|
||||
0 main GLOBALE FONCTION 0 0
|
||||
1 $temp LOCALE ENTIER 0 -1
|
||||
2 $g LOCALE ENTIER 4 -1
|
||||
3 $l LOCALE ENTIER 8 -1
|
||||
4 $v LOCALE ENTIER 12 -1
|
||||
------------------------------------------
|
||||
52
eval-final-projet/output/eval27.asynt
Normal file
52
eval-final-projet/output/eval27.asynt
Normal file
@@ -0,0 +1,52 @@
|
||||
<prog>
|
||||
<l_dec>
|
||||
<foncDec>
|
||||
main
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<opExp>
|
||||
condexp
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
<opExp>
|
||||
condexp
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</opExp>
|
||||
</instr_ecrire>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<opExp>
|
||||
condexp
|
||||
<opExp>
|
||||
condexp
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
<intExp>0</intExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</instr_ecrire>
|
||||
<l_instr>
|
||||
<instr_ecrire>
|
||||
<opExp>
|
||||
condexp
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
<opExp>
|
||||
condexp
|
||||
<intExp>1</intExp>
|
||||
<intExp>0</intExp>
|
||||
<intExp>1</intExp>
|
||||
</opExp>
|
||||
</opExp>
|
||||
</instr_ecrire>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</l_instr>
|
||||
</foncDec>
|
||||
</l_dec>
|
||||
</prog>
|
||||
49
eval-final-projet/output/eval27.lex
Normal file
49
eval-final-projet/output/eval27.lex
Normal file
@@ -0,0 +1,49 @@
|
||||
main id_fonction main
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
{ symbole ACCOLADE_OUVRANTE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
1 nombre 1
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
1 nombre 1
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
1 nombre 1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
1 nombre 1
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
1 nombre 1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
1 nombre 1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
ecrire mot_clef ecrire
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
1 nombre 1
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
( symbole PARENTHESE_OUVRANTE
|
||||
1 nombre 1
|
||||
? symbole INTERROGATION
|
||||
0 nombre 0
|
||||
: symbole DEUXPOINTS
|
||||
1 nombre 1
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
) symbole PARENTHESE_FERMANTE
|
||||
; symbole POINT_VIRGULE
|
||||
} symbole ACCOLADE_FERMANTE
|
||||
symbole FIN
|
||||
160
eval-final-projet/output/eval27.mips
Normal file
160
eval-final-projet/output/eval27.mips
Normal file
@@ -0,0 +1,160 @@
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e0
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e1
|
||||
e0 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e2
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e3
|
||||
e2 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e3 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e1 :
|
||||
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
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e6
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e7
|
||||
e6 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e7 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e4
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e5
|
||||
e4 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e5 :
|
||||
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
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e8
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e9
|
||||
e8 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e10
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e11
|
||||
e10 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e11 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e9 :
|
||||
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
|
||||
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
|
||||
160
eval-final-projet/output/eval27.synt
Normal file
160
eval-final-projet/output/eval27.synt
Normal file
@@ -0,0 +1,160 @@
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e0
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e1
|
||||
e0 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e2
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e3
|
||||
e2 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e3 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e1 :
|
||||
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
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e6
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e7
|
||||
e6 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e7 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e4
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e5
|
||||
e4 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e5 :
|
||||
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
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e8
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e9
|
||||
e8 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t1, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
beq $t1, $zero e10
|
||||
li $t0, 0
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
j e11
|
||||
e10 :
|
||||
li $t0, 1
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e11 :
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
lw $t0, 0($sp)
|
||||
addi $sp, $sp, 4
|
||||
e9 :
|
||||
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
|
||||
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
|
||||
5
eval-final-projet/output/eval27.tab
Normal file
5
eval-final-projet/output/eval27.tab
Normal file
@@ -0,0 +1,5 @@
|
||||
------------------------------------------
|
||||
base = 1
|
||||
sommet = 1
|
||||
0 main GLOBALE FONCTION 0 0
|
||||
------------------------------------------
|
||||
@@ -1,77 +1,42 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>5</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
<symbole>FOIS</symbole>
|
||||
<facteur>
|
||||
<nombre>2</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 5
|
||||
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
|
||||
mult $t1, $t2
|
||||
mflo $t0
|
||||
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
|
||||
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
|
||||
|
||||
@@ -1,513 +1,146 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>max</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$b</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>INFERIEUR</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$b</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionRetour>
|
||||
<mot_clef>retour</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionRetour>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$v_1</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$v_2</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$v_1</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAffect>
|
||||
<var>
|
||||
<id_variable>$v_2</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
<symbole>EGAL</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<mot_clef>lire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAffect>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionSi>
|
||||
<mot_clef>si</mot_clef>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<appelFct>
|
||||
<id_fonction>max</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$v_1</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
<symbole>VIRGULE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$v_2</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
<symbole>EGAL</symbole>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$v_1</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<mot_clef>alors</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$v_1</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
<optSinon>
|
||||
<mot_clef>sinon</mot_clef>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$v_2</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</optSinon>
|
||||
</instructionSi>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.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
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,104 +1,46 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAppel>
|
||||
<appelFct>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAppel>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
procedure :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
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
|
||||
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
|
||||
jal procedure
|
||||
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
|
||||
|
||||
@@ -1,91 +1,51 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>5</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>MOINS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>3</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
<symbole>PLUS</symbole>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>2</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
$$a: .space 4
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
main :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 5
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
li $t0, 3
|
||||
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)
|
||||
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
|
||||
add $t0, $t1, $t2
|
||||
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
|
||||
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
|
||||
|
||||
@@ -1,134 +1,49 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
<listeDecVariables>
|
||||
<declarationVariable>
|
||||
<mot_clef>entier</mot_clef>
|
||||
<id_variable>$a</id_variable>
|
||||
<optTailleTableau>
|
||||
</optTailleTableau>
|
||||
</declarationVariable>
|
||||
<listeDecVariablesBis>
|
||||
</listeDecVariablesBis>
|
||||
</listeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<var>
|
||||
<id_variable>$a</id_variable>
|
||||
<optIndice>
|
||||
</optIndice>
|
||||
</var>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAppel>
|
||||
<appelFct>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>10</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<listeExpressionsBis>
|
||||
</listeExpressionsBis>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAppel>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
procedure :
|
||||
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 $a
|
||||
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
|
||||
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 $t0, 10
|
||||
subi $sp, $sp, 4
|
||||
sw $t0, 0($sp)
|
||||
jal procedure
|
||||
addi $sp, $sp, 4 #désalocation des arguments
|
||||
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
|
||||
|
||||
@@ -1,93 +1,45 @@
|
||||
<programme>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionEcriture>
|
||||
<mot_clef>ecrire</mot_clef>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<expression>
|
||||
<conjonction>
|
||||
<negation>
|
||||
<comparaison>
|
||||
<expArith>
|
||||
<terme>
|
||||
<facteur>
|
||||
<nombre>1</nombre>
|
||||
</facteur>
|
||||
<termeBis>
|
||||
</termeBis>
|
||||
</terme>
|
||||
<expArithBis>
|
||||
</expArithBis>
|
||||
</expArith>
|
||||
<comparaisonBis>
|
||||
</comparaisonBis>
|
||||
</comparaison>
|
||||
</negation>
|
||||
<conjonctionBis>
|
||||
</conjonctionBis>
|
||||
</conjonction>
|
||||
<expressionBis>
|
||||
</expressionBis>
|
||||
</expression>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionEcriture>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
<declarationFonction>
|
||||
<id_fonction>main</id_fonction>
|
||||
<listeParam>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<optListeDecVariables>
|
||||
</optListeDecVariables>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</listeParam>
|
||||
<optDecVariables>
|
||||
</optDecVariables>
|
||||
<instructionBloc>
|
||||
<symbole>ACCOLADE_OUVRANTE</symbole>
|
||||
<listeInstructions>
|
||||
<instruction>
|
||||
<instructionAppel>
|
||||
<appelFct>
|
||||
<id_fonction>procedure</id_fonction>
|
||||
<symbole>PARENTHESE_OUVRANTE</symbole>
|
||||
<listeExpressions>
|
||||
</listeExpressions>
|
||||
<symbole>PARENTHESE_FERMANTE</symbole>
|
||||
</appelFct>
|
||||
<symbole>POINT_VIRGULE</symbole>
|
||||
</instructionAppel>
|
||||
</instruction>
|
||||
<listeInstructions>
|
||||
</listeInstructions>
|
||||
</listeInstructions>
|
||||
<symbole>ACCOLADE_FERMANTE</symbole>
|
||||
</instructionBloc>
|
||||
</declarationFonction>
|
||||
<listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</listeDecFonctions>
|
||||
</programme>
|
||||
.data
|
||||
.text
|
||||
__start:
|
||||
jal main
|
||||
li $v0, 10
|
||||
syscall
|
||||
procedure :
|
||||
subi $sp, $sp, 4
|
||||
sw $fp, 0($sp)
|
||||
move $fp, $sp
|
||||
subi $sp, $sp, 4
|
||||
sw $ra, 0($sp)
|
||||
li $t0, 1
|
||||
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
|
||||
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
|
||||
jal procedure
|
||||
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
|
||||
|
||||
@@ -36,7 +36,7 @@ MYCOMPILO="../compilateur-l"
|
||||
|
||||
MYCOMPILODEFAULT="${MYCOMPILO}" # utilisé pour test reconnaissance et erreur
|
||||
MYCOMPILOLEX="${MYCOMPILO} -l" # exécuter l'analyseur lexical
|
||||
MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique
|
||||
#MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique
|
||||
MYCOMPILOASYNT="${MYCOMPILO} -a" # afficher l'arbre abstrait
|
||||
MYCOMPILOTAB="${MYCOMPILO} -t" # afficher les tables des symboles
|
||||
MYCOMPILOMIPS="${MYCOMPILO} -m" # générer code MIPS
|
||||
|
||||
Reference in New Issue
Block a user