diff python/ppci/core/asmwriter.py @ 107:1544e7a4aa98

Improvements
author Windel Bouwman
date Tue, 01 Jan 2013 17:16:05 +0100
parents
children 9e552d34bd60
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/python/ppci/core/asmwriter.py	Tue Jan 01 17:16:05 2013 +0100
@@ -0,0 +1,40 @@
+
+from . import llvmtype
+#typeNames[VoidType] = 'void'
+
+class AsmWriter:
+   def __init__(self):
+      self.typeNames = {}
+      self.typeNames[llvmtype.typeID.Void] = 'void'
+   def printModule(self, module):
+      if module.Identifier:
+         print('; ModuleID = {0}'.format(module.Identifier))
+      # 
+      # Print functions:
+      for f in module.Functions:
+         self.printFunction(f)
+   def printFunction(self, f):
+      # TODO: if definition:
+
+      t = self.strType(f.ReturnType.tid)
+      args = '()'
+      print('define {0} {1}{2}'.format(t, f.name, args))
+      print('{')
+
+      for bb in f.BasicBlocks:
+         print(bb)
+
+      print('}')
+
+   def strType(self, t):
+      return self.typeNames[t]
+      
+   def printBasicBlock(self, bb):
+      if bb.Name:
+         # print label
+         print('{0}:'.format(bb.Name))
+      for instr in bb.Instructions:
+         self.printInstruction(instr)
+   def printInstruction(self, i):
+      pass
+