diff --git a/src/Compiler.java b/src/Compiler.java
index 977291c20b801df28092d91b73c151a89a0e55aa..fbfbcb7db25373549d5426420d311d3836bc4a74 100644
--- a/src/Compiler.java
+++ b/src/Compiler.java
@@ -48,9 +48,10 @@ public class Compiler
buildFg();
System.out.println("[SOLVE FLOW GRAPH]");
solveFg();
- /*
+
System.out.println("[BUILD INTERFERENCE GRAPH] ");
buildIg();
+ /*
System.out.println("[ALLOCATE REGISTERS]");
interferenceGraph.allocateRegisters();
System.out.println("[PRINT NASM]");
diff --git a/src/fg/Fg.java b/src/fg/Fg.java
index 849bf13bfb638ae60d7556b00fcb844e247a8f58..9a2c0b9ecad8b562e1768f154be353fbc90d2250 100644
--- a/src/fg/Fg.java
+++ b/src/fg/Fg.java
@@ -97,6 +97,16 @@ public class Fg implements NasmVisitor <Void> {
for (NasmInst nasmInst : list)
if (nasmInst.toString().equals(inst.toString()))
return true;
+
+
+ if (inst instanceof NasmMov) {
+ NasmRegister register = (NasmRegister) inst.destination;
+ return register.color == Nasm.REG_EDX;
+ }
+
+
+
+
return false;
}
diff --git a/src/fg/FgSolution.java b/src/fg/FgSolution.java
index b24fa94fa970a6adf913b9788bf6068f8bca888b..0ca067476c3f31d0d932eb36f72489f0977e4dcc 100644
--- a/src/fg/FgSolution.java
+++ b/src/fg/FgSolution.java
@@ -90,7 +90,7 @@ public class FgSolution{
break;
}
-
+ affiche("big caca");
}
diff --git a/src/ig/Ig.java b/src/ig/Ig.java
index eaf4886ff148177147648092d82af66a28a03af4..8953e3cedca0c7a49a183e560779e291df3d3db9 100644
--- a/src/ig/Ig.java
+++ b/src/ig/Ig.java
@@ -25,6 +25,30 @@ public class Ig {
}
public void build(){
+ for (NasmInst inst : fgs.in.keySet()) {
+ IntSet set = fgs.in.get(inst);
+ System.out.println(set);
+ List<Node> nodes = new ArrayList<>();
+ for (int i = 0; i < set.getSize(); i ++) {
+ if (set.isMember(i)) {
+ if (int2Node[i]==null)
+ int2Node[i] = graph.newNode();
+ nodes.add(int2Node[i]);
+
+ }
+
+ }
+ for (int i = 0; i < nodes.size(); i++ ) {
+ for (int j = 0; j < nodes.size(); j++) {
+ if (j == i)
+ j++;
+ if (j == nodes.size())
+ break;
+ graph.addEdge(nodes.get(i), nodes.get(j));
+ }
+ }
+ }
+ affiche("ptit caca en vif");
}
public void affiche(String baseFileName){
@@ -45,12 +69,16 @@ public class Ig {
for(int i = 0; i < regNb; i++){
Node n = this.int2Node[i];
- out.print(n + " : ( ");
- for(NodeList q=n.succ(); q!=null; q=q.tail) {
- out.print(q.head.toString());
- out.print(" ");
- }
- out.println(")");
+ System.out.println(n);
+ if (n!=null) {
+ out.print(n + " : ( ");
+ for(NodeList q=n.succ(); q!=null; q=q.tail) {
+ out.print(q.head.toString());
+ out.print(" ");
+ }
+ out.println(")");
+ }
+
}
}
}