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