summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkdx <kikoodx@paranoici.org>2023-06-10 17:40:16 +0200
committerkdx <kikoodx@paranoici.org>2023-06-10 17:40:16 +0200
commit5e9f115e2d938a47a3d3db42188b837d4b57891a (patch)
treecf26c1ab4992b77961c10fce0e82fce0b057643b
parent11d4688d8bec78efc5aee1a668ea0ba8193e5ec2 (diff)
downloadgolem-5e9f115e2d938a47a3d3db42188b837d4b57891a.tar.gz
that was kinda stupid
-rwxr-xr-xrun.sh2
-rw-r--r--samples/helloworld.golem21
-rw-r--r--src/main.c3
3 files changed, 15 insertions, 11 deletions
diff --git a/run.sh b/run.sh
index fefffa3..614342f 100755
--- a/run.sh
+++ b/run.sh
@@ -1,6 +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
+orgaasm build/tmp.orgaasm build/tmp.rom -v || exit 1
orgaemu build/tmp.rom
#rm -f build/tmp.*
diff --git a/samples/helloworld.golem b/samples/helloworld.golem
index 5ddde54..6609a51 100644
--- a/samples/helloworld.golem
+++ b/samples/helloworld.golem
@@ -1,6 +1,9 @@
global str[32];
+global str_i = 0;
main() {
+ local i;
+
strappend('H');
strappend('e');
strappend('l');
@@ -15,18 +18,18 @@ main() {
strappend('!');
strappend('\n');
- print(str);
-}
-
-strappend(c) {
- local s;
- s = str;
+ i = 0;
loop {
- if ([s] == 0)
+ i = i + 1;
+ if (i > 9)
break;
- s = s + 1;
+ print(str);
}
- [s] = c;
+}
+
+strappend(c) {
+ [str+str_i] = c;
+ str_i = str_i + 1;
}
print(s) {
diff --git a/src/main.c b/src/main.c
index 7829547..3dff1fe 100644
--- a/src/main.c
+++ b/src/main.c
@@ -975,7 +975,8 @@ main(int argc, char **argv)
Node *node = parse(tok);
- printf("\tJMP ,__fn_main ( entry point )\n");
+ printf("\tJRT ,__fn_main ( entry point )\n");
+ printf("\tRET\n");
codegen(node);
printf("@__stack_ptr\n");