comparison python/testcg.py @ 272:e64bae57cda8

refactor ir
author Windel Bouwman
date Sat, 31 Aug 2013 17:58:54 +0200
parents 5ec7580976d9
children
comparison
equal deleted inserted replaced
271:cf7d5fb7d9c8 272:e64bae57cda8
6 6
7 def genTestFunction(): 7 def genTestFunction():
8 m = ir.Module('tst') 8 m = ir.Module('tst')
9 f = ir.Function('tst') 9 f = ir.Function('tst')
10 m.addFunction(f) 10 m.addFunction(f)
11 return m, f.entry 11 return m, f, f.entry
12 12
13 13
14 class testCodeGeneration(unittest.TestCase): 14 class testCodeGeneration(unittest.TestCase):
15 def setUp(self): 15 def setUp(self):
16 self.cg = codegen.CodeGenerator(arm.armtarget) 16 self.cg = codegen.CodeGenerator(arm.armtarget)
17 17
18 def testFunction(self): 18 def testFunction(self):
19 m, bb = genTestFunction() 19 m, f, bb = genTestFunction()
20 bb.addInstruction(ir.Const(123)) 20 bb.addInstruction(ir.Const(123))
21 bb.addInstruction(ir.Return(ir.Const(0))) 21 bb.addInstruction(ir.Jump(f.epiloog))
22 m.check() 22 m.check()
23 obj = self.cg.generate(m) 23 obj = self.cg.generate(m)
24 self.assertTrue(obj) 24 self.assertTrue(obj)
25 25
26 26
27 class testArmCodeGeneration(unittest.TestCase): 27 class testArmCodeGeneration(unittest.TestCase):
28 def testStack(self): 28 def testStack(self):
29 s = outstream.OutputStream() 29 s = outstream.OutputStream()
30 cg = codegenarm.ArmCodeGenerator(s) 30 cg = codegenarm.ArmCodeGenerator(s)
31 m, bb = genTestFunction() 31 m, f, bb = genTestFunction()
32 bb.addInstruction(ir.Move(ir.Mem(ir.Const(1)), ir.Const(22))) 32 bb.addInstruction(ir.Move(ir.Mem(ir.Const(1)), ir.Const(22)))
33 bb.addInstruction(ir.Return(ir.Const(0))) 33 bb.addInstruction(ir.Jump(f.epiloog))
34 m.check() 34 m.check()
35 cg.generate(m) 35 cg.generate(m)
36 #s.dump() 36 #s.dump()
37 37
38 38