view python/codegen.py @ 274:ea93e0a7a31e

Move docs
author Windel Bouwman
date Wed, 04 Sep 2013 17:35:06 +0200
parents 8786811a5a59
children 02385f62f250
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.Blocks:
                for ins in bb.Instructions:
                    # Instruction selection:
                    #mi = self.tryMap(ins)
                    pass
        return obj