diff --git a/src/Compiler.java b/src/Compiler.java
index e007f402d852f0a343cdeade8fc910bc57aa8cfe..cfc680779d2d9b8ab8dde31241b47f81a8e018b9 100644
--- a/src/Compiler.java
+++ b/src/Compiler.java
@@ -41,10 +41,10 @@ public class Compiler
 
 		System.out.println("[BUILD C3A] ");
 		buildC3a();
-/*
+
 		System.out.println("[BUILD PRE NASM] ");
 		buildPreNasm();
-		System.out.println("[BUILD FLOW GRAPH] ");
+/*		System.out.println("[BUILD FLOW GRAPH] ");
 		buildFg();
 		System.out.println("[SOLVE FLOW GRAPH]");
 		solveFg();
diff --git a/src/nasm/C3a2nasm.java b/src/nasm/C3a2nasm.java
index de33f5cf53abc9f77d42922fa678d27e59974e96..9e9dce58a7b565f0519f04a9bb6dea5bf570c20c 100644
--- a/src/nasm/C3a2nasm.java
+++ b/src/nasm/C3a2nasm.java
@@ -29,30 +29,104 @@ public class C3a2nasm implements C3aVisitor <NasmOperand> {
     public Nasm getNasm(){return nasm;}
 
 
-    public NasmOperand visit(C3a c3a){return null;}
-    public NasmOperand visit(C3aInstAdd inst){return null;}
-    public NasmOperand visit(C3aInstCall inst){return null;}
-    public NasmOperand visit(C3aInstFBegin inst){return null;}
+    public NasmOperand visit(C3a c3a){
+        c3a.affiche("caca");
+        for (C3aInst c3aInst : c3a.listeInst) {
+            c3aInst.accept(this);
+            System.out.println(c3aInst.getClass());
+        }
+        nasm.affichePreNasm("caca");
+        return null;
+    }
+    public NasmOperand visit(C3aInstAdd inst){
+        NasmOperand label = (inst.label != null) ?
+                inst.label.accept(this)
+                : null;
+        nasm.ajouteInst(new NasmMov(label,
+                inst.result.accept(this),
+                inst.op1.accept(this), ""));
+        nasm.ajouteInst(new NasmAdd(null,
+                inst.result.accept(this),
+                inst.op2.accept(this), ""));
+        return null;
+    }
+
+    public NasmOperand visit(C3aInstCall inst){
+        NasmOperand address = (inst.label != null) ?
+                inst.label.accept(this)
+                : null;
+        nasm.ajouteInst(new NasmCall(null, address, ""));
+        return null;
+    }
+    public NasmOperand visit(C3aInstFBegin inst){
+
+
+        return null;
+    }
     public NasmOperand visit(C3aInst inst){return null;}
     public NasmOperand visit(C3aInstJumpIfLess inst){return null;}
-    public NasmOperand visit(C3aInstMult inst){return null;}
+    public NasmOperand visit(C3aInstMult inst){
+        NasmOperand label = (inst.label != null) ?
+            inst.label.accept(this)
+            : null;
+        nasm.ajouteInst(new NasmMov(label,
+                inst.result.accept(this),
+                inst.op1.accept(this), ""));
+        nasm.ajouteInst(new NasmMul(null,
+                inst.result.accept(this),
+                inst.op2.accept(this), ""));
+        return null;
+    }
     public NasmOperand visit(C3aInstRead inst){return null;}
-    public NasmOperand visit(C3aInstSub inst){return null;}
+    public NasmOperand visit(C3aInstSub inst){
+        NasmOperand label = (inst.label != null) ?
+                inst.label.accept(this)
+                : null;
+        nasm.ajouteInst(new NasmMov(label,
+                inst.result.accept(this),
+                inst.op1.accept(this), ""));
+        nasm.ajouteInst(new NasmSub(null,
+                inst.result.accept(this),
+                inst.op2.accept(this), ""));
+        return null;
+    }
     public NasmOperand visit(C3aInstAffect inst){return null;}
-    public NasmOperand visit(C3aInstDiv inst){return null;}
-    public NasmOperand visit(C3aInstFEnd inst){return null;}
+    public NasmOperand visit(C3aInstDiv inst){
+        NasmOperand label = (inst.label != null) ?
+            inst.label.accept(this)
+            : null;
+        nasm.ajouteInst(new NasmMov(label,
+                inst.result.accept(this),
+                inst.op1.accept(this), ""));
+        nasm.ajouteInst(new NasmDiv(null,
+                inst.result.accept(this),
+                 ""));
+        return null;
+    }
+    public NasmOperand visit(C3aInstFEnd inst){
+
+        return null;
+    }
     public NasmOperand visit(C3aInstJumpIfEqual inst){return null;}
     public NasmOperand visit(C3aInstJumpIfNotEqual inst){return null;}
     public NasmOperand visit(C3aInstJump inst){return null;}
     public NasmOperand visit(C3aInstParam inst){return null;}
     public NasmOperand visit(C3aInstReturn inst){return null;}
-    public NasmOperand visit(C3aInstWrite inst){return null;}
-    public NasmOperand visit(C3aInstStop inst){return null;}
+    public NasmOperand visit(C3aInstWrite inst){
+
+        return null;
+    }
+    public NasmOperand visit(C3aInstStop inst){
+
+        return null;
+    }
 
     public NasmOperand visit(C3aConstant oper){return null;}
     public NasmOperand visit(C3aBooleanConstant oper){return null;}
     public NasmOperand visit(C3aLabel oper){return null;}
-    public NasmOperand visit(C3aTemp oper){return null;}
+    public NasmOperand visit(C3aTemp oper){
+        return null;
+    }
     public NasmOperand visit(C3aVar oper){return null;}
     public NasmOperand visit(C3aFunction oper){return null;}