diff --git a/src/sa.cfg b/src/sa.cfg
index 60ff9b85148f3e6fe9b397212b275494b2853a94..142f147ef573426ca3fdf63fe0888335c6f46510 100644
--- a/src/sa.cfg
+++ b/src/sa.cfg
@@ -30,12 +30,14 @@ saexpinf       = 'SaExpInf';
 saexpint = 'SaExpInt';
 saexplire = 'SaExpLire';
 saexpmult = 'SaExpMult';
+saexpmodulo = 'SaExpModulo';
 saexpnot = 'SaExpNot';
 saexpor = 'SaExpOr';
 saexpsub = 'SaExpSub';
 saexpvar = 'SaExpVar';
 saexpvrai = 'SaExpVrai';
 sainstaffect = 'SaInstAffect';
+saincr= 'SaIncr';
 sainstbloc = 'SaInstBloc';
 sainstecriture = 'SaInstEcriture';
 sainstretour = 'SaInstRetour';
@@ -73,6 +75,7 @@ exp = {add}       po saexpadd   [op1]:exp [op2]:exp pf
     | {equal}     po saexpequal [op1]:exp [op2]:exp pf
     | {inf}       po saexpinf   [op1]:exp [op2]:exp pf
     | {mult}      po saexpmult  [op1]:exp [op2]:exp pf
+    | {modulo}    po saexpmodulo [op1]:exp [op2]:exp pf
     | {or}        po saexpor    [op1]:exp [op2]:exp pf
     | {sub}       po saexpsub   [op1]:exp [op2]:exp pf
     | {not}       po saexpnot         exp pf
@@ -85,6 +88,7 @@ exp = {add}       po saexpadd   [op1]:exp [op2]:exp pf
     ;
 
 inst = {affect}   po sainstaffect   var exp pf
+     | {incr}     po saincr         var exp pf
      | {bloc}     po sainstbloc     linst pf
      | {ecriture} po sainstecriture exp pf
      | {retour}   po sainstretour   exp pf
diff --git a/src/sa/LoadSa.java b/src/sa/LoadSa.java
index 209de9c85c26193b813e1b9c8c4cdc4c544cf142..758a85184eeb8e9f242cdf15826a30c815e9de80 100644
--- a/src/sa/LoadSa.java
+++ b/src/sa/LoadSa.java
@@ -159,7 +159,20 @@ public class LoadSa extends DepthFirstAdapter {
         outAMultExp(node);
     }
 
