From 20d4c1b0088e58f23ff7c9b8a6c69825e2fc926f Mon Sep 17 00:00:00 2001
From: Xun Yang <x299yang@uwaterloo.ca>
Date: Sun, 12 Apr 2020 11:49:01 -0400
Subject: [PATCH] assignNode, fix nameNode addr

---
 ExprPrimaryNodes.py | 13 +++++++++----
 codeGenNodes.py     |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/ExprPrimaryNodes.py b/ExprPrimaryNodes.py
index 8b9239d..6f74859 100644
--- a/ExprPrimaryNodes.py
+++ b/ExprPrimaryNodes.py
@@ -247,13 +247,18 @@ class AssignNode(ASTNode):
         self.outMaybe = inMaybe
 
     def codeGen(self):
+        self.code = ""
+        self.code +=("; Evaluate right of assignment\n")
         self.right.codeGen()
         self.code = self.right.code
+        self.code += p("push", "eax")
+
+        self.code +=("; Evaluate left of assignment\n")
+        self.code += self.left.addr()
 
-        if self.left.__class__.__name__ == "NameNode":
-            if self.left.prefixLink.__class__.__name__ == "VarDclNode":
-                # move init result to var location
-                self.code += p("mov", "[ebp - " + str(self.left.prefixLink.offset) + "]", "eax")
+        self.code += p("pop", "ebx")
+        self.code += p("mov", "[eax]", "ebx")
+        self.code += ("; End of assignment\n")
 
 
 ##################################################################################
diff --git a/codeGenNodes.py b/codeGenNodes.py
index f4a3008..e911b6d 100644
--- a/codeGenNodes.py
+++ b/codeGenNodes.py
@@ -50,5 +50,5 @@ class genNameNode():
             else:
                 # object will already be in eax
                 result += p("call", "H__Null_Check")
-                self.code += p("add", "eax", self.nodeLink.offset)
+                result += p("add", "eax", self.nodeLink.offset)
         return result
-- 
GitLab