view python/codegen.py @ 249:e41e4109addd

Added current position arrow
author Windel Bouwman
date Fri, 26 Jul 2013 20:26:05 +0200
parents 8786811a5a59
children ea93e0a7a31e
line wrap: on
line source

import ir, target
from ppci import CompilerError

class CodeGenerator:
    """ Target independent code generator """
    def __init__(self, tg):
        assert isinstance(tg, target.Target)
        self.tg = tg

    def tryMap(self, ii):
        for mi in self.tg.instructions:
            if mi.irpattern is ii:
                return mi.FromIr(ii)
        raise CompilerError('Cannot map {0}'.format(ii))
        
    def generate(self, ircode):
        assert isinstance(ircode, ir.Module)
        obj = object()
        for gvar in ircode.Variables:
            print(gvar)
            print('TODO')
        for f in ircode.Functions:
            for bb in f.BasicBlocks:
                for ins in bb.Instructions:
                    # Instruction selection:
                    #mi = self.tryMap(ins)
                    pass
        return obj