Mercurial > repos > rhope
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 |
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 |