From b1ac55a15f2b8dc1313a9c197fccea71737d1e75 Mon Sep 17 00:00:00 2001 From: FrankWPA Date: Thu, 28 Apr 2022 20:58:26 -0400 Subject: [PATCH] Improve while loops in code generation --- 4orth.porth | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/4orth.porth b/4orth.porth index fb9ed1f..2cc372d 100644 --- a/4orth.porth +++ b/4orth.porth @@ -130,7 +130,7 @@ in else type OP_ELSE = if* " else" bfd bputs else type OP_END_WHILE = if* - " br $" bfd bputs operand 1 + bfd bputu + " br $while" bfd bputs operand 1 + bfd bputu " end" bfd bputs " end" bfd bputs else type OP_END_IF = if* @@ -141,12 +141,10 @@ in " end" bfd bputs else type OP_WHILE = if* - " block $while" bfd bputs - " loop $" bfd bputs operand bfd bputu + " loop $while" bfd bputs operand bfd bputu else type OP_DO = if* " call $pop" bfd bputs - " i32.eqz" bfd bputs - " br_if $while" bfd bputs + " if" bfd bputs else type OP_PREP_PROC = if* op Op.token ptr+ Token.text ptr+ @Str proc-lookup-by-name dup Proc.name ptr+ let prok name in @@ -518,7 +516,7 @@ in 1 exit end - "\n\n(global $RETURN_STACK_TOP (mut i32) (i32.const 0))" bfd bputs + "\n(global $RETURN_STACK_TOP (mut i32) (i32.const 0))" bfd bputs "\n(global $DATA_STACK_TOP (mut i32) (i32.const 0))" bfd bputs "\n(global $RETURN_STACK i32 (i32.const " bfd bputs wat-porth-return-stack @int bfd bputu "))" bfd bputs "\n(global $DATA_STACK i32 (i32.const " bfd bputs wat-porth-data-stack bfd bputu "))\n\n" bfd bputs