Mercurial > lcfOS
view python/ir/instruction.py @ 157:8f3924b6076e
Added some code generator things
author | Windel Bouwman |
---|---|
date | Sun, 03 Mar 2013 18:14:35 +0100 |
parents | b28a11c01dbe |
children | 9683a4cd848f |
line wrap: on
line source
def Enum(**enums): return type('Enum', (), enums) class Instruction: """ Base class for all instructions. """ pass class CallInstruction(Instruction): def __init__(self, callee, arguments): super().__init__() self.callee = callee self.arguments = arguments BinOps = Enum(Add=1, Sub=2, Mul=3) class BinaryOperator(Instruction): def __init__(self, operation, value1, value2): assert value1 assert value2 #print('operation is in binops:', operation in BinOps) # Check types of the two operands: self.value1 = value1 self.value2 = value2 self.operation = operation class AddInstruction(BinaryOperator): def __init__(self, a, b): super().__init__('add', a, b) class ImmLoadInstruction(Instruction): def __init__(self, value): self.value = value