]>
Commit | Line | Data |
---|---|---|
1 | (* L3 compiler | |
2 | * stringifier | |
3 | * turns a list of x86 insns into the assembly code to generate them | |
4 | * Author: Chris Lu <czl@andrew.cmu.edu> | |
5 | *) | |
6 | ||
7 | signature STRINGIFY = | |
8 | sig | |
9 | type asm = x86.insn list | |
10 | val stringify : (string -> string) -> asm -> string | |
11 | end | |
12 | ||
13 | structure Stringify :> STRINGIFY = | |
14 | struct | |
15 | type asm = x86.insn list | |
16 | structure X = x86 | |
17 | ||
18 | (* val stringify : asm -> string | |
19 | * turns a x86 instruction list into a string of assembly code for these instructions *) | |
20 | ||
21 | fun stringify' rn (X.CALL (l, n)) = X.prettyprint X.Long (X.CALL ((Symbol.symbol (rn (Symbol.name l))), n)) | |
22 | | stringify' rn x = X.prettyprint X.Long x | |
23 | ||
24 | (* val stringify : asm -> string *) | |
25 | fun stringify realname l = foldr (fn (a,b) => (stringify' realname a) ^ b) ("") l | |
26 | ||
27 | end |