Mercurial > lcfOS
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 +