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