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:
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)