summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-06-10 16:27:33 +0200
committerkdx <kikoodx@paranoici.org>2023-06-10 16:27:33 +0200
commit11d4688d8bec78efc5aee1a668ea0ba8193e5ec2 (patch)
treea6b41ed5877ae5af25ccd9153683c73222723fe3
parent37d470da243a2165d28b8a807ce940cb27b2c321 (diff)
downloadgolem-11d4688d8bec78efc5aee1a668ea0ba8193e5ec2.tar.gz
helloworld broken
-rwxr-xr-xrun.sh6
-rw-r--r--samples/helloworld.golem39
-rw-r--r--src/main.c2
-rwxr-xr-xtesting.sh3
4 files changed, 48 insertions, 2 deletions
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.*