Mercurial > lcfOS
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 |