summaryrefslogtreecommitdiffstats
path: root/src/back/generator.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/back/generator.py')
-rw-r--r--src/back/generator.py13
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: