diff options
Diffstat (limited to '')
-rw-r--r-- | src/back/generator.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/back/generator.py b/src/back/generator.py index 7ca2658..1ae403f 100644 --- a/src/back/generator.py +++ b/src/back/generator.py @@ -52,12 +52,7 @@ class Generator(object): Register().get_registers(name).reverse() self.emit("ADD sp, r0, bp") self.emit("POP bp") - if name == "main": - self.emit("PUSH rv") - self.emit("PUSH r0") - self.emit("SYS") - else: - self.emit("RET") + self.emit("RET") def generate(self): # pass 1 - generate non-label ops @@ -98,6 +93,10 @@ class Generator(object): self.emit("SYS") self.emit("POP r0") self.emit("POP r0") + elif tac.op == Op.SYS: + self.emit("SYS") + else: + raise Exception("%s is not a valid TAC operator" % tac.op) elif isinstance(tac, FunctionPrologue): self.generate_prologue(tac.name) elif isinstance(tac, FunctionEpilogue): @@ -105,7 +104,7 @@ class Generator(object): elif isinstance(tac, Label): self.emit(Label(tac.name)) else: - raise Exception("%s is not a valid TACList element", repr(tac)) + raise Exception("%s is not a valid TACList element" % repr(tac)) # pass 2 - generate label ops for op in self.__op_list: |