diff options
author | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2016-02-23 18:28:28 -0500 |
---|---|---|
committer | Quentin Carbonneaux <quentin.carbonneaux@yale.edu> | 2016-02-23 18:28:28 -0500 |
commit | 400a8c70f9b4525615497481a405cb78fffe194f (patch) | |
tree | fab5db711914049738e35aded39bb4ed1bb145d0 | |
parent | 47304da8357f0e0e460f1e4fa4987ba2f1064254 (diff) | |
download | roux-400a8c70f9b4525615497481a405cb78fffe194f.tar.gz |
add fun example, does not compile yet
-rw-r--r-- | lisc/test/dark.ssa | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lisc/test/dark.ssa b/lisc/test/dark.ssa new file mode 100644 index 0000000..0448fae --- /dev/null +++ b/lisc/test/dark.ssa @@ -0,0 +1,24 @@ +# a hack example, +# we use a dark type to get +# a pointer to the stack. + +type :magic = align 1 { 0 } + +data $ret = { l 0 } + +function $test(:magic %p) { +@start + %av =w loadw $a + %a1 =w add 1, %av + storew %a1, $a # increment $a + %r1 =l loadl $ret # fetch from $ret + %p1 =l sub %p, 8 + %r2 =l loadl %p1 # get the return address + storel %r2, $ret # store it in $ret + %c =w ceql %r1, %r2 + jnz %c, @fin, @cal +@cal + %i =w call $test() # no argument given, intentionally! +@fin + ret +} |