annotate python/irmach.py @ 274:ea93e0a7a31e

Move docs
author Windel Bouwman
date Wed, 04 Sep 2013 17:35:06 +0200
parents cdc76d183bcc
children 6f2423df0675
rev   line source
261
444b9df2ed99 try to split up code generation
Windel Bouwman
parents:
diff changeset
1
269
5f8c04a8d26b Towards better modularity
Windel Bouwman
parents: 268
diff changeset
2 """
270
cdc76d183bcc first register allocator
Windel Bouwman
parents: 269
diff changeset
3 Abstract assembly language instructions.
cdc76d183bcc first register allocator
Windel Bouwman
parents: 269
diff changeset
4
cdc76d183bcc first register allocator
Windel Bouwman
parents: 269
diff changeset
5 This is the second intermediate representation.
cdc76d183bcc first register allocator
Windel Bouwman
parents: 269
diff changeset
6
cdc76d183bcc first register allocator
Windel Bouwman
parents: 269
diff changeset
7 Instructions are selected and scheduled at this stage.
269
5f8c04a8d26b Towards better modularity
Windel Bouwman
parents: 268
diff changeset
8 """
261
444b9df2ed99 try to split up code generation
Windel Bouwman
parents:
diff changeset
9
274
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
10 class Frame:
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
11 """
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
12 Activation record abstraction. This class contains a flattened
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
13 function. Instructions are selected and scheduled at this stage.
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
14 Frames differ per machine.
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
15 """
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
16 def __init__(self, name):
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
17 self.name = name
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
18 self.instructions = []
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
19
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
20 def __repr__(self):
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
21 return 'Frame'
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
22
261
444b9df2ed99 try to split up code generation
Windel Bouwman
parents:
diff changeset
23
268
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
24 class AbstractInstruction:
274
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
25 """
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
26 Abstract machine instruction class. This is a very simple
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
27 abstraction of machine instructions.
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
28 """
268
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
29 def __init__(self, assem, src=(), dst=(), jumps=()):
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
30 self.assem = assem
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
31 self.src = tuple(src)
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
32 self.dst = tuple(dst)
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
33 self.jumps = tuple(jumps)
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
34
5ec7580976d9 Op naar tree-IR
Windel Bouwman
parents: 261
diff changeset
35 def __repr__(self):
274
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
36 s = str(self.src) if self.src else ''
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
37 d = str(self.dst) if self.dst else ''
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
38 l = str(self.jumps) if self.jumps else ''
ea93e0a7a31e Move docs
Windel Bouwman
parents: 270
diff changeset
39 return self.assem + s + d + l
261
444b9df2ed99 try to split up code generation
Windel Bouwman
parents:
diff changeset
40
444b9df2ed99 try to split up code generation
Windel Bouwman
parents:
diff changeset
41