diff options
author | kdx <kikoodx@paranoici.org> | 2023-06-10 16:27:33 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-06-10 16:27:33 +0200 |
commit | 11d4688d8bec78efc5aee1a668ea0ba8193e5ec2 (patch) | |
tree | a6b41ed5877ae5af25ccd9153683c73222723fe3 | |
parent | 37d470da243a2165d28b8a807ce940cb27b2c321 (diff) | |
download | golem-11d4688d8bec78efc5aee1a668ea0ba8193e5ec2.tar.gz |
helloworld broken
-rwxr-xr-x | run.sh | 6 | ||||
-rw-r--r-- | samples/helloworld.golem | 39 | ||||
-rw-r--r-- | src/main.c | 2 | ||||
-rwxr-xr-x | testing.sh | 3 |
4 files changed, 48 insertions, 2 deletions
@@ -0,0 +1,6 @@ +#!/bin/sh +tup -q || exit 1 +./build/golem "$1" >build/tmp.orgaasm || exit 1 +orgaasm build/tmp.orgaasm build/tmp.rom || exit 1 +orgaemu build/tmp.rom +#rm -f build/tmp.* diff --git a/samples/helloworld.golem b/samples/helloworld.golem new file mode 100644 index 0000000..5ddde54 --- /dev/null +++ b/samples/helloworld.golem @@ -0,0 +1,39 @@ +global str[32]; + +main() { + strappend('H'); + strappend('e'); + strappend('l'); + strappend('l'); + strappend('o'); + strappend(' '); + strappend('W'); + strappend('o'); + strappend('r'); + strappend('l'); + strappend('d'); + strappend('!'); + strappend('\n'); + + print(str); +} + +strappend(c) { + local s; + s = str; + loop { + if ([s] == 0) + break; + s = s + 1; + } + [s] = c; +} + +print(s) { + loop { + if ([s] == 0) + break; + wrt [s]; + s = s + 1; + } +} @@ -814,7 +814,7 @@ gen_stmt(Node *node, Node *fname, int break_lbl) break; case NOD_EXPR_STMT: gen_expr(node->lhs); - printf("\tPOP ( discard stack )\n"); + printf("\tPOP\n"); depth -= 1; break; case NOD_RETURN_STMT: @@ -12,7 +12,7 @@ function test() { [ "$QUIET" != "-q" ] && echo "" } -tup || exit 1 +tup -q || exit 1 test "$1" "main(){5 + 2; return 4;}" test "$1" "main(){6 + 3;}" test "$1" "main(){'a' - 'b';}" @@ -33,4 +33,5 @@ test "$1" "global a[5] = 4; main() { wrt([a + 1] + '0'); wrt '\n'; }" test "$1" "global a[5] = 4; main() { wrt([a + 4] + '0'); wrt '\n'; }" test "$1" "global a[5] = 4; main() { wrt([a + 5] + '0'); wrt '\n'; }" test "$1" "global a[3]; main() { [a] = 'U'; [a+1] = 'w'; [a+2] = '\n'; wrt[a]; wrt[a+1]; wrt[a]; wrt[a+2]; }" +test "$1" "main() { wrt('0' + div(6, 3)); wrt('\n'); } div(a, b) { return a / b; }" rm -f build/tmp.* |