annotate testc.rhope @ 75:0083b2f7b3c7

Partially working implementation of List. Modified build scripts to allow use of other compilers. Fixed some bugs involving method implementations on different types returning different numbers of outputs. Added Fold to the 'builtins' in the comipler.
author Mike Pavone <pavone@retrodev.com>
date Tue, 06 Jul 2010 07:52:59 -0400
parents 90c20dc3f4e5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1 Import cbackend.rhope
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 Main[]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 {
19
90c20dc3f4e5 Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
5 prog <- C Program[]
90c20dc3f4e5 Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
6 base <- [[[[[[[prog]Create Function["Fib",("n"),("out"),""]
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 ]Allocate Var["work1", "Any Type"]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 ]Allocate Var["work2", "Any Type"]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 ]Null["out"]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 ]Method Call["<", [[()]Append[AddRef["n"]]]Append[AddRef[Constant["const_2"]]]]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 ]Move[Result[0], "work1"]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 ]Method Call["If", [()]Append["work1"]]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 {Print["base done"] }
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 stream1 <- [[[base]Instruction Stream
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 ]Release[Result[0]]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 ]Move[AddRef[Constant["const_1"]], "out"]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 {Print["stream1 done"]}
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
19
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
20 stream3 <- [[[base]Instruction Stream
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
21 ]Release["n"]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
22 ]Tail Method Call["+", ("work1","work2")]
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
24 stream2 <- [[[[[[[[[[[base]Instruction Stream
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 ]Release[Result[0]]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 ]Method Call["-", [[()]Append[AddRef["n"]]]Append[AddRef[Constant["const_1"]]]]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 ]Move[Result[0], "work1"]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 ]Method Call["-", [[()]Append[AddRef["n"]]]Append[AddRef[Constant["const_2"]]]]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 ]Move[Result[0], "work2"]
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
30 ]Call["Fib", ("work1")]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
31 ]Move[Result[0], "work1"]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
32 ]Call["Fib", ("work2")]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
33 ]Move[Result[0], "work2"]
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
34 ]Do If[NotCond["out"], stream3]
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 {Print["stream2 done"]}
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
37 func <- [[[base
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 ]Do If[Result[0], stream1]
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 ]Do If[Result[1], stream2]
18
ea991f95ae1f C backend working well enough to generate Fib test
Mike Pavone <pavone@retrodev.com>
parents: 14
diff changeset
40 ]Release["n"]
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41 {Print["func done"] }
19
90c20dc3f4e5 Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
42
90c20dc3f4e5 Initial work on compiling dataflow graphs to a backend
Mike Pavone <pavone@retrodev.com>
parents: 18
diff changeset
43 Print[[[prog]Store Function[func]]Text]
14
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
44
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
45 }
69dfca29565f C backend close to being useable
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46