Skip to content
Snippets Groups Projects

New new string

Merged Xun Yang requested to merge new-new-string into master
1 file
+ 7
6
Compare changes
  • Side-by-side
  • Inline
+ 7
6
@@ -333,16 +333,13 @@ class AssignNode(ASTNode):
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")
# array assign check
if self.left.__class__.__name__ == "ArrayAccessNode" and (not self.left.myType.isPrimitive):
self.code += "; array assign subtype check\n"
self.left.array.codeGen()
self.code += self.left.array.code
self.code += p("push", "eax")
offset = self.right.myType.typePointer.subTypeOffset
self.code += p("mov", "ebx", "[eax]", "start subtype test") # access class tag of left object
@@ -355,10 +352,14 @@ class AssignNode(ASTNode):
self.code +=("; Evaluate left of assignment\n")
self.code += self.left.addr()
self.code += p("push", "eax")
self.code +=("; Evaluate right of assignment\n")
self.right.codeGen()
self.code += self.right.code
self.code += p("pop", "ebx")
self.code += p("mov", "[eax]", "ebx")
self.code += p("mov", "eax", "ebx") # result of assignment is its own value
self.code += p("mov", "[ebx]", "eax")
self.code += ("; End of assignment\n")
Loading