|
|
1.1 root 1: (* Copyright 1989 by AT&T Bell Laboratories *)
2: structure MipsAC : ASSEMBLER = struct
3: val diag_out = ref std_out
4: structure MCN = struct
5: open MipsCoder
6: structure M = struct
7: open M
8: fun comment s = output (!diag_out) s
9: end
10: end
11:
12: structure CM = MipsCM(MCN)
13:
14: structure Gen = CPScomp(CM)
15: fun generate (lexp, stream) = (
16: diag_out := stream;
17: Gen.compile lexp;
18: MipsCoder.codestats stream;
19: Emitters.address := 0;
20: MipsCoder.codegen (Emitters.MipsAsm stream);
21: ())
22: end
23:
24: structure MipsCodeStats : ASSEMBLER = struct
25: val diag_out = ref std_out
26: structure MCN = MipsCoder
27:
28: structure CM = MipsCM(MCN)
29:
30: structure Gen = CPScomp(CM)
31: fun generate (lexp, stream) = (
32: Gen.compile lexp;
33: MipsCoder.codestats stream;
34: ())
35: end
36:
37: structure MipsMCBig : CODEGENERATOR = struct
38: structure CM = MipsCM(MipsCoder)
39: structure Gen = CPScomp(CM)
40:
41: fun generate lexp = (
42: Gen.compile lexp;
43: MipsCoder.codegen (Emitters.BigEndian);
44: Emitters.emitted_string ()
45: )
46: end
47:
48: structure MipsMCLittle : CODEGENERATOR = struct
49: structure CM = MipsCM(MipsCoder)
50: structure Gen = CPScomp(CM)
51: fun diag (s : string) f x =
52: f x handle e =>
53: (print "?exception "; print (System.exn_name e);
54: print " in mipsglue."; print s; print "\n";
55: raise e)
56:
57: fun generate lexp = (
58: diag "Gen.compile" Gen.compile lexp;
59: diag "MipsCoder.codegen" MipsCoder.codegen (Emitters.LittleEndian);
60: diag "Emitters.emitted_string" Emitters.emitted_string ()
61: )
62: end
63:
64:
65: structure CompMipsLittle = Batch(structure M=MipsMCLittle and A=MipsAC)
66: structure IntMipsLittle = IntShare(MipsMCLittle)
67:
68: structure CompMipsBig = Batch(structure M=MipsMCBig and A=MipsAC)
69: structure IntMipsBig = IntShare(MipsMCBig)
70:
71: structure CompMipsStats = Batch(structure M=MipsMCLittle and A=MipsCodeStats)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.