-// exp = {or}        po saexpor    [op1]:exp [op2]:exp pf
+    @Override
+    public void caseAModuloExp(AModuloExp node)
+    {
+        inAModuloExp(node);
+        node.getOp1().apply(this);
+        SaExp op1 = (SaExp) returnValue;
+        node.getOp2().apply(this);
+        SaExp op2 = (SaExp) returnValue;
+        returnValue = new SaExpModulo(op1,op2);
+        outAModuloExp(node);
+    }
+
+
+    // exp = {or}        po saexpor    [op1]:exp [op2]:exp pf
     @Override
     public void caseAOrExp(AOrExp node)
     {
@@ -267,6 +280,20 @@ public class LoadSa extends DepthFirstAdapter {
         outAAffectInst(node);
     }
 
+    @Override
+    public void caseAIncrInst(AIncrInst node)
+    {
+        inAIncrInst(node);
+        node.getVar().apply(this);
+        SaVar var = (SaVar) returnValue;
+        node.getExp().apply(this);
+        SaExp exp = (SaExp) returnValue;
+        returnValue = new SaIncr(var, exp);
+        outAIncrInst(node);
+    }
+
+
+
 // inst = {bloc}     po sainstbloc     linst pf
     @Override
     public void caseABlocInst(ABlocInst node)
diff --git a/src/sa/SaDepthFirstVisitor.java b/src/sa/SaDepthFirstVisitor.java
index 54796e8b2f557306d03078f5d1afe42674a77595..fb9886cc64e78b70ef68020bed19b0e434fd5684 100644
--- a/src/sa/SaDepthFirstVisitor.java
+++ b/src/sa/SaDepthFirstVisitor.java
@@ -186,6 +186,15 @@ public class SaDepthFirstVisitor <T> implements SaVisitor <T>{
 	defaultOut(node);
 	return null;
     }
+
+	public T visit(SaIncr node) throws Exception
+	{
+		defaultIn(node);
+		node.getLhs().accept(this);
+		node.getRhs().accept(this);
+		defaultOut(node);
+		return null;
+	}
     
     // LDEC -> DEC LDEC 
     // LDEC -> null 
@@ -260,16 +269,25 @@ public class SaDepthFirstVisitor <T> implements SaVisitor <T>{
     }
 
     // EXP -> mult EXP EXP
-    public T visit(SaExpMult node) throws Exception
-    {
-	defaultIn(node);
-	node.getOp1().accept(this);
-	node.getOp2().accept(this);
-	defaultOut(node);
-	return null;
-    }
+	public T visit(SaExpMult node) throws Exception
+	{
+		defaultIn(node);
+		node.getOp1().accept(this);
+		node.getOp2().accept(this);
+		defaultOut(node);
+		return null;
+	}
 
-    // EXP -> div EXP EXP
+	public T visit(SaExpModulo node) throws Exception
+	{
+		defaultIn(node);
+		node.getOp1().accept(this);
+		node.getOp2().accept(this);
+		defaultOut(node);
+		return null;
+	}
+
+	// EXP -> div EXP EXP
     public T visit(SaExpDiv node) throws Exception
     {
 	defaultIn(node);
@@ -340,10 +358,7 @@ public class SaDepthFirstVisitor <T> implements SaVisitor <T>{
     public T visit(SaInstBloc node) throws Exception
     {
 	defaultIn(node);
-	if ( node.getVal() != null )
-	    {
-		node.getVal().accept(this);
-	    }
+	node.getVal().accept(this);
 	defaultOut(node);
 	return null;
     }
diff --git a/src/sa/SaEval.java b/src/sa/SaEval.java
index afa7375e317144414ff5a0de4679741529683c3a..8bba44f7aed8331ffa50dd00a04fa3a375b01d63 100644
--- a/src/sa/SaEval.java
+++ b/src/sa/SaEval.java
@@ -23,9 +23,7 @@ public class SaEval extends SaDepthFirstVisitor <TypeVal> {
 
 		try{
 			appelMain.accept(this);
-		} catch(Exception e){
-		    e.printStackTrace();
-		}
+		} catch(Exception e){}
 	}
 
 	public TypeVal getVar(SaVarSimple saVar){
@@ -232,9 +230,9 @@ public class SaEval extends SaDepthFirstVisitor <TypeVal> {
 		defaultOut(node);
 		return null;
     }
-    
-    public TypeVal visit(SaInstAffect node) throws Exception
-    {
+
+	public TypeVal visit(SaInstAffect node) throws Exception
+	{
 		defaultIn(node);
 		TypeVal typeVal = node.getRhs().accept(this);
 		if(node.getLhs() instanceof SaVarIndicee){ // c'est une case de tableau, donc forcément globale
@@ -247,9 +245,24 @@ public class SaEval extends SaDepthFirstVisitor <TypeVal> {
 
 		defaultOut(node);
 		return null;
-    }
-    
-    // LDEC -> DEC LDEC 
+	}
+	public TypeVal visit(SaIncr node) throws Exception
+	{
+		defaultIn(node);
+		TypeVal incr = node.getRhs().accept(this);
+
+		if(node.getLhs() instanceof SaVarIndicee){ // c'est une case de tableau, donc forcément globale
+			SaVarIndicee lhsIndicee = (SaVarIndicee) node.getLhs();
+			TypeVal indice = lhsIndicee.getIndice().accept(this);
+			setVarGlobIndicee(lhsIndicee, indice, new TypeVal(getVarGlobIndicee(lhsIndicee, indice).valInt + incr.valInt));
+		} else{
+			setVar((SaVarSimple) node.getLhs(), new TypeVal(getVar((SaVarSimple) node.getLhs()).valInt + incr.valInt));
+		}
+		defaultOut(node);
+		return null;
+	}
+
+	// LDEC -> DEC LDEC
     // LDEC -> null 
     /*    public TypeVal visit(SaLDec node) throws Exception
     {
@@ -335,16 +348,25 @@ public class SaEval extends SaDepthFirstVisitor <TypeVal> {
     }
 
     // EXP -> mult EXP EXP
-    public TypeVal visit(SaExpMult node) throws Exception
-    {
+	public TypeVal visit(SaExpMult node) throws Exception
+	{
 		defaultIn(node);
 		TypeVal op1 = node.getOp1().accept(this);
 		TypeVal op2 = node.getOp2().accept(this);
 		defaultOut(node);
 		return new TypeVal(op1.valInt * op2.valInt);
-    }
+	}
+
+	public TypeVal visit(SaExpModulo node) throws Exception
+	{
+		defaultIn(node);
+		TypeVal op1 = node.getOp1().accept(this);
+		TypeVal op2 = node.getOp2().accept(this);
+		defaultOut(node);
+		return new TypeVal(op1.valInt % op2.valInt);
+	}
 
-    // EXP -> div EXP EXP
+	// EXP -> div EXP EXP
     public TypeVal visit(SaExpDiv node) throws Exception
     {
 		defaultIn(node);
diff --git a/src/sa/SaExpModulo.java b/src/sa/SaExpModulo.java
new file mode 100644
index 0000000000000000000000000000000000000000..4375d59235a61915c2351b9273ad865c7f2fa687
--- /dev/null
+++ b/src/sa/SaExpModulo.java
@@ -0,0 +1,31 @@
+package sa;
+
+import util.Type;
+
+
+public class SaExpModulo implements SaExp{
+        private SaExp op1;
+        private SaExp op2;
+
+        public SaExpModulo(SaExp op1, SaExp op2){
+            this.op1 = op1;
+            this.op2 = op2;
+        }
+
+        public SaExp getOp1(){return this.op1;}
+        public SaExp getOp2(){return this.op2;}
+
+        public Type getType(){
+            return Type.ENTIER;
+        }
+        public <T> T accept(SaVisitor <T> visitor) throws Exception{
+            return visitor.visit(this);
+        }
+
+        @Override
+        public String toString() {
+            return "(" + this.getClass().getSimpleName() + " " + op1 + " " + op2 + ")";
+        }
+    }
+
+
diff --git a/src/sa/SaIncr.java b/src/sa/SaIncr.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce77df03cfac81963409faa7e4e90fecff67fc89
--- /dev/null
+++ b/src/sa/SaIncr.java
@@ -0,0 +1,24 @@
+package sa;
+
+public class SaIncr implements SaInst{
+    private SaVar lhs;
+    private SaExp rhs;
+
+    public SaIncr(SaVar lhs, SaExp rhs){
+        this.lhs = lhs;
+        this.rhs = rhs;
+    }
+    public SaVar getLhs(){return this.lhs;}
+    public SaExp getRhs(){return this.rhs;}
+
+    public <T> T accept(SaVisitor <T> visitor) throws Exception{
+        return visitor.visit(this);
+    }
+
+    @Override
+    public String toString() {
+        return "(" + this.getClass().getSimpleName()+ " " + lhs + " " + rhs + ")";
+    }
+}
+
+
diff --git a/src/sa/SaVisitor.java b/src/sa/SaVisitor.java
index 3d28bb7870f422fa6caa7a50066a819b40fa6c11..962d2f2b69c3ec037014c81c29cfae4580d16adc 100644
--- a/src/sa/SaVisitor.java
+++ b/src/sa/SaVisitor.java
@@ -28,6 +28,7 @@ interface SaVisitor <T> {
     public T visit(SaExpAdd node) throws Exception;
     public T visit(SaExpSub node) throws Exception;
     public T visit(SaExpMult node) throws Exception;
+    public T visit(SaExpModulo node) throws Exception;
     public T visit(SaExpDiv node) throws Exception;
     public T visit(SaExpInf node) throws Exception;
     public T visit(SaExpEqual node) throws Exception;
@@ -35,4 +36,6 @@ interface SaVisitor <T> {
     public T visit(SaExpOr node) throws Exception;
     public T visit(SaExpNot node) throws Exception;
     public T visit(SaLExp node) throws Exception;
+    public T visit(SaIncr node) throws Exception;
+
 }
diff --git a/test2024/c3a-ref/incr1.c3a b/test2024/c3a-ref/incr1.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..ec719f2d44f7816633a0e9dd6e0343c20757b6af
--- /dev/null
+++ b/test2024/c3a-ref/incr1.c3a
@@ -0,0 +1,8 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	a = 4
+	@1 = a + 1
+	a = @1
+	write a	
+	fend
diff --git a/test2024/c3a-ref/incr2.c3a b/test2024/c3a-ref/incr2.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..ec719f2d44f7816633a0e9dd6e0343c20757b6af
--- /dev/null
+++ b/test2024/c3a-ref/incr2.c3a
@@ -0,0 +1,8 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	a = 4
+	@1 = a + 1
+	a = @1
+	write a	
+	fend
diff --git a/test2024/c3a-ref/incr3.c3a b/test2024/c3a-ref/incr3.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..672ec22a9add02f2c02eaa7cb305d31bec25b7df
--- /dev/null
+++ b/test2024/c3a-ref/incr3.c3a
@@ -0,0 +1,8 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	t[1] = 100
+	@1 = t[1] + 10
+	t[1] = @1
+	write t[1]	
+	fend
diff --git a/test2024/c3a-ref/incr4.c3a b/test2024/c3a-ref/incr4.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..4d24d5553e6be5e281ec58c19a0682b3d4437717
--- /dev/null
+++ b/test2024/c3a-ref/incr4.c3a
@@ -0,0 +1,10 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	a = 4
+	@1 = 12 * 2
+	@2 = a + @1
+	@3 = a + @2
+	a = @3
+	write a	
+	fend
diff --git a/test2024/c3a-ref/incr5.c3a b/test2024/c3a-ref/incr5.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..9c09934b34b34e8f6f59c72edd7e0a7e581de840
--- /dev/null
+++ b/test2024/c3a-ref/incr5.c3a
@@ -0,0 +1,11 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	t[1] = 2
+	t[2] = 3
+	t[3] = 1
+	@1 = t[1] * t[2]
+	@2 = t[3] + @1
+	t[3] = @2
+	write t[3]	
+	fend
diff --git a/test2024/c3a-ref/modulo1.c3a b/test2024/c3a-ref/modulo1.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..1555c5b5e3211e14c2e8ee7badeafa591bdb26a9
--- /dev/null
+++ b/test2024/c3a-ref/modulo1.c3a
@@ -0,0 +1,8 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	@1 = 5 / 3
+	@2 = 3 * @1
+	@3 = 5 - @2
+	write @3	
+	fend
diff --git a/test2024/c3a-ref/modulo2.c3a b/test2024/c3a-ref/modulo2.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..06843a024608b1f23eae248f4908af0bfdfefd71
--- /dev/null
+++ b/test2024/c3a-ref/modulo2.c3a
@@ -0,0 +1,9 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	@1 = 12 / 7
+	@2 = 7 * @1
+	@3 = 12 - @2
+	@4 = @3 + 5
+	write @4	
+	fend
diff --git a/test2024/c3a-ref/modulo3.c3a b/test2024/c3a-ref/modulo3.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..195a462cbff301f4e7b8fd4ac52047ab8d6f2331
--- /dev/null
+++ b/test2024/c3a-ref/modulo3.c3a
@@ -0,0 +1,10 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	@1 = 2 * 7
+	@2 = @1 / 5
+	@3 = 5 * @2
+	@4 = @1 - @3
+	@5 = @4 + 5
+	write @5	
+	fend
diff --git a/test2024/c3a-ref/modulo4.c3a b/test2024/c3a-ref/modulo4.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..6b3257b33da0469a9cb1a2cd9d9ac848f7055ea5
--- /dev/null
+++ b/test2024/c3a-ref/modulo4.c3a
@@ -0,0 +1,10 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	a = 12
+	b = 5
+	@1 = a / b
+	@2 = b * @1
+	@3 = a - @2
+	write @3	
+	fend
diff --git a/test2024/c3a-ref/modulo5.c3a b/test2024/c3a-ref/modulo5.c3a
new file mode 100644
index 0000000000000000000000000000000000000000..4eb777e42fa30dd03e13615fe16163347e6f5d25
--- /dev/null
+++ b/test2024/c3a-ref/modulo5.c3a
@@ -0,0 +1,11 @@
+	@0 = call main
+	stop @0
+main	fbegin	#entree fonction
+	t[0] = 3164
+	t[1] = 152
+	@1 = t[0] / t[1]
+	@2 = t[1] * @1
+	@3 = t[0] - @2
+	t[2] = @3
+	write t[2]	
+	fend
diff --git a/test2024/evaluate.py b/test2024/evaluate.py
new file mode 100755
index 0000000000000000000000000000000000000000..a219043f09427613ad792734cda7fde22a11d66d
--- /dev/null
+++ b/test2024/evaluate.py
@@ -0,0 +1,473 @@
+#! /usr/bin/python3 -u
+
+import sys
+import os
+import subprocess
+import inspect
+import argparse
+
+# code de sortie du compilateur
+
+NOERROR_CODE = 0
+ERR_TYPE_CODE = 3
+ERR_SYMBOL_TABLE_CODE = 4
+ERR_SYNTAX_CODE = 5
+ERR_LEX_CODE = 6
+
+# coefficients pour le calcul de la note finale
+SC_COEFF = 4
+SA_DIFF_COEFF = 0
+TS_DIFF_COEFF = 0
+SA_COEFF = 4
+C3A_DIFF_COEFF = 0
+C3A_COEFF = 4
+PRE_NASM_DIFF = 0
+PRE_NASM_COEFF = 4
+NASM_DIFF_COEFF = 0
+NASM_COEFF = 4
+EXE_COEFF = 0
+ERR_TS_COEFF = 0
+ERR_TYPE_COEFF = 0
+
+# Paths relative to this file (evaluate.py)
+inputPath = "./input/"
+errInputPathTs = "./input_err_ts/"
+errInputPathType = "./input_err_type/"
+refPath = "./"
+srcPath = "../src/"
+# Keep empty
+classpath = ""
+# Outputs files (don't change this, it's set in the main)
+outErr = sys.stderr
+outScore = sys.stdout
+outVerbose = open(os.devnull,"w")
+outputFilename = "result.txt"
+
+################################################################################
+def compileCompiler() :
+  global classpath
+  for file in ["Compiler.java", "SaVM.java", "C3aVM.java", "NasmVM.java"] :
+    if not os.path.isfile(srcPath+file) :
+      print("Skipping compilation of %s"%file, file=outVerbose)
+      continue
+    package = file.lower().split('.')[0].replace('vm', '')
+    if package in ["c3a", "nasm"] and not os.path.isdir(srcPath+package) :
+      print("Skipping compilation of %s"%file, file=outVerbose)
+      continue
+    print("Compiling %s..."%file, end="", file=outVerbose)
+    proc = subprocess.Popen("cd %s && javac %s %s %s"%(srcPath, "-cp " if len(classpath) > 0 else "", classpath, file), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    errMess = proc.stderr.read().decode('utf8')
+    returnCode = proc.wait()
+    if returnCode == 0 :
+      print("Done", file=outVerbose)
+    else :
+      print("", file=outVerbose)
+      print("ERROR !", file=outErr)
+      print(errMess, file=outErr)
+      exit(1)
+    print("", file=outVerbose)
+    classpath = "../xerces-2_12_1/*:%s"%srcPath
+  classpath = ""
+################################################################################
+
+################################################################################
+def deleteClasses() :
+
+  for root, subdirs, files in os.walk("%s.."%srcPath) :
+    if ".git" in root :
+      continue
+    for filename in files :
+      if os.path.splitext(filename)[1] == ".class" :
+        os.remove(root+"/"+filename)
+        
+  return classpath
+################################################################################
+
+################################################################################
+def findClasspath() :
+  global classpath
+
+  if len(classpath) > 0 :
+    return classpath
+
+  for root, subdirs, files in os.walk("%s.."%srcPath) :
+    if ".git" in root :
+      continue
+    for filename in files :
+      if os.path.splitext(filename)[1] in [".class", ".jar"] :
+        classpath += ("" if len(classpath) == 0 else ":") + root
+        break
+
+  classpath += ("" if len(classpath) == 0 else ":")+"../xerces-2_12_1/*"
+  return classpath
+################################################################################
+
+################################################################################
+def compiler(verbose="-v 2") :
+  return "java -classpath %s Compiler %s"%(findClasspath(), verbose)
+################################################################################
+
+################################################################################
+def green(string) :
+  return "\033[92m%s\033[0m"%string
+################################################################################
+
+################################################################################
+def purple(string) :
+  return "\033[95m%s\033[0m"%string
+################################################################################
+
+################################################################################
+def red(string) :
+  return "\033[91m%s\033[0m"%string
+################################################################################
+
+################################################################################
+def changeExtension(filename, newExtension) :
+  return os.path.splitext(filename)[0] + newExtension
+################################################################################
+
+################################################################################
+def findInputFiles(path) :
+  inputFiles = []
+  for filename in os.listdir(path) :
+    if os.path.splitext(filename)[1] == ".l" :
+      inputFiles.append(filename)
+  inputFiles.sort()
+  return inputFiles
+################################################################################
+
+################################################################################
+def deleteCompilationOutputs() :
+  outputExtensions = [".exe", ".exeout", ".o", ".out", ".sa", ".saout", ".sc", ".ts", ".nasm", ".nasmout", ".pre-nasm", ".pre-nasmout", ".c3a", ".c3aout", ".fg", ".fgs", ".ig"]
+  for filename in os.listdir(inputPath) :
+    if os.path.splitext(filename)[1] in outputExtensions :
+      os.remove(inputPath+filename)
+################################################################################
+
+################################################################################
+def compileInputFiles(inputFiles) :
+  evaluation = getNewEvaluationResult(ERR_SYNTAX_CODE)
+  for inputFile in inputFiles :
+    lightFilename = inputFile.split("/")[-1]
+    print("Compiling %s..."%inputFile, file=outVerbose, flush=True, end='')
+    returnCode = subprocess.Popen("{} {}{}".format(compiler(), inputPath, inputFile), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
+    if returnCode == NOERROR_CODE :
+      evaluation[1]["correct"].append(lightFilename)
+      print("Done", file=outVerbose)
+    else :
+      evaluation[1]["incorrect"].append(lightFilename)
+      print("ERROR !", file=outErr)
+  print("", file=outVerbose)
+  return evaluation
+################################################################################
+
+################################################################################
+def getNewEvaluationResult(name) :
+  return [name, {"correct" : [], "incorrect" : [], "notfound" : []}]
+################################################################################
+
+################################################################################
+def evaluateCompilationErrors(inputFiles, expectedCode, name) :
+  evaluation = getNewEvaluationResult(name)
+
+  print(file=outVerbose)
+
+  for inputFile in inputFiles :
+    if not os.path.isfile(inputFile) :
+      print("ERROR : could not find '%s'"%inputFile, file=outErr)
+      exit(1)
+    lightFilename = inputFile.split("/")[-1]
+    print("Compiling %s..."%lightFilename, end="", file=outVerbose)
+    returnCode = subprocess.Popen("{} {}".format(compiler(verbose=""), inputFile), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).wait()
+    print("Done (%d)"%returnCode, file=outVerbose)
+    if returnCode == expectedCode :
+      evaluation[1]["correct"].append(lightFilename)
+    else :
+      evaluation[1]["incorrect"].append(lightFilename)
+  print("", file=outVerbose)
+
+  return evaluation
+################################################################################
+
+################################################################################
+def evaluateDiff(inputFiles, extension, extensionRef, path, name) :
+  evaluation = getNewEvaluationResult(name)
+
+  for filename in inputFiles :
+    producedFile = changeExtension(filename, extension)
+    if not os.path.isfile(inputPath+producedFile) :
+      evaluation[1]["notfound"].append(producedFile)
+      continue
+    
+    ref = refPath+path+changeExtension(producedFile, extensionRef)
+    if not os.path.isfile(ref) :
+      print("ATTENTION : Fichier non trouvé : %s"%ref, file=sys.stderr)
+      continue
+
+    refContent = []
+    for line in open(ref, "r") :
+      line = line.strip()
+      if len(line) > 0 :
+        refContent.append(line)
+    producedContent = []
+    for line in open(inputPath+producedFile, "r") :
+      line = line.strip()
+      if len(line) > 0 :
+        producedContent.append(line)
+
+    if producedContent == refContent :
+      evaluation[1]["correct"].append(producedFile)
+    else :
+      evaluation[1]["incorrect"].append(producedFile)
+
+  return evaluation
+################################################################################
+
+################################################################################
+def evaluateSa(inputFiles) :
+  errs = []
+  for filename in inputFiles :
+    saFilename = inputPath+changeExtension(filename, ".sa")
+    outFilename = inputPath+changeExtension(filename, ".saout")
+    if not os.path.isfile(saFilename) :
+      continue
+
+    command = "java -classpath %s SaVM -sa %s > %s"%(findClasspath(), saFilename, outFilename)
+    out = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read().decode()
+    if len(out) != 0 :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+
+  return evaluateDiff(inputFiles, ".saout", ".out", "out-ref/", "Execution de sa"), errs
+################################################################################
+
+################################################################################
+def evaluateC3a(inputFiles) :
+  errs = []
+  for filename in inputFiles :
+    c3aFilename = inputPath+changeExtension(filename, ".c3a")
+    tsFilename = inputPath+changeExtension(filename, ".ts")
+    outFilename = inputPath+changeExtension(filename, ".c3aout")
+    if not os.path.isfile(c3aFilename) or not os.path.isfile(tsFilename) :
+      continue
+
+    command = "java -classpath %s C3aVM -c3a %s -ts %s > %s"%(findClasspath(), c3aFilename, tsFilename, outFilename)
+    out = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read().decode()
+    if len(out) != 0 :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+
+  return evaluateDiff(inputFiles, ".c3aout", ".out", "out-ref/", "Execution du c3a"), errs
+################################################################################
+
+################################################################################
+def evaluatePreNasm(inputFiles) :
+  errs = []
+  for filename in inputFiles :
+    nasmFilename = inputPath+changeExtension(filename, ".pre-nasm")
+    outFilename = inputPath+changeExtension(filename, ".pre-nasmout")
+    if not os.path.isfile(nasmFilename) :
+      continue
+
+    command = "java -classpath %s NasmVM -nasm %s > %s"%(findClasspath(), nasmFilename, outFilename)
+    out = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read().decode()
+    if len(out) != 0 :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+
+  return evaluateDiff(inputFiles, ".pre-nasmout", ".out", "out-ref/", "Execution du pre-nasm"), errs
+################################################################################
+
+################################################################################
+def evaluateNasm(inputFiles) :
+  errs = []
+  for filename in inputFiles :
+    nasmFilename = inputPath+changeExtension(filename, ".nasm")
+    outFilename = inputPath+changeExtension(filename, ".nasmout")
+    if not os.path.isfile(nasmFilename) :
+      continue
+
+    command = "java -classpath %s NasmVM -nasm %s > %s"%(findClasspath(), nasmFilename, outFilename)
+    out = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read().decode()
+    if len(out) != 0 :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+
+  return evaluateDiff(inputFiles, ".nasmout", ".out", "out-ref/", "Execution du nasm"), errs
+################################################################################
+
+################################################################################
+def evaluateExecutable(inputFiles) :
+  errs = []
+  for filename in inputFiles :
+    nasmFilename = changeExtension(filename, ".nasm")
+    objectFilename = changeExtension(filename, ".o")
+    execFilename = changeExtension(filename, ".exe")
+    outFilename = changeExtension(filename, ".exeout")
+    if not os.path.isfile(inputPath+nasmFilename) :
+      continue
+
+    out = subprocess.Popen("cd {} && nasm -f elf -dwarf -g {}".format(inputPath+"..","input/"+nasmFilename), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read()
+    if not os.path.isfile(inputPath+objectFilename) :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+      continue
+    out = subprocess.Popen("ld -m elf_i386 -o {}{} {}{}".format(inputPath,execFilename,inputPath,objectFilename), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read()
+    if not os.path.isfile(inputPath+execFilename) :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+      continue
+    out = subprocess.Popen("{}{} > {}{}".format(inputPath,execFilename,inputPath,outFilename), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stderr.read()
+    if not os.path.isfile(inputPath+outFilename) :
+      errs.append("ERROR %s for input %s : '%s'"%(inspect.stack()[0][3], filename, out))
+      continue
+
+  return evaluateDiff(inputFiles, ".exeout", ".out", "out-ref/", "Execution du binaire"), errs
+################################################################################
+
+################################################################################
+def printListElements(destination, elements, colorFunction, useColor, resultStr) :
+  if len(elements) == 0 :
+    return
+  maxColumnSize = len(max(elements, key=len))
+  for filename in elements :
+    if useColor :
+      print("\t{}".format(colorFunction(filename)), file=destination)
+    else :
+      print("\t{:{}} {}".format(filename, maxColumnSize+2, resultStr), file=destination)
+################################################################################
+
+################################################################################
+def printEvaluationResult(destination, evaluationResult, useColor) :
+  name = evaluationResult[0]
+  correct = evaluationResult[1]["correct"]
+  incorrect = evaluationResult[1]["incorrect"]
+  notfound = evaluationResult[1]["notfound"]
+
+  nbCorrect = len(correct)
+  nbTotal = len(correct) + len(incorrect) + len(notfound)
+
+  score = 0.0
+  if nbTotal > 0 :
+    score = 100.0*nbCorrect/nbTotal
+  for dest, color in [(destination, useColor), (open(outputFilename, "a"), False)] :
+    print("Évaluation de %s :"%name, file=dest)
+    print("{}/{} correct ({:6.2f}%)".format(nbCorrect, nbTotal, score), file=dest)
+    if nbCorrect+len(incorrect) > 0 :
+      printListElements(dest, correct, green, color, "CORRECT")
+      printListElements(dest, incorrect, purple, color, "INCORRECT")
+      printListElements(dest, notfound, red, color, "NON-EXISTANT")
+  return score
+################################################################################
+
+################################################################################
+if __name__ == "__main__" :
+  parser = argparse.ArgumentParser()
+  parser.add_argument("--verbose", "-v", default=False, action="store_true",
+    help="Verbose output (obsolete, verbose is default).")
+  parser.add_argument("--silent", "-s", default=False, action="store_true",
+    help="Less verbose output.")
+  parser.add_argument("--noColors", default=False, action="store_true",
+    help="Disable colors in output.")
+  parser.add_argument("--clean", "-c", default=False, action="store_true",
+    help="Clean input dir then exit.")
+  parser.add_argument("--number", "-n", default=None, type=int,
+    help="Restrict tests to n inputs.")
+  parser.add_argument("--files", "-f", default=[], nargs="*",
+    help="Specify input files.")
+  args = parser.parse_args()
+
+  args.verbose = not args.silent
+
+  if args.verbose :
+    outVerbose = outScore
+  if args.clean :
+      deleteCompilationOutputs()
+      exit(0)
+
+  with open(outputFilename, "w") as _ :
+    pass
+
+  inputFiles = args.files[:args.number]
+  if len(inputFiles) == 0 :
+    inputFiles = findInputFiles(inputPath)[:args.number]
+
+  errInputFilesTs = [errInputPathTs+"/"+f for f in findInputFiles(errInputPathTs)[:args.number]]
+  errInputFilesType = [errInputPathType+"/"+f for f in findInputFiles(errInputPathType)[:args.number]]
+
+  deleteCompilationOutputs()
+
+  compileCompiler()
+
+
+  scores = []
+  names = []
+  errors = []
+  names.append("SC           ")
+  res = compileInputFiles(inputFiles)
+  scores.append(printEvaluationResult(outVerbose, res, not args.noColors))
+  msg = "Diff de %s"
+  dfSa = lambda files : (evaluateDiff(inputFiles, ".sa", ".sa", "sa-ref/", msg%"sa"), [])
+  dfTs = lambda files : (evaluateDiff(inputFiles, ".ts", ".ts", "ts-ref/", msg%"ts"), [])
+  dfC3a = lambda files : (evaluateDiff(inputFiles, ".c3a", ".c3a", "c3a-ref/", msg%"c3a"), [])
+  dfPreNasm = lambda files : (evaluateDiff(inputFiles, ".pre-nasm", ".pre-nasm", "pre-nasm-ref/", msg%"pre-nasm"), [])
+  dfNasm = lambda files : (evaluateDiff(inputFiles, ".nasm", ".nasm", "nasm-ref/", msg%"nasm"), [])
+
+  # Evaluation of normal (working) examples
+  for evalTarget in [ 
+                     ("SA-DIFF      ", dfSa),
+                     ("TS-DIFF      ", dfTs),
+                     ("SA           ", evaluateSa),
+                     ("C3A-DIFF     ", dfC3a),
+                     ("C3A          ", evaluateC3a),
+                     ("PRE-NASM-DIFF", dfPreNasm),
+                     ("PRE-NASM     ", evaluatePreNasm),
+                     ("NASM-DIFF    ", dfNasm),
+                     ("NASM         ", evaluateNasm),
+                     ("EXE          ", evaluateExecutable),
+                    ] :
+    names.append(evalTarget[0])
+    res, err = evalTarget[1](inputFiles)
+    scores.append(printEvaluationResult(outVerbose, res, not args.noColors))
+    errors += err
+
+  # Evaluation of ill formed examples, that should trigger a compilation error
+  for evalTarget in [
+                     ("ERR_TS       ", evaluateCompilationErrors, errInputFilesTs, ERR_SYMBOL_TABLE_CODE),
+                     ("ERR_TYPE     ", evaluateCompilationErrors, errInputFilesType, ERR_TYPE_CODE),
+                    ] :
+    names.append(evalTarget[0])
+    res = evalTarget[1](evalTarget[2], evalTarget[3], evalTarget[0])
+    scores.append(printEvaluationResult(outVerbose, res, not args.noColors))
+
+  deleteClasses()
+
+  # The rest of the script will now print the results
+
+  if not args.noColors :
+    print("Légende : {}  {}  {}".format(green("CORRECT"), purple("INCORRECT"), red("NON-EXISTANT")), file=outVerbose)
+
+  errorsStr = ""
+
+  if len(errors) > 0 :
+    errorsStr = "%s\n%s"%((30*"-")+("EVALUATION ERRORS")+(30*"-"), "\n\n".join(errors))
+
+  print(errorsStr)
+  print(errorsStr, file=open(outputFilename, "a"))
+
+  for i in range(len(scores)):
+    print(names[i], "\t", scores[i])
+  
+  print("Copy-pastable scores :", file=outScore)
+  print("\t".join(names), file=outScore)
+  print("\t".join(["%6.2f"%scores[i] for i in range(len(scores))]), file=outScore)
+
+  print("\nSauvegardé dans le fichier %s"%outputFilename)
+
+# les coefficients associés à chaque partie pour le calcul de la note finale
+  coeffs = [SC_COEFF, SA_DIFF_COEFF, TS_DIFF_COEFF, SA_COEFF, C3A_DIFF_COEFF, C3A_COEFF, PRE_NASM_DIFF, PRE_NASM_COEFF, NASM_DIFF_COEFF, NASM_COEFF, EXE_COEFF, ERR_TS_COEFF, ERR_TYPE_COEFF]
+
+# calcul de la note finale
+
+  note = 0
+  for i in range(len(scores)):
+    note += scores[i] / 100 * coeffs[i]
+  print ("note = ",  note)
+
+################################################################################
+
diff --git a/test2024/fg-ref/incr1.fg b/test2024/fg-ref/incr1.fg
new file mode 100644
index 0000000000000000000000000000000000000000..8dc6a0827cfeafb2e629c87520c4c85127248359
--- /dev/null
+++ b/test2024/fg-ref/incr1.fg
@@ -0,0 +1,26 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	dword [a],	4	;Affect
+14 : ( 15 )		mov	@1,	dword [a]
+15 : ( 16 )		add	@1,	1
+16 : ( 17 )		mov	dword [a],	@1	;Affect
+17 : ( 18 )		mov	eax,	dword [a]	;Write 1
+18 : ( 19 )		call	iprintLF	;Write 2
+19 : ( 20 )		add	esp,	0	;désallocation des variables locales
+20 : ( 21 )		pop	edx	;restaure edx
+21 : ( 22 )		pop	ecx	;restaure ecx
+22 : ( 23 )		pop	ebx	;restaure ebx
+23 : ( 24 )		pop	eax	;restaure eax
+24 : ( 25 )		pop	ebp	;restaure la valeur de ebp
+25 : ( )		ret
diff --git a/test2024/fg-ref/incr2.fg b/test2024/fg-ref/incr2.fg
new file mode 100644
index 0000000000000000000000000000000000000000..74721b52ad7011da6a00be732974cdbe966b8035
--- /dev/null
+++ b/test2024/fg-ref/incr2.fg
@@ -0,0 +1,26 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	4	;allocation des variables locales
+13 : ( 14 )		mov	dword [ebp-4],	4	;Affect
+14 : ( 15 )		mov	@1,	dword [ebp-4]
+15 : ( 16 )		add	@1,	1
+16 : ( 17 )		mov	dword [ebp-4],	@1	;Affect
+17 : ( 18 )		mov	eax,	dword [ebp-4]	;Write 1
+18 : ( 19 )		call	iprintLF	;Write 2
+19 : ( 20 )		add	esp,	4	;désallocation des variables locales
+20 : ( 21 )		pop	edx	;restaure edx
+21 : ( 22 )		pop	ecx	;restaure ecx
+22 : ( 23 )		pop	ebx	;restaure ebx
+23 : ( 24 )		pop	eax	;restaure eax
+24 : ( 25 )		pop	ebp	;restaure la valeur de ebp
+25 : ( )		ret
diff --git a/test2024/fg-ref/incr3.fg b/test2024/fg-ref/incr3.fg
new file mode 100644
index 0000000000000000000000000000000000000000..d43dcd691a8a51ecaf374589685a74fbd6cc533a
--- /dev/null
+++ b/test2024/fg-ref/incr3.fg
@@ -0,0 +1,34 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	@8,	1
+14 : ( 15 )		imul	@8,	4
+15 : ( 16 )		mov	dword [t+@8],	100	;Affect
+16 : ( 17 )		mov	@9,	1
+17 : ( 18 )		imul	@9,	4
+18 : ( 19 )		mov	@1,	dword [t+@9]
+19 : ( 20 )		add	@1,	10
+20 : ( 21 )		mov	@10,	1
+21 : ( 22 )		imul	@10,	4
+22 : ( 23 )		mov	dword [t+@10],	@1	;Affect
+23 : ( 24 )		mov	@12,	1
+24 : ( 25 )		imul	@12,	4
+25 : ( 26 )		mov	eax,	dword [t+@12]	;Write 1
+26 : ( 27 )		call	iprintLF	;Write 2
+27 : ( 28 )		add	esp,	0	;désallocation des variables locales
+28 : ( 29 )		pop	edx	;restaure edx
+29 : ( 30 )		pop	ecx	;restaure ecx
+30 : ( 31 )		pop	ebx	;restaure ebx
+31 : ( 32 )		pop	eax	;restaure eax
+32 : ( 33 )		pop	ebp	;restaure la valeur de ebp
+33 : ( )		ret
diff --git a/test2024/fg-ref/incr4.fg b/test2024/fg-ref/incr4.fg
new file mode 100644
index 0000000000000000000000000000000000000000..6e826247c06ed05158a343495f11f9e40df5fe7e
--- /dev/null
+++ b/test2024/fg-ref/incr4.fg
@@ -0,0 +1,30 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	dword [a],	4	;Affect
+14 : ( 15 )		mov	@1,	12
+15 : ( 16 )		imul	@1,	2
+16 : ( 17 )		mov	@2,	dword [a]
+17 : ( 18 )		add	@2,	@1
+18 : ( 19 )		mov	@3,	dword [a]
+19 : ( 20 )		add	@3,	@2
+20 : ( 21 )		mov	dword [a],	@3	;Affect
+21 : ( 22 )		mov	eax,	dword [a]	;Write 1
+22 : ( 23 )		call	iprintLF	;Write 2
+23 : ( 24 )		add	esp,	0	;désallocation des variables locales
+24 : ( 25 )		pop	edx	;restaure edx
+25 : ( 26 )		pop	ecx	;restaure ecx
+26 : ( 27 )		pop	ebx	;restaure ebx
+27 : ( 28 )		pop	eax	;restaure eax
+28 : ( 29 )		pop	ebp	;restaure la valeur de ebp
+29 : ( )		ret
diff --git a/test2024/fg-ref/incr5.fg b/test2024/fg-ref/incr5.fg
new file mode 100644
index 0000000000000000000000000000000000000000..24b51c57e1b1df8b60bd1ce06a380a0bc7ad8c3d
--- /dev/null
+++ b/test2024/fg-ref/incr5.fg
@@ -0,0 +1,46 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	@9,	1
+14 : ( 15 )		imul	@9,	4
+15 : ( 16 )		mov	dword [t+@9],	2	;Affect
+16 : ( 17 )		mov	@10,	2
+17 : ( 18 )		imul	@10,	4
+18 : ( 19 )		mov	dword [t+@10],	3	;Affect
+19 : ( 20 )		mov	@11,	3
+20 : ( 21 )		imul	@11,	4
+21 : ( 22 )		mov	dword [t+@11],	1	;Affect
+22 : ( 23 )		mov	@12,	1
+23 : ( 24 )		imul	@12,	4
+24 : ( 25 )		mov	@1,	dword [t+@12]
+25 : ( 26 )		mov	@13,	2
+26 : ( 27 )		imul	@13,	4
+27 : ( 28 )		imul	@1,	dword [t+@13]
+28 : ( 29 )		mov	@14,	3
+29 : ( 30 )		imul	@14,	4
+30 : ( 31 )		mov	@2,	dword [t+@14]
+31 : ( 32 )		add	@2,	@1
+32 : ( 33 )		mov	@15,	3
+33 : ( 34 )		imul	@15,	4
+34 : ( 35 )		mov	dword [t+@15],	@2	;Affect
+35 : ( 36 )		mov	@17,	3
+36 : ( 37 )		imul	@17,	4
+37 : ( 38 )		mov	eax,	dword [t+@17]	;Write 1
+38 : ( 39 )		call	iprintLF	;Write 2
+39 : ( 40 )		add	esp,	0	;désallocation des variables locales
+40 : ( 41 )		pop	edx	;restaure edx
+41 : ( 42 )		pop	ecx	;restaure ecx
+42 : ( 43 )		pop	ebx	;restaure ebx
+43 : ( 44 )		pop	eax	;restaure eax
+44 : ( 45 )		pop	ebp	;restaure la valeur de ebp
+45 : ( )		ret
diff --git a/test2024/fg-ref/modulo1.fg b/test2024/fg-ref/modulo1.fg
new file mode 100644
index 0000000000000000000000000000000000000000..4b9dc7317d27d871c55bfa6a6582df1061b7b628
--- /dev/null
+++ b/test2024/fg-ref/modulo1.fg
@@ -0,0 +1,32 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+14 : ( 15 )		mov	eax,	5	;affectation des bits de poids faible du dividende
+15 : ( 16 )		mov	@12,	3
+16 : ( 17 )		idiv	@12
+17 : ( 18 )		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+18 : ( 19 )		mov	@1,	eax
+19 : ( 20 )		mov	@2,	3
+20 : ( 21 )		imul	@2,	@1
+21 : ( 22 )		mov	@3,	5
+22 : ( 23 )		sub	@3,	@2
+23 : ( 24 )		mov	eax,	@3	;Write 1
+24 : ( 25 )		call	iprintLF	;Write 2
+25 : ( 26 )		add	esp,	0	;désallocation des variables locales
+26 : ( 27 )		pop	edx	;restaure edx
+27 : ( 28 )		pop	ecx	;restaure ecx
+28 : ( 29 )		pop	ebx	;restaure ebx
+29 : ( 30 )		pop	eax	;restaure eax
+30 : ( 31 )		pop	ebp	;restaure la valeur de ebp
+31 : ( )		ret
diff --git a/test2024/fg-ref/modulo2.fg b/test2024/fg-ref/modulo2.fg
new file mode 100644
index 0000000000000000000000000000000000000000..6a6d3c5fd802fa19cd63f439744bcd5173476517
--- /dev/null
+++ b/test2024/fg-ref/modulo2.fg
@@ -0,0 +1,34 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+14 : ( 15 )		mov	eax,	12	;affectation des bits de poids faible du dividende
+15 : ( 16 )		mov	@13,	7
+16 : ( 17 )		idiv	@13
+17 : ( 18 )		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+18 : ( 19 )		mov	@1,	eax
+19 : ( 20 )		mov	@2,	7
+20 : ( 21 )		imul	@2,	@1
+21 : ( 22 )		mov	@3,	12
+22 : ( 23 )		sub	@3,	@2
+23 : ( 24 )		mov	@4,	@3
+24 : ( 25 )		add	@4,	5
+25 : ( 26 )		mov	eax,	@4	;Write 1
+26 : ( 27 )		call	iprintLF	;Write 2
+27 : ( 28 )		add	esp,	0	;désallocation des variables locales
+28 : ( 29 )		pop	edx	;restaure edx
+29 : ( 30 )		pop	ecx	;restaure ecx
+30 : ( 31 )		pop	ebx	;restaure ebx
+31 : ( 32 )		pop	eax	;restaure eax
+32 : ( 33 )		pop	ebp	;restaure la valeur de ebp
+33 : ( )		ret
diff --git a/test2024/fg-ref/modulo3.fg b/test2024/fg-ref/modulo3.fg
new file mode 100644
index 0000000000000000000000000000000000000000..a1042c3372555d639aa35a4a5c76546000a3aa3f
--- /dev/null
+++ b/test2024/fg-ref/modulo3.fg
@@ -0,0 +1,36 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	@1,	2
+14 : ( 15 )		imul	@1,	7
+15 : ( 16 )		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+16 : ( 17 )		mov	eax,	@1	;affectation des bits de poids faible du dividende
+17 : ( 18 )		mov	@14,	5
+18 : ( 19 )		idiv	@14
+19 : ( 20 )		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+20 : ( 21 )		mov	@2,	eax
+21 : ( 22 )		mov	@3,	5
+22 : ( 23 )		imul	@3,	@2
+23 : ( 24 )		mov	@4,	@1
+24 : ( 25 )		sub	@4,	@3
+25 : ( 26 )		mov	@5,	@4
+26 : ( 27 )		add	@5,	5
+27 : ( 28 )		mov	eax,	@5	;Write 1
+28 : ( 29 )		call	iprintLF	;Write 2
+29 : ( 30 )		add	esp,	0	;désallocation des variables locales
+30 : ( 31 )		pop	edx	;restaure edx
+31 : ( 32 )		pop	ecx	;restaure ecx
+32 : ( 33 )		pop	ebx	;restaure ebx
+33 : ( 34 )		pop	eax	;restaure eax
+34 : ( 35 )		pop	ebp	;restaure la valeur de ebp
+35 : ( )		ret
diff --git a/test2024/fg-ref/modulo4.fg b/test2024/fg-ref/modulo4.fg
new file mode 100644
index 0000000000000000000000000000000000000000..c7eb351e1a43a8b033ff2c84639891b288aba0ff
--- /dev/null
+++ b/test2024/fg-ref/modulo4.fg
@@ -0,0 +1,33 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	dword [a],	12	;Affect
+14 : ( 15 )		mov	dword [b],	5	;Affect
+15 : ( 16 )		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+16 : ( 17 )		mov	eax,	dword [a]	;affectation des bits de poids faible du dividende
+17 : ( 18 )		idiv	dword [b]
+18 : ( 19 )		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+19 : ( 20 )		mov	@1,	eax
+20 : ( 21 )		mov	@2,	dword [b]
+21 : ( 22 )		imul	@2,	@1
+22 : ( 23 )		mov	@3,	dword [a]
+23 : ( 24 )		sub	@3,	@2
+24 : ( 25 )		mov	eax,	@3	;Write 1
+25 : ( 26 )		call	iprintLF	;Write 2
+26 : ( 27 )		add	esp,	0	;désallocation des variables locales
+27 : ( 28 )		pop	edx	;restaure edx
+28 : ( 29 )		pop	ecx	;restaure ecx
+29 : ( 30 )		pop	ebx	;restaure ebx
+30 : ( 31 )		pop	eax	;restaure eax
+31 : ( 32 )		pop	ebp	;restaure la valeur de ebp
+32 : ( )		ret
diff --git a/test2024/fg-ref/modulo5.fg b/test2024/fg-ref/modulo5.fg
new file mode 100644
index 0000000000000000000000000000000000000000..753a42fba743243e4dc787f392b4ed02d18fe9c5
--- /dev/null
+++ b/test2024/fg-ref/modulo5.fg
@@ -0,0 +1,50 @@
+0 : ( 1 )		sub	esp,	4	;allocation mémoire pour la valeur de retour
+1 : ( 2 )		call	main
+2 : ( 3 )		pop	@0	;récupération de la valeur de retour
+3 : ( 4 )		mov	ebx,	0	; valeur de retour du programme
+4 : ( 5 )		mov	eax,	1	; code de sortie
+5 : ( 6 )		int 0x80
+6 : ( 7 )	main :	push	ebp	;sauvegarde la valeur de ebp
+7 : ( 8 )		mov	ebp,	esp	;nouvelle valeur de ebp
+8 : ( 9 )		push	eax	;sauvegarde de eax
+9 : ( 10 )		push	ebx	;sauvegarde de ebx
+10 : ( 11 )		push	ecx	;sauvegarde de ecx
+11 : ( 12 )		push	edx	;sauvegarde de edx
+12 : ( 13 )		sub	esp,	0	;allocation des variables locales
+13 : ( 14 )		mov	@10,	0
+14 : ( 15 )		imul	@10,	4
+15 : ( 16 )		mov	dword [t+@10],	3164	;Affect
+16 : ( 17 )		mov	@11,	1
+17 : ( 18 )		imul	@11,	4
+18 : ( 19 )		mov	dword [t+@11],	152	;Affect
+19 : ( 20 )		mov	@12,	1
+20 : ( 21 )		imul	@12,	4
+21 : ( 22 )		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+22 : ( 23 )		mov	@15,	0
+23 : ( 24 )		imul	@15,	4
+24 : ( 25 )		mov	eax,	dword [t+@15]	;affectation des bits de poids faible du dividende
+25 : ( 26 )		idiv	dword [t+@12]
+26 : ( 27 )		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+27 : ( 28 )		mov	@1,	eax
+28 : ( 29 )		mov	@17,	1
+29 : ( 30 )		imul	@17,	4
+30 : ( 31 )		mov	@2,	dword [t+@17]
+31 : ( 32 )		imul	@2,	@1
+32 : ( 33 )		mov	@18,	0
+33 : ( 34 )		imul	@18,	4
+34 : ( 35 )		mov	@3,	dword [t+@18]
+35 : ( 36 )		sub	@3,	@2
+36 : ( 37 )		mov	@19,	2
+37 : ( 38 )		imul	@19,	4
+38 : ( 39 )		mov	dword [t+@19],	@3	;Affect
+39 : ( 40 )		mov	@21,	2
+40 : ( 41 )		imul	@21,	4
+41 : ( 42 )		mov	eax,	dword [t+@21]	;Write 1
+42 : ( 43 )		call	iprintLF	;Write 2
+43 : ( 44 )		add	esp,	0	;désallocation des variables locales
+44 : ( 45 )		pop	edx	;restaure edx
+45 : ( 46 )		pop	ecx	;restaure ecx
+46 : ( 47 )		pop	ebx	;restaure ebx
+47 : ( 48 )		pop	eax	;restaure eax
+48 : ( 49 )		pop	ebp	;restaure la valeur de ebp
+49 : ( )		ret
diff --git a/test2024/fgs-ref/incr1.fgs b/test2024/fgs-ref/incr1.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..474be0b29aeb58fe5982a910e1de0ef2a681f4a7
--- /dev/null
+++ b/test2024/fgs-ref/incr1.fgs
@@ -0,0 +1,27 @@
+iter num = 3
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = ()	 	out = ()	 		call	main
+use = () def = (0 )	in = ()	 	out = ()	 		pop	@0	;récupération de la valeur de retour
+use = () def = (2 )	in = ()	 	out = ()	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (3 )	in = ()	 	out = ()	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = ()	 	out = ()	 		int 0x80
+use = () def = ()	in = ()	 	out = ()	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = ()	 	out = ()	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = ()	 	out = ()	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = ()	 	out = ()	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	0	;allocation des variables locales
+use = () def = ()	in = ()	 	out = ()	 		mov	dword [a],	4	;Affect
+use = () def = (1 )	in = ()	 	out = (1 )	 		mov	@1,	dword [a]
+use = (1 ) def = (1 )	in = (1 )	 	out = (1 )	 		add	@1,	1
+use = (1 ) def = ()	in = (1 )	 	out = ()	 		mov	dword [a],	@1	;Affect
+use = () def = (8 )	in = ()	 	out = ()	 		mov	eax,	dword [a]	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (9 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (10 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (11 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (12 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/incr2.fgs b/test2024/fgs-ref/incr2.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..90c7d4885461528553ebd23e35ed1236074951a8
--- /dev/null
+++ b/test2024/fgs-ref/incr2.fgs
@@ -0,0 +1,27 @@
+iter num = 3
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = ()	 	out = ()	 		call	main
+use = () def = (0 )	in = ()	 	out = ()	 		pop	@0	;récupération de la valeur de retour
+use = () def = (2 )	in = ()	 	out = ()	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (3 )	in = ()	 	out = ()	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = ()	 	out = ()	 		int 0x80
+use = () def = ()	in = ()	 	out = ()	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = ()	 	out = ()	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = ()	 	out = ()	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = ()	 	out = ()	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	4	;allocation des variables locales
+use = () def = ()	in = ()	 	out = ()	 		mov	dword [ebp-4],	4	;Affect
+use = () def = (1 )	in = ()	 	out = (1 )	 		mov	@1,	dword [ebp-4]
+use = (1 ) def = (1 )	in = (1 )	 	out = (1 )	 		add	@1,	1
+use = (1 ) def = ()	in = (1 )	 	out = ()	 		mov	dword [ebp-4],	@1	;Affect
+use = () def = (8 )	in = ()	 	out = ()	 		mov	eax,	dword [ebp-4]	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	4	;désallocation des variables locales
+use = () def = (9 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (10 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (11 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (12 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/incr3.fgs b/test2024/fgs-ref/incr3.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..f9e3e83e5c125106502e9f4f6ab08d8799a0f1ee
--- /dev/null
+++ b/test2024/fgs-ref/incr3.fgs
@@ -0,0 +1,35 @@
+iter num = 7
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = ()	 	out = ()	 		call	main
+use = () def = (0 )	in = ()	 	out = ()	 		pop	@0	;récupération de la valeur de retour
+use = () def = (2 )	in = ()	 	out = ()	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (3 )	in = ()	 	out = ()	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = ()	 	out = ()	 		int 0x80
+use = () def = ()	in = ()	 	out = ()	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = ()	 	out = ()	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = ()	 	out = ()	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = ()	 	out = ()	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	0	;allocation des variables locales
+use = () def = (8 )	in = ()	 	out = (8 )	 		mov	@8,	1
+use = (8 ) def = (8 )	in = (8 )	 	out = (8 )	 		imul	@8,	4
+use = (8 ) def = ()	in = (8 )	 	out = ()	 		mov	dword [t+@8],	100	;Affect
+use = () def = (9 )	in = ()	 	out = (9 )	 		mov	@9,	1
+use = (9 ) def = (9 )	in = (9 )	 	out = (9 )	 		imul	@9,	4
+use = (9 ) def = (1 )	in = (9 )	 	out = (1 )	 		mov	@1,	dword [t+@9]
+use = (1 ) def = (1 )	in = (1 )	 	out = (1 )	 		add	@1,	10
+use = () def = (10 )	in = (1 )	 	out = (1 10 )	 		mov	@10,	1
+use = (10 ) def = (10 )	in = (1 10 )	 	out = (1 10 )	 		imul	@10,	4
+use = (1 10 ) def = ()	in = (1 10 )	 	out = ()	 		mov	dword [t+@10],	@1	;Affect
+use = () def = (12 )	in = ()	 	out = (12 )	 		mov	@12,	1
+use = (12 ) def = (12 )	in = (12 )	 	out = (12 )	 		imul	@12,	4
+use = (12 ) def = (11 )	in = (12 )	 	out = ()	 		mov	eax,	dword [t+@12]	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (13 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (14 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (15 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (16 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/incr4.fgs b/test2024/fgs-ref/incr4.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..17606c132796060cd33dcbeaf24836a74e82d371
--- /dev/null
+++ b/test2024/fgs-ref/incr4.fgs
@@ -0,0 +1,31 @@
+iter num = 5
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = ()	 	out = ()	 		call	main
+use = () def = (0 )	in = ()	 	out = ()	 		pop	@0	;récupération de la valeur de retour
+use = () def = (4 )	in = ()	 	out = ()	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (5 )	in = ()	 	out = ()	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = ()	 	out = ()	 		int 0x80
+use = () def = ()	in = ()	 	out = ()	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = ()	 	out = ()	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = ()	 	out = ()	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = ()	 	out = ()	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	0	;allocation des variables locales
+use = () def = ()	in = ()	 	out = ()	 		mov	dword [a],	4	;Affect
+use = () def = (1 )	in = ()	 	out = (1 )	 		mov	@1,	12
+use = (1 ) def = (1 )	in = (1 )	 	out = (1 )	 		imul	@1,	2
+use = () def = (2 )	in = (1 )	 	out = (1 2 )	 		mov	@2,	dword [a]
+use = (1 2 ) def = (2 )	in = (1 2 )	 	out = (2 )	 		add	@2,	@1
+use = () def = (3 )	in = (2 )	 	out = (2 3 )	 		mov	@3,	dword [a]
+use = (2 3 ) def = (3 )	in = (2 3 )	 	out = (3 )	 		add	@3,	@2
+use = (3 ) def = ()	in = (3 )	 	out = ()	 		mov	dword [a],	@3	;Affect
+use = () def = (10 )	in = ()	 	out = ()	 		mov	eax,	dword [a]	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (11 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (12 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (13 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (14 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/incr5.fgs b/test2024/fgs-ref/incr5.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..fff9383232636b7026e2635849d7740c38f566a2
--- /dev/null
+++ b/test2024/fgs-ref/incr5.fgs
@@ -0,0 +1,47 @@
+iter num = 9
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = ()	 	out = ()	 		call	main
+use = () def = (0 )	in = ()	 	out = ()	 		pop	@0	;récupération de la valeur de retour
+use = () def = (3 )	in = ()	 	out = ()	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (4 )	in = ()	 	out = ()	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = ()	 	out = ()	 		int 0x80
+use = () def = ()	in = ()	 	out = ()	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = ()	 	out = ()	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = ()	 	out = ()	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = ()	 	out = ()	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = ()	 	out = ()	 		sub	esp,	0	;allocation des variables locales
+use = () def = (9 )	in = ()	 	out = (9 )	 		mov	@9,	1
+use = (9 ) def = (9 )	in = (9 )	 	out = (9 )	 		imul	@9,	4
+use = (9 ) def = ()	in = (9 )	 	out = ()	 		mov	dword [t+@9],	2	;Affect
+use = () def = (10 )	in = ()	 	out = (10 )	 		mov	@10,	2
+use = (10 ) def = (10 )	in = (10 )	 	out = (10 )	 		imul	@10,	4
+use = (10 ) def = ()	in = (10 )	 	out = ()	 		mov	dword [t+@10],	3	;Affect
+use = () def = (11 )	in = ()	 	out = (11 )	 		mov	@11,	3
+use = (11 ) def = (11 )	in = (11 )	 	out = (11 )	 		imul	@11,	4
+use = (11 ) def = ()	in = (11 )	 	out = ()	 		mov	dword [t+@11],	1	;Affect
+use = () def = (12 )	in = ()	 	out = (12 )	 		mov	@12,	1
+use = (12 ) def = (12 )	in = (12 )	 	out = (12 )	 		imul	@12,	4
+use = (12 ) def = (1 )	in = (12 )	 	out = (1 )	 		mov	@1,	dword [t+@12]
+use = () def = (13 )	in = (1 )	 	out = (1 13 )	 		mov	@13,	2
+use = (13 ) def = (13 )	in = (1 13 )	 	out = (1 13 )	 		imul	@13,	4
+use = (1 13 ) def = (1 )	in = (1 13 )	 	out = (1 )	 		imul	@1,	dword [t+@13]
+use = () def = (14 )	in = (1 )	 	out = (1 14 )	 		mov	@14,	3
+use = (14 ) def = (14 )	in = (1 14 )	 	out = (1 14 )	 		imul	@14,	4
+use = (14 ) def = (2 )	in = (1 14 )	 	out = (1 2 )	 		mov	@2,	dword [t+@14]
+use = (1 2 ) def = (2 )	in = (1 2 )	 	out = (2 )	 		add	@2,	@1
+use = () def = (15 )	in = (2 )	 	out = (2 15 )	 		mov	@15,	3
+use = (15 ) def = (15 )	in = (2 15 )	 	out = (2 15 )	 		imul	@15,	4
+use = (2 15 ) def = ()	in = (2 15 )	 	out = ()	 		mov	dword [t+@15],	@2	;Affect
+use = () def = (17 )	in = ()	 	out = (17 )	 		mov	@17,	3
+use = (17 ) def = (17 )	in = (17 )	 	out = (17 )	 		imul	@17,	4
+use = (17 ) def = (16 )	in = (17 )	 	out = ()	 		mov	eax,	dword [t+@17]	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (18 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (19 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (20 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (21 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/modulo1.fgs b/test2024/fgs-ref/modulo1.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..9a9c6053eb301a52fe806d2abb87a32892396fa4
--- /dev/null
+++ b/test2024/fgs-ref/modulo1.fgs
@@ -0,0 +1,33 @@
+iter num = 38
+use = () def = ()	in = (13 )	 	out = (13 )	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = (13 )	 	out = (13 )	 		call	main
+use = () def = (0 )	in = (13 )	 	out = (13 )	 		pop	@0	;récupération de la valeur de retour
+use = () def = (4 )	in = (13 )	 	out = (13 )	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (5 )	in = (13 )	 	out = (13 )	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = (13 )	 	out = (13 )	 		int 0x80
+use = () def = ()	in = (13 )	 	out = (13 )	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = (13 )	 	out = (13 )	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = (13 )	 	out = (13 )	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = (13 )	 	out = (13 )	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = (13 )	 	out = (13 )	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = (13 )	 	out = (13 )	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = (13 )	 	out = (13 )	 		sub	esp,	0	;allocation des variables locales
+use = () def = (10 )	in = (13 )	 	out = (10 13 )	 		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+use = () def = (11 )	in = (10 13 )	 	out = (10 13 )	 		mov	eax,	5	;affectation des bits de poids faible du dividende
+use = () def = (12 )	in = (10 13 )	 	out = (10 12 13 )	 		mov	@12,	3
+use = (12 ) def = ()	in = (10 12 13 )	 	out = (10 13 )	 		idiv	@12
+use = (10 ) def = (10 )	in = (10 13 )	 	out = (13 )	 		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+use = (13 ) def = (1 )	in = (13 )	 	out = (1 )	 		mov	@1,	eax
+use = () def = (2 )	in = (1 )	 	out = (1 2 )	 		mov	@2,	3
+use = (1 2 ) def = (2 )	in = (1 2 )	 	out = (2 )	 		imul	@2,	@1
+use = () def = (3 )	in = (2 )	 	out = (2 3 )	 		mov	@3,	5
+use = (2 3 ) def = (3 )	in = (2 3 )	 	out = (3 )	 		sub	@3,	@2
+use = (3 ) def = (14 )	in = (3 )	 	out = ()	 		mov	eax,	@3	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (15 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (16 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (17 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (18 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/modulo2.fgs b/test2024/fgs-ref/modulo2.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..67e16c37290e73699cc51b28b09ab575a55cbb35
--- /dev/null
+++ b/test2024/fgs-ref/modulo2.fgs
@@ -0,0 +1,35 @@
+iter num = 38
+use = () def = ()	in = (14 )	 	out = (14 )	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = (14 )	 	out = (14 )	 		call	main
+use = () def = (0 )	in = (14 )	 	out = (14 )	 		pop	@0	;récupération de la valeur de retour
+use = () def = (5 )	in = (14 )	 	out = (14 )	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (6 )	in = (14 )	 	out = (14 )	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = (14 )	 	out = (14 )	 		int 0x80
+use = () def = ()	in = (14 )	 	out = (14 )	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = (14 )	 	out = (14 )	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = (14 )	 	out = (14 )	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = (14 )	 	out = (14 )	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = (14 )	 	out = (14 )	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = (14 )	 	out = (14 )	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = (14 )	 	out = (14 )	 		sub	esp,	0	;allocation des variables locales
+use = () def = (11 )	in = (14 )	 	out = (11 14 )	 		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+use = () def = (12 )	in = (11 14 )	 	out = (11 14 )	 		mov	eax,	12	;affectation des bits de poids faible du dividende
+use = () def = (13 )	in = (11 14 )	 	out = (11 13 14 )	 		mov	@13,	7
+use = (13 ) def = ()	in = (11 13 14 )	 	out = (11 14 )	 		idiv	@13
+use = (11 ) def = (11 )	in = (11 14 )	 	out = (14 )	 		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+use = (14 ) def = (1 )	in = (14 )	 	out = (1 )	 		mov	@1,	eax
+use = () def = (2 )	in = (1 )	 	out = (1 2 )	 		mov	@2,	7
+use = (1 2 ) def = (2 )	in = (1 2 )	 	out = (2 )	 		imul	@2,	@1
+use = () def = (3 )	in = (2 )	 	out = (2 3 )	 		mov	@3,	12
+use = (2 3 ) def = (3 )	in = (2 3 )	 	out = (3 )	 		sub	@3,	@2
+use = (3 ) def = (4 )	in = (3 )	 	out = (4 )	 		mov	@4,	@3
+use = (4 ) def = (4 )	in = (4 )	 	out = (4 )	 		add	@4,	5
+use = (4 ) def = (15 )	in = (4 )	 	out = ()	 		mov	eax,	@4	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (16 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (17 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (18 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (19 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/modulo3.fgs b/test2024/fgs-ref/modulo3.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..cb9534a2227352cd6c4640a3314a16e18a8007ec
--- /dev/null
+++ b/test2024/fgs-ref/modulo3.fgs
@@ -0,0 +1,37 @@
+iter num = 42
+use = () def = ()	in = (15 )	 	out = (15 )	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = (15 )	 	out = (15 )	 		call	main
+use = () def = (0 )	in = (15 )	 	out = (15 )	 		pop	@0	;récupération de la valeur de retour
+use = () def = (6 )	in = (15 )	 	out = (15 )	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (7 )	in = (15 )	 	out = (15 )	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = (15 )	 	out = (15 )	 		int 0x80
+use = () def = ()	in = (15 )	 	out = (15 )	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = (15 )	 	out = (15 )	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = (15 )	 	out = (15 )	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = (15 )	 	out = (15 )	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = (15 )	 	out = (15 )	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = (15 )	 	out = (15 )	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = (15 )	 	out = (15 )	 		sub	esp,	0	;allocation des variables locales
+use = () def = (1 )	in = (15 )	 	out = (1 15 )	 		mov	@1,	2
+use = (1 ) def = (1 )	in = (1 15 )	 	out = (1 15 )	 		imul	@1,	7
+use = () def = (12 )	in = (1 15 )	 	out = (1 12 15 )	 		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+use = (1 ) def = (13 )	in = (1 12 15 )	 	out = (1 12 15 )	 		mov	eax,	@1	;affectation des bits de poids faible du dividende
+use = () def = (14 )	in = (1 12 15 )	 	out = (1 12 14 15 )	 		mov	@14,	5
+use = (14 ) def = ()	in = (1 12 14 15 )	 	out = (1 12 15 )	 		idiv	@14
+use = (12 ) def = (12 )	in = (1 12 15 )	 	out = (1 15 )	 		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+use = (15 ) def = (2 )	in = (1 15 )	 	out = (1 2 )	 		mov	@2,	eax
+use = () def = (3 )	in = (1 2 )	 	out = (1 2 3 )	 		mov	@3,	5
+use = (2 3 ) def = (3 )	in = (1 2 3 )	 	out = (1 3 )	 		imul	@3,	@2
+use = (1 ) def = (4 )	in = (1 3 )	 	out = (3 4 )	 		mov	@4,	@1
+use = (3 4 ) def = (4 )	in = (3 4 )	 	out = (4 )	 		sub	@4,	@3
+use = (4 ) def = (5 )	in = (4 )	 	out = (5 )	 		mov	@5,	@4
+use = (5 ) def = (5 )	in = (5 )	 	out = (5 )	 		add	@5,	5
+use = (5 ) def = (16 )	in = (5 )	 	out = ()	 		mov	eax,	@5	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (17 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (18 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (19 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (20 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/modulo4.fgs b/test2024/fgs-ref/modulo4.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..f26ae7a3f66b864c08df2e990cded1bc3e7aaa42
--- /dev/null
+++ b/test2024/fgs-ref/modulo4.fgs
@@ -0,0 +1,34 @@
+iter num = 40
+use = () def = ()	in = (12 )	 	out = (12 )	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = (12 )	 	out = (12 )	 		call	main
+use = () def = (0 )	in = (12 )	 	out = (12 )	 		pop	@0	;récupération de la valeur de retour
+use = () def = (4 )	in = (12 )	 	out = (12 )	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (5 )	in = (12 )	 	out = (12 )	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = (12 )	 	out = (12 )	 		int 0x80
+use = () def = ()	in = (12 )	 	out = (12 )	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = (12 )	 	out = (12 )	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = (12 )	 	out = (12 )	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = (12 )	 	out = (12 )	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = (12 )	 	out = (12 )	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = (12 )	 	out = (12 )	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = (12 )	 	out = (12 )	 		sub	esp,	0	;allocation des variables locales
+use = () def = ()	in = (12 )	 	out = (12 )	 		mov	dword [a],	12	;Affect
+use = () def = ()	in = (12 )	 	out = (12 )	 		mov	dword [b],	5	;Affect
+use = () def = (10 )	in = (12 )	 	out = (10 12 )	 		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+use = () def = (11 )	in = (10 12 )	 	out = (10 12 )	 		mov	eax,	dword [a]	;affectation des bits de poids faible du dividende
+use = () def = ()	in = (10 12 )	 	out = (10 12 )	 		idiv	dword [b]
+use = (10 ) def = (10 )	in = (10 12 )	 	out = (12 )	 		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+use = (12 ) def = (1 )	in = (12 )	 	out = (1 )	 		mov	@1,	eax
+use = () def = (2 )	in = (1 )	 	out = (1 2 )	 		mov	@2,	dword [b]
+use = (1 2 ) def = (2 )	in = (1 2 )	 	out = (2 )	 		imul	@2,	@1
+use = () def = (3 )	in = (2 )	 	out = (2 3 )	 		mov	@3,	dword [a]
+use = (2 3 ) def = (3 )	in = (2 3 )	 	out = (3 )	 		sub	@3,	@2
+use = (3 ) def = (13 )	in = (3 )	 	out = ()	 		mov	eax,	@3	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (14 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (15 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (16 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (17 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/fgs-ref/modulo5.fgs b/test2024/fgs-ref/modulo5.fgs
new file mode 100644
index 0000000000000000000000000000000000000000..e3a293e5f136af18c89f60b5abe156de3faa001d
--- /dev/null
+++ b/test2024/fgs-ref/modulo5.fgs
@@ -0,0 +1,51 @@
+iter num = 56
+use = () def = ()	in = (16 )	 	out = (16 )	 		sub	esp,	4	;allocation mémoire pour la valeur de retour
+use = () def = ()	in = (16 )	 	out = (16 )	 		call	main
+use = () def = (0 )	in = (16 )	 	out = (16 )	 		pop	@0	;récupération de la valeur de retour
+use = () def = (4 )	in = (16 )	 	out = (16 )	 		mov	ebx,	0	; valeur de retour du programme
+use = () def = (5 )	in = (16 )	 	out = (16 )	 		mov	eax,	1	; code de sortie
+use = () def = ()	in = (16 )	 	out = (16 )	 		int 0x80
+use = () def = ()	in = (16 )	 	out = (16 )	 	main :	push	ebp	;sauvegarde la valeur de ebp
+use = () def = ()	in = (16 )	 	out = (16 )	 		mov	ebp,	esp	;nouvelle valeur de ebp
+use = () def = ()	in = (16 )	 	out = (16 )	 		push	eax	;sauvegarde de eax
+use = () def = ()	in = (16 )	 	out = (16 )	 		push	ebx	;sauvegarde de ebx
+use = () def = ()	in = (16 )	 	out = (16 )	 		push	ecx	;sauvegarde de ecx
+use = () def = ()	in = (16 )	 	out = (16 )	 		push	edx	;sauvegarde de edx
+use = () def = ()	in = (16 )	 	out = (16 )	 		sub	esp,	0	;allocation des variables locales
+use = () def = (10 )	in = (16 )	 	out = (10 16 )	 		mov	@10,	0
+use = (10 ) def = (10 )	in = (10 16 )	 	out = (10 16 )	 		imul	@10,	4
+use = (10 ) def = ()	in = (10 16 )	 	out = (16 )	 		mov	dword [t+@10],	3164	;Affect
+use = () def = (11 )	in = (16 )	 	out = (11 16 )	 		mov	@11,	1
+use = (11 ) def = (11 )	in = (11 16 )	 	out = (11 16 )	 		imul	@11,	4
+use = (11 ) def = ()	in = (11 16 )	 	out = (16 )	 		mov	dword [t+@11],	152	;Affect
+use = () def = (12 )	in = (16 )	 	out = (12 16 )	 		mov	@12,	1
+use = (12 ) def = (12 )	in = (12 16 )	 	out = (12 16 )	 		imul	@12,	4
+use = () def = (13 )	in = (12 16 )	 	out = (12 13 16 )	 		mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+use = () def = (15 )	in = (12 13 16 )	 	out = (12 13 15 16 )	 		mov	@15,	0
+use = (15 ) def = (15 )	in = (12 13 15 16 )	 	out = (12 13 15 16 )	 		imul	@15,	4
+use = (15 ) def = (14 )	in = (12 13 15 16 )	 	out = (12 13 16 )	 		mov	eax,	dword [t+@15]	;affectation des bits de poids faible du dividende
+use = (12 ) def = ()	in = (12 13 16 )	 	out = (13 16 )	 		idiv	dword [t+@12]
+use = (13 ) def = (13 )	in = (13 16 )	 	out = (16 )	 		mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+use = (16 ) def = (1 )	in = (16 )	 	out = (1 )	 		mov	@1,	eax
+use = () def = (17 )	in = (1 )	 	out = (1 17 )	 		mov	@17,	1
+use = (17 ) def = (17 )	in = (1 17 )	 	out = (1 17 )	 		imul	@17,	4
+use = (17 ) def = (2 )	in = (1 17 )	 	out = (1 2 )	 		mov	@2,	dword [t+@17]
+use = (1 2 ) def = (2 )	in = (1 2 )	 	out = (2 )	 		imul	@2,	@1
+use = () def = (18 )	in = (2 )	 	out = (2 18 )	 		mov	@18,	0
+use = (18 ) def = (18 )	in = (2 18 )	 	out = (2 18 )	 		imul	@18,	4
+use = (18 ) def = (3 )	in = (2 18 )	 	out = (2 3 )	 		mov	@3,	dword [t+@18]
+use = (2 3 ) def = (3 )	in = (2 3 )	 	out = (3 )	 		sub	@3,	@2
+use = () def = (19 )	in = (3 )	 	out = (3 19 )	 		mov	@19,	2
+use = (19 ) def = (19 )	in = (3 19 )	 	out = (3 19 )	 		imul	@19,	4
+use = (3 19 ) def = ()	in = (3 19 )	 	out = ()	 		mov	dword [t+@19],	@3	;Affect
+use = () def = (21 )	in = ()	 	out = (21 )	 		mov	@21,	2
+use = (21 ) def = (21 )	in = (21 )	 	out = (21 )	 		imul	@21,	4
+use = (21 ) def = (20 )	in = (21 )	 	out = ()	 		mov	eax,	dword [t+@21]	;Write 1
+use = () def = ()	in = ()	 	out = ()	 		call	iprintLF	;Write 2
+use = () def = ()	in = ()	 	out = ()	 		add	esp,	0	;désallocation des variables locales
+use = () def = (22 )	in = ()	 	out = ()	 		pop	edx	;restaure edx
+use = () def = (23 )	in = ()	 	out = ()	 		pop	ecx	;restaure ecx
+use = () def = (24 )	in = ()	 	out = ()	 		pop	ebx	;restaure ebx
+use = () def = (25 )	in = ()	 	out = ()	 		pop	eax	;restaure eax
+use = () def = ()	in = ()	 	out = ()	 		pop	ebp	;restaure la valeur de ebp
+use = () def = ()	in = ()	 	out = ()	 		ret
diff --git a/test2024/ig-ref/incr1.ig b/test2024/ig-ref/incr1.ig
new file mode 100644
index 0000000000000000000000000000000000000000..e40116d49a224eca62b01a95f95cfc4579d3cf0e
--- /dev/null
+++ b/test2024/ig-ref/incr1.ig
@@ -0,0 +1,13 @@
+0 : ( )
+1 : ( )
+2 : ( )
+3 : ( )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( )
+11 : ( )
+12 : ( )
diff --git a/test2024/ig-ref/incr2.ig b/test2024/ig-ref/incr2.ig
new file mode 100644
index 0000000000000000000000000000000000000000..e40116d49a224eca62b01a95f95cfc4579d3cf0e
--- /dev/null
+++ b/test2024/ig-ref/incr2.ig
@@ -0,0 +1,13 @@
+0 : ( )
+1 : ( )
+2 : ( )
+3 : ( )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( )
+11 : ( )
+12 : ( )
diff --git a/test2024/ig-ref/incr3.ig b/test2024/ig-ref/incr3.ig
new file mode 100644
index 0000000000000000000000000000000000000000..8ce7325acad647271b3e8cc72f72b7ad14dbcb9d
--- /dev/null
+++ b/test2024/ig-ref/incr3.ig
@@ -0,0 +1,17 @@
+0 : ( )
+1 : ( 10 )
+2 : ( )
+3 : ( )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( 1 )
+11 : ( )
+12 : ( )
+13 : ( )
+14 : ( )
+15 : ( )
+16 : ( )
diff --git a/test2024/ig-ref/incr4.ig b/test2024/ig-ref/incr4.ig
new file mode 100644
index 0000000000000000000000000000000000000000..a637b5c215c99643d2fd5782881365f0526b9be3
--- /dev/null
+++ b/test2024/ig-ref/incr4.ig
@@ -0,0 +1,15 @@
+0 : ( )
+1 : ( 2 )
+2 : ( 3 1 )
+3 : ( 2 )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( )
+11 : ( )
+12 : ( )
+13 : ( )
+14 : ( )
diff --git a/test2024/ig-ref/incr5.ig b/test2024/ig-ref/incr5.ig
new file mode 100644
index 0000000000000000000000000000000000000000..572f7a69ec3ec8f01aacc2e4c202812603dd332d
--- /dev/null
+++ b/test2024/ig-ref/incr5.ig
@@ -0,0 +1,22 @@
+0 : ( )
+1 : ( 2 14 13 )
+2 : ( 15 1 )
+3 : ( )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( )
+11 : ( )
+12 : ( )
+13 : ( 1 )
+14 : ( 1 )
+15 : ( 2 )
+16 : ( )
+17 : ( )
+18 : ( )
+19 : ( )
+20 : ( )
+21 : ( )
diff --git a/test2024/ig-ref/modulo1.ig b/test2024/ig-ref/modulo1.ig
new file mode 100644
index 0000000000000000000000000000000000000000..3b3ca61cf763e3c7dc7967127c6676dce1348299
--- /dev/null
+++ b/test2024/ig-ref/modulo1.ig
@@ -0,0 +1,19 @@
+0 : ( )
+1 : ( 2 )
+2 : ( 3 1 )
+3 : ( 2 )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( 12 13 )
+11 : ( )
+12 : ( 13 10 )
+13 : ( 12 10 )
+14 : ( )
+15 : ( )
+16 : ( )
+17 : ( )
+18 : ( )
diff --git a/test2024/ig-ref/modulo2.ig b/test2024/ig-ref/modulo2.ig
new file mode 100644
index 0000000000000000000000000000000000000000..8e846f4bdba57a00b65217097055c980b2652982
--- /dev/null
+++ b/test2024/ig-ref/modulo2.ig
@@ -0,0 +1,20 @@
+0 : ( )
+1 : ( 2 )
+2 : ( 3 1 )
+3 : ( 2 )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( )
+11 : ( 13 14 )
+12 : ( )
+13 : ( 14 11 )
+14 : ( 13 11 )
+15 : ( )
+16 : ( )
+17 : ( )
+18 : ( )
+19 : ( )
diff --git a/test2024/ig-ref/modulo3.ig b/test2024/ig-ref/modulo3.ig
new file mode 100644
index 0000000000000000000000000000000000000000..e892563a1b97e9168a45adb032d06ce824cd5516
--- /dev/null
+++ b/test2024/ig-ref/modulo3.ig
@@ -0,0 +1,21 @@
+0 : ( )
+1 : ( 3 2 14 12 15 )
+2 : ( 3 1 )
+3 : ( 4 2 1 )
+4 : ( 3 )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( )
+11 : ( )
+12 : ( 14 15 1 )
+13 : ( )
+14 : ( 15 12 1 )
+15 : ( 14 12 1 )
+16 : ( )
+17 : ( )
+18 : ( )
+19 : ( )
+20 : ( )
diff --git a/test2024/ig-ref/modulo4.ig b/test2024/ig-ref/modulo4.ig
new file mode 100644
index 0000000000000000000000000000000000000000..1651db72e36ec48a8a2faac0461618a97a0c80c7
--- /dev/null
+++ b/test2024/ig-ref/modulo4.ig
@@ -0,0 +1,18 @@
+0 : ( )
+1 : ( 2 )
+2 : ( 3 1 )
+3 : ( 2 )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( 12 )
+11 : ( )
+12 : ( 10 )
+13 : ( )
+14 : ( )
+15 : ( )
+16 : ( )
+17 : ( )
diff --git a/test2024/ig-ref/modulo5.ig b/test2024/ig-ref/modulo5.ig
new file mode 100644
index 0000000000000000000000000000000000000000..6c9f37052c4a480b78527cd1c204eb6ff09bdb62
--- /dev/null
+++ b/test2024/ig-ref/modulo5.ig
@@ -0,0 +1,26 @@
+0 : ( )
+1 : ( 2 17 )
+2 : ( 3 18 1 )
+3 : ( 19 2 )
+4 : ( )
+5 : ( )
+6 : ( )
+7 : ( )
+8 : ( )
+9 : ( )
+10 : ( 16 )
+11 : ( 16 )
+12 : ( 15 13 16 )
+13 : ( 15 16 12 )
+14 : ( )
+15 : ( 16 13 12 )
+16 : ( 15 13 12 11 10 )
+17 : ( 1 )
+18 : ( 2 )
+19 : ( 3 )
+20 : ( )
+21 : ( )
+22 : ( )
+23 : ( )
+24 : ( )
+25 : ( )
diff --git a/test2024/input/incr1.l b/test2024/input/incr1.l
new file mode 100644
index 0000000000000000000000000000000000000000..5bad6b3348d44755094c568fdd38b0f1c390126d
--- /dev/null
+++ b/test2024/input/incr1.l
@@ -0,0 +1,7 @@
+entier a
+main()
+{
+a = 4;
+a += 1;
+ecrire(a);
+}
diff --git a/test2024/input/incr2.l b/test2024/input/incr2.l
new file mode 100644
index 0000000000000000000000000000000000000000..03c4d5c0ee8769f01e622d20854f8a26dc589485
--- /dev/null
+++ b/test2024/input/incr2.l
@@ -0,0 +1,7 @@
+main()
+entier a
+{
+a = 4;
+a += 1;
+ecrire(a);
+}
diff --git a/test2024/input/incr3.l b/test2024/input/incr3.l
new file mode 100644
index 0000000000000000000000000000000000000000..0aa7a31cdfdf910d04194e4a460e180c022f8fd8
--- /dev/null
+++ b/test2024/input/incr3.l
@@ -0,0 +1,7 @@
+entier t[10]
+main()
+{
+t[1] = 100;
+t[1] += 10;
+ecrire(t[1]);
+}
diff --git a/test2024/input/incr4.l b/test2024/input/incr4.l
new file mode 100644
index 0000000000000000000000000000000000000000..bf9a5625a54efcce06e18f51bb6728c368a8e461
--- /dev/null
+++ b/test2024/input/incr4.l
@@ -0,0 +1,7 @@
+entier a
+main()
+{
+a = 4;
+a += a + 12 * 2;
+ecrire(a);
+}
diff --git a/test2024/input/incr5.l b/test2024/input/incr5.l
new file mode 100644
index 0000000000000000000000000000000000000000..e1f02d57de928c55b78f848ce2a2b8be0f7e2d7b
--- /dev/null
+++ b/test2024/input/incr5.l
@@ -0,0 +1,9 @@
+entier t[10]
+main()
+{
+t[1] = 2;
+t[2] = 3;
+t[3] = 1;
+t[3] += t[1] * t[2];
+ecrire(t[3]);
+}
diff --git a/test2024/input/modulo1.l b/test2024/input/modulo1.l
new file mode 100644
index 0000000000000000000000000000000000000000..8196575a87015e81648b21103d05bb6a371f5c13
--- /dev/null
+++ b/test2024/input/modulo1.l
@@ -0,0 +1,4 @@
+main()
+{
+ecrire(5 % 3);
+}
diff --git a/test2024/input/modulo2.l b/test2024/input/modulo2.l
new file mode 100644
index 0000000000000000000000000000000000000000..908558aa164ea5da9555ffb65c372b639e10af62
--- /dev/null
+++ b/test2024/input/modulo2.l
@@ -0,0 +1,5 @@
+
+main()
+{
+ecrire(12 % 7 + 5);
+}
diff --git a/test2024/input/modulo3.l b/test2024/input/modulo3.l
new file mode 100644
index 0000000000000000000000000000000000000000..5232774a349331039e870821a9f3d99cf0b4dad1
--- /dev/null
+++ b/test2024/input/modulo3.l
@@ -0,0 +1,5 @@
+
+main()
+{
+ecrire(2 * 7 % 5 + 5);
+}
diff --git a/test2024/input/modulo4.l b/test2024/input/modulo4.l
new file mode 100644
index 0000000000000000000000000000000000000000..a1d159f2d2511fa2918770a914105d62951e0074
--- /dev/null
+++ b/test2024/input/modulo4.l
@@ -0,0 +1,7 @@
+entier a, entier b
+main()
+{
+a = 12;
+b = 5;
+ecrire(a % b);
+}
diff --git a/test2024/input/modulo5.l b/test2024/input/modulo5.l
new file mode 100644
index 0000000000000000000000000000000000000000..0232a3a714e795362bdc5ad7e85bd6713cf7f76d
--- /dev/null
+++ b/test2024/input/modulo5.l
@@ -0,0 +1,9 @@
+entier t[10]
+main()
+{
+t[0] = 3164;
+t[1] = 152;
+t[2]  = t[0] % t[1];
+
+ecrire(t[2]);
+}
diff --git a/test2024/io.asm b/test2024/io.asm
new file mode 100644
index 0000000000000000000000000000000000000000..cee4da2ae3a4746873a75a15688938b608c91b87
--- /dev/null
+++ b/test2024/io.asm
@@ -0,0 +1,205 @@
+	global iprintLF
+;------------------------------------------
+; void readline
+; Read a line from stdin, store string after [$eax]
+; WARNING: does not check for buffer overflow - insecure!
+readline:    
+    push    edx        ; preserve edx on stack to be restored after function
+    push    ecx        ; preserve ecx on stack to be restored after function
+    push    ebx        ; preserve ebx on stack to be restored after function
+    push    eax        ; preserve eax on stack to be restored after function
+    mov ecx, eax       ; address where store result
+continue_reading:
+    mov	eax, 3         ; syscall is read = 3
+    mov	ebx, 0         ; fd is stdin = 0    
+    mov	edx, 1         ; nb. of bytes to read
+    int 80h            ; call interruption
+    cmp eax, 0         ; if no byte read, then we reached EOF, stop
+    je end_reading    
+    cmp BYTE [ecx], 10 ; Found '\n', stop reading string
+    je end_reading
+    cmp BYTE [ecx], 13 ; Found '\r', stop reading string
+    je end_reading
+    inc ecx            ; None of above, increment pointer and read next byte
+    jmp continue_reading
+end_reading:
+    mov BYTE [ecx], 0  ; Add zero to yield null-terminated string
+    pop     eax        ; restore eax from value pushed onto stack at start
+    pop     ebx        ; restore eax from value pushed onto stack at start
+    pop     ecx        ; restore eax from value pushed onto stack at start
+    pop     edx        ; restore eax from value pushed onto stack at start
+    ret
+
+;------------------------------------------
+; void iprint(Integer number)
+; Integer printing function (itoa)
+iprint:
+    push    eax             ; preserve eax on the stack to be restored after function runs
+    push    ecx             ; preserve ecx on the stack to be restored after function runs
+    push    edx             ; preserve edx on the stack to be restored after function runs
+    push    esi             ; preserve esi on the stack to be restored after function runs
+    
+    cmp	    eax, 0
+    jge      positive
+    push    eax             ; preserve eax value
+    mov     ebx, '-'
+    push    ebx
+    mov     eax, esp    
+    call sprint
+    pop     eax             ; remove '-' sign
+    pop     eax             ; retrieve eax value
+    neg     eax
+positive:
+    mov     ecx, 0          ; counter of how many bytes we need to print in the end 
+divideLoop:
+    inc     ecx             ; count each byte to print - number of characters
+    mov     edx, 0          ; empty edx
+    mov     esi, 10         ; mov 10 into esi
+    idiv    esi             ; divide eax by esi
+    add     edx, 48         ; convert edx to it's ascii representation - edx holds the remainder after a divide instruction
+    push    edx             ; push edx (string representation of an intger) onto the stack
+    cmp     eax, 0          ; can the integer be divided anymore?
+    jnz     divideLoop      ; jump if not zero to the label divideLoop
+ 
+printLoop:
+    dec     ecx             ; count down each byte that we put on the stack
+    mov     eax, esp        ; mov the stack pointer into eax for printing
+    call    sprint          ; call our string print function
+    pop     eax             ; remove last character from the stack to move esp forward
+    cmp     ecx, 0          ; have we printed all bytes we pushed onto the stack?
+    jnz     printLoop       ; jump is not zero to the label printLoop
+ 
+    pop     esi             ; restore esi from the value we pushed onto the stack at the start
+    pop     edx             ; restore edx from the value we pushed onto the stack at the start
+    pop     ecx             ; restore ecx from the value we pushed onto the stack at the start
+    pop     eax             ; restore eax from the value we pushed onto the stack at the start
+    ret
+ 
+ 
+;------------------------------------------
+; void iprintLF(Integer number)
+; Integer printing function with linefeed (itoa)
+iprintLF:
+    call    iprint          ; call our integer printing function
+ 
+    push    eax             ; push eax onto the stack to preserve it while we use the eax register in this function
+    mov     eax, 0Ah        ; move 0Ah into eax - 0Ah is the ascii character for a linefeed
+    push    eax             ; push the linefeed onto the stack so we can get the address
+    mov     eax, esp        ; move the address of the current stack pointer into eax for sprint
+    call    sprint          ; call our sprint function
+    pop     eax             ; remove our linefeed character from the stack
+    pop     eax             ; restore the original value of eax before our function was called
+    ret
+ 
+ 
+;------------------------------------------
+; int slen(String message)
+; String length calculation function
+slen:
+    push    ebx
+    mov     ebx, eax
+ 
+nextchar:
+    cmp     byte [eax], 0
+    jz      finished
+    inc     eax
+    jmp     nextchar
+ 
+finished:
+    sub     eax, ebx
+    pop     ebx
+    ret
+ 
+ 
+;------------------------------------------
+; void sprint(String message)
+; String printing function
+sprint:
+    push    edx
+    push    ecx
+    push    ebx
+    push    eax
+    call    slen
+ 
+    mov     edx, eax
+    pop     eax
+ 
+    mov     ecx, eax
+    mov     ebx, 1
+    mov     eax, 4
+    int     80h
+ 
+    pop     ebx
+    pop     ecx
+    pop     edx
+    ret
+ 
+ 
+;------------------------------------------
+; void sprintLF(String message)
+; String printing with line feed function
+sprintLF:
+    call    sprint
+ 
+    push    eax
+    mov     eax, 0AH
+    push    eax
+    mov     eax, esp
+    call    sprint
+    pop     eax
+    pop     eax
+    ret
+ 
+ 
+;------------------------------------------
+; void exit()
+; Exit program and restore resources
+quit:
+    mov     ebx, 0
+    mov     eax, 1
+    int     80h
+    ret
+
+;------------------------------------------
+; int atoi(Integer number)
+; Ascii to integer function (atoi)
+atoi:
+    push    ebx             ; preserve ebx on the stack to be restored after function runs
+    push    ecx             ; preserve ecx on the stack to be restored after function runs
+    push    edx             ; preserve edx on the stack to be restored after function runs
+    push    esi             ; preserve esi on the stack to be restored after function runs
+    xor     ebx, ebx        ; initialize forming answer
+    xor     ecx, ecx        ; initialize sign flag
+    mov     esi, eax
+atoi1: 
+    lodsb                   ; scan off whitespace
+    cmp     al, ' '         ; ignore leading blanks
+    je atoi1
+    cmp al, '+'             ; if + sign proceed
+    je atoi2
+    cmp al, '-'             ; is it - sign?
+    jne atoi3               ; no, test if numeric
+    dec ecx                 ; was - sign, set flag for negative result
+atoi2: 
+    lodsb                   ; get next character
+atoi3: 
+    cmp al,'0'        ; is character valid?
+    jb atoi4          ; jump if not '0' to '9'
+    cmp al,'9'
+    ja atoi4          ; jump if not '0' to '9'
+    and eax, 000fh     ; isolate lower four bits
+    xchg ebx, eax      ; multiply answer x 10
+    mov edx, 10
+    mul edx
+    add ebx, eax      ; add this digit
+    jmp atoi2         ; convert next digit
+atoi4: 
+    mov eax,ebx ; result into AX
+    jcxz atoi5 ; jump if sign flag clear
+    neg eax ; make result negative
+atoi5:
+    pop     esi             ; restore esi from the value we pushed onto the stack at the start
+    pop     edx             ; restore edx from the value we pushed onto the stack at the start
+    pop     ecx             ; restore ecx from the value we pushed onto the stack at the start
+    pop     ebx             ; restore ebx from the value we pushed onto the stack at the start
+    ret
diff --git a/test2024/nasm-ref/incr1.nasm b/test2024/nasm-ref/incr1.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..b5fb7e008ad0437ecd20eb22ef0f73a330a64081
--- /dev/null
+++ b/test2024/nasm-ref/incr1.nasm
@@ -0,0 +1,35 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+a :	resd	4	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	dword [a],	4	;Affect
+	mov	eax,	dword [a]
+	add	eax,	1
+	mov	dword [a],	eax	;Affect
+	mov	eax,	dword [a]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/incr2.nasm b/test2024/nasm-ref/incr2.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..174ae7b4b11ca19bb624a8125a8131b2439e3dda
--- /dev/null
+++ b/test2024/nasm-ref/incr2.nasm
@@ -0,0 +1,34 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	4	;allocation des variables locales
+	mov	dword [ebp-4],	4	;Affect
+	mov	eax,	dword [ebp-4]
+	add	eax,	1
+	mov	dword [ebp-4],	eax	;Affect
+	mov	eax,	dword [ebp-4]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	4	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/incr3.nasm b/test2024/nasm-ref/incr3.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..eca125c3262d7454e21c7ff691db6eb2236a481e
--- /dev/null
+++ b/test2024/nasm-ref/incr3.nasm
@@ -0,0 +1,43 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+t :	resd	40	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	eax,	1
+	imul	eax,	4
+	mov	dword [t+eax],	100	;Affect
+	mov	eax,	1
+	imul	eax,	4
+	mov	ebx,	dword [t+eax]
+	add	ebx,	10
+	mov	eax,	1
+	imul	eax,	4
+	mov	dword [t+eax],	ebx	;Affect
+	mov	eax,	1
+	imul	eax,	4
+	mov	eax,	dword [t+eax]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/incr4.nasm b/test2024/nasm-ref/incr4.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..2e9b6d6074b845834c7add031b59b2ff8c9233d3
--- /dev/null
+++ b/test2024/nasm-ref/incr4.nasm
@@ -0,0 +1,39 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+a :	resd	4	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	dword [a],	4	;Affect
+	mov	eax,	12
+	imul	eax,	2
+	mov	ebx,	dword [a]
+	add	ebx,	eax
+	mov	eax,	dword [a]
+	add	eax,	ebx
+	mov	dword [a],	eax	;Affect
+	mov	eax,	dword [a]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/incr5.nasm b/test2024/nasm-ref/incr5.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..6b8bd8f70c1c3c4cacd96e0ee423160702ae6424
--- /dev/null
+++ b/test2024/nasm-ref/incr5.nasm
@@ -0,0 +1,55 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+t :	resd	40	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	eax,	1
+	imul	eax,	4
+	mov	dword [t+eax],	2	;Affect
+	mov	eax,	2
+	imul	eax,	4
+	mov	dword [t+eax],	3	;Affect
+	mov	eax,	3
+	imul	eax,	4
+	mov	dword [t+eax],	1	;Affect
+	mov	eax,	1
+	imul	eax,	4
+	mov	ecx,	dword [t+eax]
+	mov	eax,	2
+	imul	eax,	4
+	imul	ecx,	dword [t+eax]
+	mov	eax,	3
+	imul	eax,	4
+	mov	ebx,	dword [t+eax]
+	add	ebx,	ecx
+	mov	eax,	3
+	imul	eax,	4
+	mov	dword [t+eax],	ebx	;Affect
+	mov	eax,	3
+	imul	eax,	4
+	mov	eax,	dword [t+eax]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/modulo1.nasm b/test2024/nasm-ref/modulo1.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..d8baeedef254728675be1e9f3162e5cb99e4b691
--- /dev/null
+++ b/test2024/nasm-ref/modulo1.nasm
@@ -0,0 +1,40 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	5	;affectation des bits de poids faible du dividende
+	mov	ebx,	3
+	idiv	ebx
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	eax,	eax
+	mov	ebx,	3
+	imul	ebx,	eax
+	mov	eax,	5
+	sub	eax,	ebx
+	mov	eax,	eax	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/modulo2.nasm b/test2024/nasm-ref/modulo2.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..8276f6bb09339e7b8cfd487a46ab3dd8245ecdfd
--- /dev/null
+++ b/test2024/nasm-ref/modulo2.nasm
@@ -0,0 +1,42 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	12	;affectation des bits de poids faible du dividende
+	mov	ebx,	7
+	idiv	ebx
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	eax,	eax
+	mov	ebx,	7
+	imul	ebx,	eax
+	mov	eax,	12
+	sub	eax,	ebx
+	mov	eax,	eax
+	add	eax,	5
+	mov	eax,	eax	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/modulo3.nasm b/test2024/nasm-ref/modulo3.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..a45f11f03afd44ecce513cb1c98f682b402ff6d5
--- /dev/null
+++ b/test2024/nasm-ref/modulo3.nasm
@@ -0,0 +1,44 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	ebx,	2
+	imul	ebx,	7
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	ebx	;affectation des bits de poids faible du dividende
+	mov	ecx,	5
+	idiv	ecx
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	eax,	eax
+	mov	ecx,	5
+	imul	ecx,	eax
+	mov	eax,	ebx
+	sub	eax,	ecx
+	mov	eax,	eax
+	add	eax,	5
+	mov	eax,	eax	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/modulo4.nasm b/test2024/nasm-ref/modulo4.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..16eb9e38377aa557b4eb14940cc9aa06ef2075c4
--- /dev/null
+++ b/test2024/nasm-ref/modulo4.nasm
@@ -0,0 +1,43 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+a :	resd	4	;variable globale
+b :	resd	4	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	dword [a],	12	;Affect
+	mov	dword [b],	5	;Affect
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	dword [a]	;affectation des bits de poids faible du dividende
+	idiv	dword [b]
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	eax,	eax
+	mov	ebx,	dword [b]
+	imul	ebx,	eax
+	mov	eax,	dword [a]
+	sub	eax,	ebx
+	mov	eax,	eax	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/nasm-ref/modulo5.nasm b/test2024/nasm-ref/modulo5.nasm
new file mode 100644
index 0000000000000000000000000000000000000000..af97ef79c14b878b1367fa84fd5834001bb0eb45
--- /dev/null
+++ b/test2024/nasm-ref/modulo5.nasm
@@ -0,0 +1,59 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+t :	resd	40	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	eax	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	ebx,	0
+	imul	ebx,	4
+	mov	dword [t+ebx],	3164	;Affect
+	mov	ebx,	1
+	imul	ebx,	4
+	mov	dword [t+ebx],	152	;Affect
+	mov	ecx,	1
+	imul	ecx,	4
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	ebx,	0
+	imul	ebx,	4
+	mov	eax,	dword [t+ebx]	;affectation des bits de poids faible du dividende
+	idiv	dword [t+ecx]
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	ebx,	eax
+	mov	eax,	1
+	imul	eax,	4
+	mov	ecx,	dword [t+eax]
+	imul	ecx,	ebx
+	mov	eax,	0
+	imul	eax,	4
+	mov	ebx,	dword [t+eax]
+	sub	ebx,	ecx
+	mov	eax,	2
+	imul	eax,	4
+	mov	dword [t+eax],	ebx	;Affect
+	mov	eax,	2
+	imul	eax,	4
+	mov	eax,	dword [t+eax]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/out-ref/incr1.out b/test2024/out-ref/incr1.out
new file mode 100644
index 0000000000000000000000000000000000000000..7ed6ff82de6bcc2a78243fc9c54d3ef5ac14da69
--- /dev/null
+++ b/test2024/out-ref/incr1.out
@@ -0,0 +1 @@
+5
diff --git a/test2024/out-ref/incr2.out b/test2024/out-ref/incr2.out
new file mode 100644
index 0000000000000000000000000000000000000000..7ed6ff82de6bcc2a78243fc9c54d3ef5ac14da69
--- /dev/null
+++ b/test2024/out-ref/incr2.out
@@ -0,0 +1 @@
+5
diff --git a/test2024/out-ref/incr3.out b/test2024/out-ref/incr3.out
new file mode 100644
index 0000000000000000000000000000000000000000..bc6298e80ad4b7c48ae27ed65630f31e1d1143de
--- /dev/null
+++ b/test2024/out-ref/incr3.out
@@ -0,0 +1 @@
+110
diff --git a/test2024/out-ref/incr4.out b/test2024/out-ref/incr4.out
new file mode 100644
index 0000000000000000000000000000000000000000..f5c89552bd3e62bfce023a230e90d141f7a46b2f
--- /dev/null
+++ b/test2024/out-ref/incr4.out
@@ -0,0 +1 @@
+32
diff --git a/test2024/out-ref/incr5.out b/test2024/out-ref/incr5.out
new file mode 100644
index 0000000000000000000000000000000000000000..7f8f011eb73d6043d2e6db9d2c101195ae2801f2
--- /dev/null
+++ b/test2024/out-ref/incr5.out
@@ -0,0 +1 @@
+7
diff --git a/test2024/out-ref/modulo1.out b/test2024/out-ref/modulo1.out
new file mode 100644
index 0000000000000000000000000000000000000000..0cfbf08886fca9a91cb753ec8734c84fcbe52c9f
--- /dev/null
+++ b/test2024/out-ref/modulo1.out
@@ -0,0 +1 @@
+2
diff --git a/test2024/out-ref/modulo2.out b/test2024/out-ref/modulo2.out
new file mode 100644
index 0000000000000000000000000000000000000000..f599e28b8ab0d8c9c57a486c89c4a5132dcbd3b2
--- /dev/null
+++ b/test2024/out-ref/modulo2.out
@@ -0,0 +1 @@
+10
diff --git a/test2024/out-ref/modulo3.out b/test2024/out-ref/modulo3.out
new file mode 100644
index 0000000000000000000000000000000000000000..ec635144f60048986bc560c5576355344005e6e7
--- /dev/null
+++ b/test2024/out-ref/modulo3.out
@@ -0,0 +1 @@
+9
diff --git a/test2024/out-ref/modulo4.out b/test2024/out-ref/modulo4.out
new file mode 100644
index 0000000000000000000000000000000000000000..0cfbf08886fca9a91cb753ec8734c84fcbe52c9f
--- /dev/null
+++ b/test2024/out-ref/modulo4.out
@@ -0,0 +1 @@
+2
diff --git a/test2024/out-ref/modulo5.out b/test2024/out-ref/modulo5.out
new file mode 100644
index 0000000000000000000000000000000000000000..fc902f4f956b349ac5763a01f37a53ee607614d5
--- /dev/null
+++ b/test2024/out-ref/modulo5.out
@@ -0,0 +1 @@
+124
diff --git a/test2024/pre-nasm-ref/incr1.pre-nasm b/test2024/pre-nasm-ref/incr1.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..f0c86db4012400ccd227e50d6c810431a0271f35
--- /dev/null
+++ b/test2024/pre-nasm-ref/incr1.pre-nasm
@@ -0,0 +1,35 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+a :	resd	4	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	dword [a],	4	;Affect
+	mov	@1,	dword [a]
+	add	@1,	1
+	mov	dword [a],	@1	;Affect
+	mov	eax,	dword [a]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/incr2.pre-nasm b/test2024/pre-nasm-ref/incr2.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..30a80accb94eac4c33ad8f33b09e69cc0f620a40
--- /dev/null
+++ b/test2024/pre-nasm-ref/incr2.pre-nasm
@@ -0,0 +1,34 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	4	;allocation des variables locales
+	mov	dword [ebp-4],	4	;Affect
+	mov	@1,	dword [ebp-4]
+	add	@1,	1
+	mov	dword [ebp-4],	@1	;Affect
+	mov	eax,	dword [ebp-4]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	4	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/incr3.pre-nasm b/test2024/pre-nasm-ref/incr3.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..2ea0853c6089c6183b1c2f52cacee2ee4c048475
--- /dev/null
+++ b/test2024/pre-nasm-ref/incr3.pre-nasm
@@ -0,0 +1,43 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+t :	resd	40	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	@8,	1
+	imul	@8,	4
+	mov	dword [t+@8],	100	;Affect
+	mov	@9,	1
+	imul	@9,	4
+	mov	@1,	dword [t+@9]
+	add	@1,	10
+	mov	@10,	1
+	imul	@10,	4
+	mov	dword [t+@10],	@1	;Affect
+	mov	@12,	1
+	imul	@12,	4
+	mov	eax,	dword [t+@12]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/incr4.pre-nasm b/test2024/pre-nasm-ref/incr4.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..04478d58a080d7c9c1fbc1b07329dc6381b1afb1
--- /dev/null
+++ b/test2024/pre-nasm-ref/incr4.pre-nasm
@@ -0,0 +1,39 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+a :	resd	4	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	dword [a],	4	;Affect
+	mov	@1,	12
+	imul	@1,	2
+	mov	@2,	dword [a]
+	add	@2,	@1
+	mov	@3,	dword [a]
+	add	@3,	@2
+	mov	dword [a],	@3	;Affect
+	mov	eax,	dword [a]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/incr5.pre-nasm b/test2024/pre-nasm-ref/incr5.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..cb49aac42fd67e19105cf6f9f50eb6b466191712
--- /dev/null
+++ b/test2024/pre-nasm-ref/incr5.pre-nasm
@@ -0,0 +1,55 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+t :	resd	40	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	@9,	1
+	imul	@9,	4
+	mov	dword [t+@9],	2	;Affect
+	mov	@10,	2
+	imul	@10,	4
+	mov	dword [t+@10],	3	;Affect
+	mov	@11,	3
+	imul	@11,	4
+	mov	dword [t+@11],	1	;Affect
+	mov	@12,	1
+	imul	@12,	4
+	mov	@1,	dword [t+@12]
+	mov	@13,	2
+	imul	@13,	4
+	imul	@1,	dword [t+@13]
+	mov	@14,	3
+	imul	@14,	4
+	mov	@2,	dword [t+@14]
+	add	@2,	@1
+	mov	@15,	3
+	imul	@15,	4
+	mov	dword [t+@15],	@2	;Affect
+	mov	@17,	3
+	imul	@17,	4
+	mov	eax,	dword [t+@17]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/modulo1.pre-nasm b/test2024/pre-nasm-ref/modulo1.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..db5a4b55ffbbe1f5a8ea8963f80cae2af46b3210
--- /dev/null
+++ b/test2024/pre-nasm-ref/modulo1.pre-nasm
@@ -0,0 +1,40 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	5	;affectation des bits de poids faible du dividende
+	mov	@12,	3
+	idiv	@12
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	@1,	eax
+	mov	@2,	3
+	imul	@2,	@1
+	mov	@3,	5
+	sub	@3,	@2
+	mov	eax,	@3	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/modulo2.pre-nasm b/test2024/pre-nasm-ref/modulo2.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..d2d423ba8baded077c5424a14f3255e9b7c4d130
--- /dev/null
+++ b/test2024/pre-nasm-ref/modulo2.pre-nasm
@@ -0,0 +1,42 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	12	;affectation des bits de poids faible du dividende
+	mov	@13,	7
+	idiv	@13
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	@1,	eax
+	mov	@2,	7
+	imul	@2,	@1
+	mov	@3,	12
+	sub	@3,	@2
+	mov	@4,	@3
+	add	@4,	5
+	mov	eax,	@4	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/modulo3.pre-nasm b/test2024/pre-nasm-ref/modulo3.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..12e390b912c08b33485605294fde412b87f54204
--- /dev/null
+++ b/test2024/pre-nasm-ref/modulo3.pre-nasm
@@ -0,0 +1,44 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	@1,	2
+	imul	@1,	7
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	@1	;affectation des bits de poids faible du dividende
+	mov	@14,	5
+	idiv	@14
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	@2,	eax
+	mov	@3,	5
+	imul	@3,	@2
+	mov	@4,	@1
+	sub	@4,	@3
+	mov	@5,	@4
+	add	@5,	5
+	mov	eax,	@5	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/modulo4.pre-nasm b/test2024/pre-nasm-ref/modulo4.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..a3f92e601992db93f6a9e26997201df764109ac9
--- /dev/null
+++ b/test2024/pre-nasm-ref/modulo4.pre-nasm
@@ -0,0 +1,43 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+a :	resd	4	;variable globale
+b :	resd	4	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	dword [a],	12	;Affect
+	mov	dword [b],	5	;Affect
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	eax,	dword [a]	;affectation des bits de poids faible du dividende
+	idiv	dword [b]
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	@1,	eax
+	mov	@2,	dword [b]
+	imul	@2,	@1
+	mov	@3,	dword [a]
+	sub	@3,	@2
+	mov	eax,	@3	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/pre-nasm-ref/modulo5.pre-nasm b/test2024/pre-nasm-ref/modulo5.pre-nasm
new file mode 100644
index 0000000000000000000000000000000000000000..e987491c166d3e819b0ae94def585c2c3046dec7
--- /dev/null
+++ b/test2024/pre-nasm-ref/modulo5.pre-nasm
@@ -0,0 +1,59 @@
+%include	'io.asm'
+
+section	.bss
+sinput :	resb	255	;reserve a 255 byte space in memory for the users input string
+t :	resd	40	;variable globale
+
+section	.text
+global _start
+_start:
+	sub	esp,	4	;allocation mémoire pour la valeur de retour
+	call	main
+	pop	@0	;récupération de la valeur de retour
+	mov	ebx,	0	; valeur de retour du programme
+	mov	eax,	1	; code de sortie
+	int 0x80
+main :	push	ebp	;sauvegarde la valeur de ebp
+	mov	ebp,	esp	;nouvelle valeur de ebp
+	push	eax	;sauvegarde de eax
+	push	ebx	;sauvegarde de ebx
+	push	ecx	;sauvegarde de ecx
+	push	edx	;sauvegarde de edx
+	sub	esp,	0	;allocation des variables locales
+	mov	@10,	0
+	imul	@10,	4
+	mov	dword [t+@10],	3164	;Affect
+	mov	@11,	1
+	imul	@11,	4
+	mov	dword [t+@11],	152	;Affect
+	mov	@12,	1
+	imul	@12,	4
+	mov	edx,	0	;mise à 0 des bits de poids fort du dividende
+	mov	@15,	0
+	imul	@15,	4
+	mov	eax,	dword [t+@15]	;affectation des bits de poids faible du dividende
+	idiv	dword [t+@12]
+	mov	edx,	edx	;rend explicite l'utilisation de edx pour ne pas que sa valeur soit modifiée
+	mov	@1,	eax
+	mov	@17,	1
+	imul	@17,	4
+	mov	@2,	dword [t+@17]
+	imul	@2,	@1
+	mov	@18,	0
+	imul	@18,	4
+	mov	@3,	dword [t+@18]
+	sub	@3,	@2
+	mov	@19,	2
+	imul	@19,	4
+	mov	dword [t+@19],	@3	;Affect
+	mov	@21,	2
+	imul	@21,	4
+	mov	eax,	dword [t+@21]	;Write 1
+	call	iprintLF	;Write 2
+	add	esp,	0	;désallocation des variables locales
+	pop	edx	;restaure edx
+	pop	ecx	;restaure ecx
+	pop	ebx	;restaure ebx
+	pop	eax	;restaure eax
+	pop	ebp	;restaure la valeur de ebp
+	ret
diff --git a/test2024/sa-ref/incr1.sa b/test2024/sa-ref/incr1.sa
new file mode 100644
index 0000000000000000000000000000000000000000..cd0917c95a2818a082dd80d8150fb58984397ce4
--- /dev/null
+++ b/test2024/sa-ref/incr1.sa
@@ -0,0 +1 @@
+(SaProg (SaLDecVar (SaDecVarSimple a entier) null) (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstAffect (SaVarSimple a) 4) (SaLInst (SaIncr (SaVarSimple a) 1) (SaLInst (SaInstEcriture (SaExpVar (SaVarSimple a))) null))))) null))
diff --git a/test2024/sa-ref/incr2.sa b/test2024/sa-ref/incr2.sa
new file mode 100644
index 0000000000000000000000000000000000000000..d2c23186157cc5cec2d1759a8a5fa84a35585a67
--- /dev/null
+++ b/test2024/sa-ref/incr2.sa
@@ -0,0 +1 @@
+(SaProg null (SaLDecFonc (SaDecFonc main nul null (SaLDecVar (SaDecVarSimple a entier) null) (SaInstBloc (SaLInst (SaInstAffect (SaVarSimple a) 4) (SaLInst (SaIncr (SaVarSimple a) 1) (SaLInst (SaInstEcriture (SaExpVar (SaVarSimple a))) null))))) null))
diff --git a/test2024/sa-ref/incr3.sa b/test2024/sa-ref/incr3.sa
new file mode 100644
index 0000000000000000000000000000000000000000..0fa3d6bd3816a4645eb28d31b44fb06f72be0f5e
--- /dev/null
+++ b/test2024/sa-ref/incr3.sa
@@ -0,0 +1 @@
+(SaProg (SaLDecVar (SaDecTab t entier 10) null) (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstAffect (SaVarIndicee t 1) 100) (SaLInst (SaIncr (SaVarIndicee t 1) 10) (SaLInst (SaInstEcriture (SaExpVar (SaVarIndicee t 1))) null))))) null))
diff --git a/test2024/sa-ref/incr4.sa b/test2024/sa-ref/incr4.sa
new file mode 100644
index 0000000000000000000000000000000000000000..9ca73e49f4057e20085b87f64937d4a5d5d43d0e
--- /dev/null
+++ b/test2024/sa-ref/incr4.sa
@@ -0,0 +1 @@
+(SaProg (SaLDecVar (SaDecVarSimple a entier) null) (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstAffect (SaVarSimple a) 4) (SaLInst (SaIncr (SaVarSimple a) (SaExpAdd (SaExpVar (SaVarSimple a)) (SaExpMult 12 2))) (SaLInst (SaInstEcriture (SaExpVar (SaVarSimple a))) null))))) null))
diff --git a/test2024/sa-ref/incr5.sa b/test2024/sa-ref/incr5.sa
new file mode 100644
index 0000000000000000000000000000000000000000..f3f5de2ce862d0664657e1092cdd73720e90941b
--- /dev/null
+++ b/test2024/sa-ref/incr5.sa
@@ -0,0 +1 @@
+(SaProg (SaLDecVar (SaDecTab t entier 10) null) (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstAffect (SaVarIndicee t 1) 2) (SaLInst (SaInstAffect (SaVarIndicee t 2) 3) (SaLInst (SaInstAffect (SaVarIndicee t 3) 1) (SaLInst (SaIncr (SaVarIndicee t 3) (SaExpMult (SaExpVar (SaVarIndicee t 1)) (SaExpVar (SaVarIndicee t 2)))) (SaLInst (SaInstEcriture (SaExpVar (SaVarIndicee t 3))) null))))))) null))
diff --git a/test2024/sa-ref/modulo1.sa b/test2024/sa-ref/modulo1.sa
new file mode 100644
index 0000000000000000000000000000000000000000..50c5b647eb19a474cb25783c02df7085b02d09f1
--- /dev/null
+++ b/test2024/sa-ref/modulo1.sa
@@ -0,0 +1 @@
+(SaProg null (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstEcriture (SaExpModulo 5 3)) null))) null))
diff --git a/test2024/sa-ref/modulo2.sa b/test2024/sa-ref/modulo2.sa
new file mode 100644
index 0000000000000000000000000000000000000000..49bf80e2ddb192908729343254626e929597aed4
--- /dev/null
+++ b/test2024/sa-ref/modulo2.sa
@@ -0,0 +1 @@
+(SaProg null (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstEcriture (SaExpAdd (SaExpModulo 12 7) 5)) null))) null))
diff --git a/test2024/sa-ref/modulo3.sa b/test2024/sa-ref/modulo3.sa
new file mode 100644
index 0000000000000000000000000000000000000000..3529ada37d90a48875d135b18f13f562b3d22dc9
--- /dev/null
+++ b/test2024/sa-ref/modulo3.sa
@@ -0,0 +1 @@
+(SaProg null (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstEcriture (SaExpAdd (SaExpModulo (SaExpMult 2 7) 5) 5)) null))) null))
diff --git a/test2024/sa-ref/modulo4.sa b/test2024/sa-ref/modulo4.sa
new file mode 100644
index 0000000000000000000000000000000000000000..d5b0f4ff87dc7503483d653bcb8d0f0c696aa272
--- /dev/null
+++ b/test2024/sa-ref/modulo4.sa
@@ -0,0 +1 @@
+(SaProg (SaLDecVar (SaDecVarSimple a entier) (SaLDecVar (SaDecVarSimple b entier) null)) (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstAffect (SaVarSimple a) 12) (SaLInst (SaInstAffect (SaVarSimple b) 5) (SaLInst (SaInstEcriture (SaExpModulo (SaExpVar (SaVarSimple a)) (SaExpVar (SaVarSimple b)))) null))))) null))
diff --git a/test2024/sa-ref/modulo5.sa b/test2024/sa-ref/modulo5.sa
new file mode 100644
index 0000000000000000000000000000000000000000..8bc98cc2d590ff354433c73edf4aeccbc213b910
--- /dev/null
+++ b/test2024/sa-ref/modulo5.sa
@@ -0,0 +1 @@
+(SaProg (SaLDecVar (SaDecTab t entier 10) null) (SaLDecFonc (SaDecFonc main nul null null (SaInstBloc (SaLInst (SaInstAffect (SaVarIndicee t 0) 3164) (SaLInst (SaInstAffect (SaVarIndicee t 1) 152) (SaLInst (SaInstAffect (SaVarIndicee t 2) (SaExpModulo (SaExpVar (SaVarIndicee t 0)) (SaExpVar (SaVarIndicee t 1)))) (SaLInst (SaInstEcriture (SaExpVar (SaVarIndicee t 2))) null)))))) null))
diff --git a/test2024/sc-ref/incr1.sc b/test2024/sc-ref/incr1.sc
new file mode 100644
index 0000000000000000000000000000000000000000..b2a2744bb9fcc0522dc341b9007b880e12870e85
--- /dev/null
+++ b/test2024/sc-ref/incr1.sc
@@ -0,0 +1,98 @@
+<Start>
+ <AProgramme>
+  <APremierListedecvar>
+   <AScalaireDecvar>
+    <AEntierType>
+    </AEntierType>
+   </AScalaireDecvar>
+   <AFinalListedecvarbis>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecvarbis>
+  </APremierListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ASimpleVar>
+       </ASimpleVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AIncrInstr>
+        <ASimpleVar>
+        </ASimpleVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AIncrInstr>
+       <ARecursifListeinst>
+        <AEcritureInstr>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ASimpleVar>
+                </ASimpleVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AEcritureInstr>
+        <AFinalListeinst>
+         <AEpsilon>
+         </AEpsilon>
+        </AFinalListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/incr2.sc b/test2024/sc-ref/incr2.sc
new file mode 100644
index 0000000000000000000000000000000000000000..b31f4a946573f8f532961e7c681f52ec909c5bc7
--- /dev/null
+++ b/test2024/sc-ref/incr2.sc
@@ -0,0 +1,98 @@
+<Start>
+ <AProgramme>
+  <AVideListedecvar>
+   <AEpsilon>
+   </AEpsilon>
+  </AVideListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <APremierListedecvar>
+     <AScalaireDecvar>
+      <AEntierType>
+      </AEntierType>
+     </AScalaireDecvar>
+     <AFinalListedecvarbis>
+      <AEpsilon>
+      </AEpsilon>
+     </AFinalListedecvarbis>
+    </APremierListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ASimpleVar>
+       </ASimpleVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AIncrInstr>
+        <ASimpleVar>
+        </ASimpleVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AIncrInstr>
+       <ARecursifListeinst>
+        <AEcritureInstr>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ASimpleVar>
+                </ASimpleVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AEcritureInstr>
+        <AFinalListeinst>
+         <AEpsilon>
+         </AEpsilon>
+        </AFinalListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/incr3.sc b/test2024/sc-ref/incr3.sc
new file mode 100644
index 0000000000000000000000000000000000000000..cf78cbee1d670f3c34ae668e177b01d7ae1f9dbb
--- /dev/null
+++ b/test2024/sc-ref/incr3.sc
@@ -0,0 +1,140 @@
+<Start>
+ <AProgramme>
+  <APremierListedecvar>
+   <ATableauDecvar>
+    <AEntierType>
+    </AEntierType>
+   </ATableauDecvar>
+   <AFinalListedecvarbis>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecvarbis>
+  </APremierListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ATabVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </ATabVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AIncrInstr>
+        <ATabVar>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </ATabVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AIncrInstr>
+       <ARecursifListeinst>
+        <AEcritureInstr>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ATabVar>
+                 <AExp1Exp>
+                  <AExp2Exp1>
+                   <AExp3Exp2>
+                    <AExp4Exp3>
+                     <AExp5Exp4>
+                      <AExp6Exp5>
+                       <ANombreExp6>
+                       </ANombreExp6>
+                      </AExp6Exp5>
+                     </AExp5Exp4>
+                    </AExp4Exp3>
+                   </AExp3Exp2>
+                  </AExp2Exp1>
+                 </AExp1Exp>
+                </ATabVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AEcritureInstr>
+        <AFinalListeinst>
+         <AEpsilon>
+         </AEpsilon>
+        </AFinalListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/incr4.sc b/test2024/sc-ref/incr4.sc
new file mode 100644
index 0000000000000000000000000000000000000000..7036e7b9ef450cac04c46a7541112e2828d90c56
--- /dev/null
+++ b/test2024/sc-ref/incr4.sc
@@ -0,0 +1,114 @@
+<Start>
+ <AProgramme>
+  <APremierListedecvar>
+   <AScalaireDecvar>
+    <AEntierType>
+    </AEntierType>
+   </AScalaireDecvar>
+   <AFinalListedecvarbis>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecvarbis>
+  </APremierListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ASimpleVar>
+       </ASimpleVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AIncrInstr>
+        <ASimpleVar>
+        </ASimpleVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <APlusExp3>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ASimpleVar>
+                </ASimpleVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+            <AFoisExp4>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AFoisExp4>
+           </APlusExp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AIncrInstr>
+       <ARecursifListeinst>
+        <AEcritureInstr>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ASimpleVar>
+                </ASimpleVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AEcritureInstr>
+        <AFinalListeinst>
+         <AEpsilon>
+         </AEpsilon>
+        </AFinalListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/incr5.sc b/test2024/sc-ref/incr5.sc
new file mode 100644
index 0000000000000000000000000000000000000000..9a0b952d19c191bdb4913b957e98bbde3c2ddfc9
--- /dev/null
+++ b/test2024/sc-ref/incr5.sc
@@ -0,0 +1,246 @@
+<Start>
+ <AProgramme>
+  <APremierListedecvar>
+   <ATableauDecvar>
+    <AEntierType>
+    </AEntierType>
+   </ATableauDecvar>
+   <AFinalListedecvarbis>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecvarbis>
+  </APremierListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ATabVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </ATabVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AAffectInstr>
+        <ATabVar>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </ATabVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AAffectInstr>
+       <ARecursifListeinst>
+        <AAffectInstr>
+         <ATabVar>
+          <AExp1Exp>
+           <AExp2Exp1>
+            <AExp3Exp2>
+             <AExp4Exp3>
+              <AExp5Exp4>
+               <AExp6Exp5>
+                <ANombreExp6>
+                </ANombreExp6>
+               </AExp6Exp5>
+              </AExp5Exp4>
+             </AExp4Exp3>
+            </AExp3Exp2>
+           </AExp2Exp1>
+          </AExp1Exp>
+         </ATabVar>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AAffectInstr>
+        <ARecursifListeinst>
+         <AIncrInstr>
+          <ATabVar>
+           <AExp1Exp>
+            <AExp2Exp1>
+             <AExp3Exp2>
+              <AExp4Exp3>
+               <AExp5Exp4>
+                <AExp6Exp5>
+                 <ANombreExp6>
+                 </ANombreExp6>
+                </AExp6Exp5>
+               </AExp5Exp4>
+              </AExp4Exp3>
+             </AExp3Exp2>
+            </AExp2Exp1>
+           </AExp1Exp>
+          </ATabVar>
+          <AExp1Exp>
+           <AExp2Exp1>
+            <AExp3Exp2>
+             <AExp4Exp3>
+              <AFoisExp4>
+               <AExp5Exp4>
+                <AExp6Exp5>
+                 <AVarExp6>
+                  <ATabVar>
+                   <AExp1Exp>
+                    <AExp2Exp1>
+                     <AExp3Exp2>
+                      <AExp4Exp3>
+                       <AExp5Exp4>
+                        <AExp6Exp5>
+                         <ANombreExp6>
+                         </ANombreExp6>
+                        </AExp6Exp5>
+                       </AExp5Exp4>
+                      </AExp4Exp3>
+                     </AExp3Exp2>
+                    </AExp2Exp1>
+                   </AExp1Exp>
+                  </ATabVar>
+                 </AVarExp6>
+                </AExp6Exp5>
+               </AExp5Exp4>
+               <AExp6Exp5>
+                <AVarExp6>
+                 <ATabVar>
+                  <AExp1Exp>
+                   <AExp2Exp1>
+                    <AExp3Exp2>
+                     <AExp4Exp3>
+                      <AExp5Exp4>
+                       <AExp6Exp5>
+                        <ANombreExp6>
+                        </ANombreExp6>
+                       </AExp6Exp5>
+                      </AExp5Exp4>
+                     </AExp4Exp3>
+                    </AExp3Exp2>
+                   </AExp2Exp1>
+                  </AExp1Exp>
+                 </ATabVar>
+                </AVarExp6>
+               </AExp6Exp5>
+              </AFoisExp4>
+             </AExp4Exp3>
+            </AExp3Exp2>
+           </AExp2Exp1>
+          </AExp1Exp>
+         </AIncrInstr>
+         <ARecursifListeinst>
+          <AEcritureInstr>
+           <AExp1Exp>
+            <AExp2Exp1>
+             <AExp3Exp2>
+              <AExp4Exp3>
+               <AExp5Exp4>
+                <AExp6Exp5>
+                 <AVarExp6>
+                  <ATabVar>
+                   <AExp1Exp>
+                    <AExp2Exp1>
+                     <AExp3Exp2>
+                      <AExp4Exp3>
+                       <AExp5Exp4>
+                        <AExp6Exp5>
+                         <ANombreExp6>
+                         </ANombreExp6>
+                        </AExp6Exp5>
+                       </AExp5Exp4>
+                      </AExp4Exp3>
+                     </AExp3Exp2>
+                    </AExp2Exp1>
+                   </AExp1Exp>
+                  </ATabVar>
+                 </AVarExp6>
+                </AExp6Exp5>
+               </AExp5Exp4>
+              </AExp4Exp3>
+             </AExp3Exp2>
+            </AExp2Exp1>
+           </AExp1Exp>
+          </AEcritureInstr>
+          <AFinalListeinst>
+           <AEpsilon>
+           </AEpsilon>
+          </AFinalListeinst>
+         </ARecursifListeinst>
+        </ARecursifListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/modulo1.sc b/test2024/sc-ref/modulo1.sc
new file mode 100644
index 0000000000000000000000000000000000000000..e7c27e5c4cad28c5a6e14633c8c841428b836814
--- /dev/null
+++ b/test2024/sc-ref/modulo1.sc
@@ -0,0 +1,56 @@
+<Start>
+ <AProgramme>
+  <AVideListedecvar>
+   <AEpsilon>
+   </AEpsilon>
+  </AVideListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AEcritureInstr>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AModuloExp4>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AModuloExp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AEcritureInstr>
+      <AFinalListeinst>
+       <AEpsilon>
+       </AEpsilon>
+      </AFinalListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/modulo2.sc b/test2024/sc-ref/modulo2.sc
new file mode 100644
index 0000000000000000000000000000000000000000..f14457a9255ce331f5a5024b04c7d950b8ca5238
--- /dev/null
+++ b/test2024/sc-ref/modulo2.sc
@@ -0,0 +1,64 @@
+<Start>
+ <AProgramme>
+  <AVideListedecvar>
+   <AEpsilon>
+   </AEpsilon>
+  </AVideListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AEcritureInstr>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <APlusExp3>
+           <AExp4Exp3>
+            <AModuloExp4>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AModuloExp4>
+           </AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </APlusExp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AEcritureInstr>
+      <AFinalListeinst>
+       <AEpsilon>
+       </AEpsilon>
+      </AFinalListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/modulo3.sc b/test2024/sc-ref/modulo3.sc
new file mode 100644
index 0000000000000000000000000000000000000000..0fb9c2bb53ec6c65fd2fd4d4424925596493b46c
--- /dev/null
+++ b/test2024/sc-ref/modulo3.sc
@@ -0,0 +1,70 @@
+<Start>
+ <AProgramme>
+  <AVideListedecvar>
+   <AEpsilon>
+   </AEpsilon>
+  </AVideListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AEcritureInstr>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <APlusExp3>
+           <AExp4Exp3>
+            <AModuloExp4>
+             <AFoisExp4>
+              <AExp5Exp4>
+               <AExp6Exp5>
+                <ANombreExp6>
+                </ANombreExp6>
+               </AExp6Exp5>
+              </AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AFoisExp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AModuloExp4>
+           </AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </APlusExp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AEcritureInstr>
+      <AFinalListeinst>
+       <AEpsilon>
+       </AEpsilon>
+      </AFinalListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/modulo4.sc b/test2024/sc-ref/modulo4.sc
new file mode 100644
index 0000000000000000000000000000000000000000..31a7439138a0cfd33d42b0487a86f83ce8a56f4a
--- /dev/null
+++ b/test2024/sc-ref/modulo4.sc
@@ -0,0 +1,112 @@
+<Start>
+ <AProgramme>
+  <APremierListedecvar>
+   <AScalaireDecvar>
+    <AEntierType>
+    </AEntierType>
+   </AScalaireDecvar>
+   <ARecursifListedecvarbis>
+    <AScalaireDecvar>
+     <AEntierType>
+     </AEntierType>
+    </AScalaireDecvar>
+    <AFinalListedecvarbis>
+     <AEpsilon>
+     </AEpsilon>
+    </AFinalListedecvarbis>
+   </ARecursifListedecvarbis>
+  </APremierListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ASimpleVar>
+       </ASimpleVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AAffectInstr>
+        <ASimpleVar>
+        </ASimpleVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AAffectInstr>
+       <ARecursifListeinst>
+        <AEcritureInstr>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AModuloExp4>
+              <AExp5Exp4>
+               <AExp6Exp5>
+                <AVarExp6>
+                 <ASimpleVar>
+                 </ASimpleVar>
+                </AVarExp6>
+               </AExp6Exp5>
+              </AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ASimpleVar>
+                </ASimpleVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AModuloExp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AEcritureInstr>
+        <AFinalListeinst>
+         <AEpsilon>
+         </AEpsilon>
+        </AFinalListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/sc-ref/modulo5.sc b/test2024/sc-ref/modulo5.sc
new file mode 100644
index 0000000000000000000000000000000000000000..00d4badba705ed7c52d9896f18eb0cf6276224fd
--- /dev/null
+++ b/test2024/sc-ref/modulo5.sc
@@ -0,0 +1,212 @@
+<Start>
+ <AProgramme>
+  <APremierListedecvar>
+   <ATableauDecvar>
+    <AEntierType>
+    </AEntierType>
+   </ATableauDecvar>
+   <AFinalListedecvarbis>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecvarbis>
+  </APremierListedecvar>
+  <ARecursifListedecfonc>
+   <ADecfonc>
+    <AVideOpttype>
+    </AVideOpttype>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AVideListedecvar>
+     <AEpsilon>
+     </AEpsilon>
+    </AVideListedecvar>
+    <AInstrbloc>
+     <ARecursifListeinst>
+      <AAffectInstr>
+       <ATabVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </ATabVar>
+       <AExp1Exp>
+        <AExp2Exp1>
+         <AExp3Exp2>
+          <AExp4Exp3>
+           <AExp5Exp4>
+            <AExp6Exp5>
+             <ANombreExp6>
+             </ANombreExp6>
+            </AExp6Exp5>
+           </AExp5Exp4>
+          </AExp4Exp3>
+         </AExp3Exp2>
+        </AExp2Exp1>
+       </AExp1Exp>
+      </AAffectInstr>
+      <ARecursifListeinst>
+       <AAffectInstr>
+        <ATabVar>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AExp5Exp4>
+              <AExp6Exp5>
+               <ANombreExp6>
+               </ANombreExp6>
+              </AExp6Exp5>
+             </AExp5Exp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </ATabVar>
+        <AExp1Exp>
+         <AExp2Exp1>
+          <AExp3Exp2>
+           <AExp4Exp3>
+            <AExp5Exp4>
+             <AExp6Exp5>
+              <ANombreExp6>
+              </ANombreExp6>
+             </AExp6Exp5>
+            </AExp5Exp4>
+           </AExp4Exp3>
+          </AExp3Exp2>
+         </AExp2Exp1>
+        </AExp1Exp>
+       </AAffectInstr>
+       <ARecursifListeinst>
+        <AAffectInstr>
+         <ATabVar>
+          <AExp1Exp>
+           <AExp2Exp1>
+            <AExp3Exp2>
+             <AExp4Exp3>
+              <AExp5Exp4>
+               <AExp6Exp5>
+                <ANombreExp6>
+                </ANombreExp6>
+               </AExp6Exp5>
+              </AExp5Exp4>
+             </AExp4Exp3>
+            </AExp3Exp2>
+           </AExp2Exp1>
+          </AExp1Exp>
+         </ATabVar>
+         <AExp1Exp>
+          <AExp2Exp1>
+           <AExp3Exp2>
+            <AExp4Exp3>
+             <AModuloExp4>
+              <AExp5Exp4>
+               <AExp6Exp5>
+                <AVarExp6>
+                 <ATabVar>
+                  <AExp1Exp>
+                   <AExp2Exp1>
+                    <AExp3Exp2>
+                     <AExp4Exp3>
+                      <AExp5Exp4>
+                       <AExp6Exp5>
+                        <ANombreExp6>
+                        </ANombreExp6>
+                       </AExp6Exp5>
+                      </AExp5Exp4>
+                     </AExp4Exp3>
+                    </AExp3Exp2>
+                   </AExp2Exp1>
+                  </AExp1Exp>
+                 </ATabVar>
+                </AVarExp6>
+               </AExp6Exp5>
+              </AExp5Exp4>
+              <AExp6Exp5>
+               <AVarExp6>
+                <ATabVar>
+                 <AExp1Exp>
+                  <AExp2Exp1>
+                   <AExp3Exp2>
+                    <AExp4Exp3>
+                     <AExp5Exp4>
+                      <AExp6Exp5>
+                       <ANombreExp6>
+                       </ANombreExp6>
+                      </AExp6Exp5>
+                     </AExp5Exp4>
+                    </AExp4Exp3>
+                   </AExp3Exp2>
+                  </AExp2Exp1>
+                 </AExp1Exp>
+                </ATabVar>
+               </AVarExp6>
+              </AExp6Exp5>
+             </AModuloExp4>
+            </AExp4Exp3>
+           </AExp3Exp2>
+          </AExp2Exp1>
+         </AExp1Exp>
+        </AAffectInstr>
+        <ARecursifListeinst>
+         <AEcritureInstr>
+          <AExp1Exp>
+           <AExp2Exp1>
+            <AExp3Exp2>
+             <AExp4Exp3>
+              <AExp5Exp4>
+               <AExp6Exp5>
+                <AVarExp6>
+                 <ATabVar>
+                  <AExp1Exp>
+                   <AExp2Exp1>
+                    <AExp3Exp2>
+                     <AExp4Exp3>
+                      <AExp5Exp4>
+                       <AExp6Exp5>
+                        <ANombreExp6>
+                        </ANombreExp6>
+                       </AExp6Exp5>
+                      </AExp5Exp4>
+                     </AExp4Exp3>
+                    </AExp3Exp2>
+                   </AExp2Exp1>
+                  </AExp1Exp>
+                 </ATabVar>
+                </AVarExp6>
+               </AExp6Exp5>
+              </AExp5Exp4>
+             </AExp4Exp3>
+            </AExp3Exp2>
+           </AExp2Exp1>
+          </AExp1Exp>
+         </AEcritureInstr>
+         <AFinalListeinst>
+          <AEpsilon>
+          </AEpsilon>
+         </AFinalListeinst>
+        </ARecursifListeinst>
+       </ARecursifListeinst>
+      </ARecursifListeinst>
+     </ARecursifListeinst>
+    </AInstrbloc>
+   </ADecfonc>
+   <AFinalListedecfonc>
+    <AEpsilon>
+    </AEpsilon>
+   </AFinalListedecfonc>
+  </ARecursifListedecfonc>
+ </AProgramme>
+</Start>
diff --git a/test2024/ts-ref/incr1.ts b/test2024/ts-ref/incr1.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f223443e9d97dde78efbca5e6b59a7babdbdad38
--- /dev/null
+++ b/test2024/ts-ref/incr1.ts
@@ -0,0 +1,4 @@
+TABLE GLOBALE
+a	VAR  	entier	0
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/incr2.ts b/test2024/ts-ref/incr2.ts
new file mode 100644
index 0000000000000000000000000000000000000000..53497cf7f8021a9a552389d69dc902e4b23b143f
--- /dev/null
+++ b/test2024/ts-ref/incr2.ts
@@ -0,0 +1,4 @@
+TABLE GLOBALE
+main	FCT	nul	0
+TABLE LOCALE : main
+a	VAR  	entier	0
diff --git a/test2024/ts-ref/incr3.ts b/test2024/ts-ref/incr3.ts
new file mode 100644
index 0000000000000000000000000000000000000000..06329e6ca32d03deed7ef21f24142675ef6a81df
--- /dev/null
+++ b/test2024/ts-ref/incr3.ts
@@ -0,0 +1,4 @@
+TABLE GLOBALE
+t	TAB  	entier	0	10
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/incr4.ts b/test2024/ts-ref/incr4.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f223443e9d97dde78efbca5e6b59a7babdbdad38
--- /dev/null
+++ b/test2024/ts-ref/incr4.ts
@@ -0,0 +1,4 @@
+TABLE GLOBALE
+a	VAR  	entier	0
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/incr5.ts b/test2024/ts-ref/incr5.ts
new file mode 100644
index 0000000000000000000000000000000000000000..06329e6ca32d03deed7ef21f24142675ef6a81df
--- /dev/null
+++ b/test2024/ts-ref/incr5.ts
@@ -0,0 +1,4 @@
+TABLE GLOBALE
+t	TAB  	entier	0	10
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/modulo1.ts b/test2024/ts-ref/modulo1.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b21c85dc34c7a75e67fc4ed59fb2e81df5afd70
--- /dev/null
+++ b/test2024/ts-ref/modulo1.ts
@@ -0,0 +1,3 @@
+TABLE GLOBALE
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/modulo2.ts b/test2024/ts-ref/modulo2.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b21c85dc34c7a75e67fc4ed59fb2e81df5afd70
--- /dev/null
+++ b/test2024/ts-ref/modulo2.ts
@@ -0,0 +1,3 @@
+TABLE GLOBALE
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/modulo3.ts b/test2024/ts-ref/modulo3.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6b21c85dc34c7a75e67fc4ed59fb2e81df5afd70
--- /dev/null
+++ b/test2024/ts-ref/modulo3.ts
@@ -0,0 +1,3 @@
+TABLE GLOBALE
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/modulo4.ts b/test2024/ts-ref/modulo4.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f49a3c588e2bb7fe978a904d92c4e0c156cd1d36
--- /dev/null
+++ b/test2024/ts-ref/modulo4.ts
@@ -0,0 +1,5 @@
+TABLE GLOBALE
+a	VAR  	entier	0
+b	VAR  	entier	4
+main	FCT	nul	0
+TABLE LOCALE : main
diff --git a/test2024/ts-ref/modulo5.ts b/test2024/ts-ref/modulo5.ts
new file mode 100644
index 0000000000000000000000000000000000000000..06329e6ca32d03deed7ef21f24142675ef6a81df
--- /dev/null
+++ b/test2024/ts-ref/modulo5.ts
@@ -0,0 +1,4 @@
+TABLE GLOBALE
+t	TAB  	entier	0	10
+main	FCT	nul	0
+TABLE LOCALE : main