nooc

Unnamed repository; edit this file 'description' to name the repository.
git clone git://git.nihaljere.xyz/nooc
Log | Files | Refs | LICENSE

commit 7a2e10d6ed168efdf98360ba6b7149a6b3a2589d
parent 60bd5daa03ca455e1ad8ea3f37124a95463935f6
Author: Nihal Jere <nihal@nihaljere.xyz>
Date:   Fri,  3 Dec 2021 20:42:17 -0600

correct jump offset when exiting if

Diffstat:
Mmain.c | 2+-
Mprog.nc | 2+-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/main.c b/main.c @@ -530,7 +530,7 @@ genblock(char *buf, struct block *block) assert(binary->kind == EXPR_BINARY); enum reg reg = getreg(); total += genexpr(buf ? buf + total : NULL, expr.d.cond.cond, reg); - size_t iflen = genblock(NULL, &expr.d.cond.bif); + size_t iflen = genblock(NULL, &expr.d.cond.bif) + jmp(NULL, 0); size_t elselen = genblock(NULL, &expr.d.cond.belse); switch (binary->d.op) { case OP_GREATER: diff --git a/prog.nc b/prog.nc @@ -1,6 +1,6 @@ exit i64 = 60 write i64 = 1 -if > 1 0 { +if > 0 1 { syscall(write, 0, "hello", 5) } else { syscall(write, 0, "world", 5)