From 3c0b034ee902432baed7030cc65cb2443a846600 Mon Sep 17 00:00:00 2001 From: kdx Date: Sun, 18 Jun 2023 17:50:15 +0200 Subject: local init accepts any expr --- samples/malloc.golem | 18 ++++++------------ src/main.c | 3 ++- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/samples/malloc.golem b/samples/malloc.golem index a52d51e..1a3b1a9 100644 --- a/samples/malloc.golem +++ b/samples/malloc.golem @@ -1,8 +1,7 @@ main() => nopipe() |> pipe(); nopipe() { - local s; - s = strdup("yo comment cava\n"); + local s = strdup("yo comment cava\n"); write(s); stoupper(s); write(s); @@ -11,8 +10,7 @@ nopipe() { pipe() => strdup("coucou le monde\n") |> write() |> stoupper() |> write(); write(s) { - local o; - o = s; + local o = s; loop { if ([s] == 0) return o; @@ -22,8 +20,7 @@ write(s) { } strlen(s) { - local len; - len = 0; + local len = 0; loop { if ([s + len] == 0) return len; @@ -36,8 +33,7 @@ strdup(s) { } strcpy(dst, src) { - local i; - i = 0; + local i = 0; loop { [dst + i] = [src + i]; if ([src + i] == 0) @@ -47,8 +43,7 @@ strcpy(dst, src) { } stoupper(s) { - local o; - o = s; + local o = s; loop { if ([s] == 0) return o; @@ -61,8 +56,7 @@ define HEAP_SIZE = 4096; global heap[HEAP_SIZE] = 0x69; global heap_size = 0; malloc(n) { - local p; - p = heap + heap_size; + local p = heap + heap_size; heap_size = heap_size + n; if (heap_size > 4096) { write("malloc error: heap is full"); diff --git a/src/main.c b/src/main.c index 1445c4e..f235c54 100644 --- a/src/main.c +++ b/src/main.c @@ -1069,12 +1069,13 @@ gen_localdec(Node *node) return; const int found = node_find(locals, node->lhs); - printf("\tLIT %04x\n", const_expr(node->rhs)); + gen_expr(node->rhs); printf("\tLIT ,__stack_ptr LDA\n"); if (locals_size - found - 1) printf("\tLIT %04x SUB\n", locals_size - found - 1); printf("\tSTA\n"); + depth -= 1; } static void -- cgit v1.2.3