From 11d4688d8bec78efc5aee1a668ea0ba8193e5ec2 Mon Sep 17 00:00:00 2001 From: kdx Date: Sat, 10 Jun 2023 16:27:33 +0200 Subject: helloworld broken --- run.sh | 6 ++++++ samples/helloworld.golem | 39 +++++++++++++++++++++++++++++++++++++++ src/main.c | 2 +- testing.sh | 3 ++- 4 files changed, 48 insertions(+), 2 deletions(-) create mode 100755 run.sh create mode 100644 samples/helloworld.golem diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..fefffa3 --- /dev/null +++ b/run.sh @@ -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; + } +} diff --git a/src/main.c b/src/main.c index a256143..7829547 100644 --- a/src/main.c +++ b/src/main.c @@ -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: diff --git a/testing.sh b/testing.sh index f50354f..b05785e 100755 --- a/testing.sh +++ b/testing.sh @@ -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.* -- cgit v1.2.3