diff --git a/thun/compiler.markII.pl b/thun/compiler.markII.pl index 11e6f68..eed8062 100644 --- a/thun/compiler.markII.pl +++ b/thun/compiler.markII.pl @@ -44,14 +44,12 @@ Mark II mov_imm(TERM, 0), store_word(TOS, SP, 0), % RAM[SP] := 0 - label(Main), + label(Main)], - % if_zero(EXPR_addr, HALT), - sub_imm(EXPR_addr, EXPR_addr, 0), - eq_offset(HALT), + ⟐(if_zero(EXPR_addr, HALT)), % deref(EXPR_addr, EXPR), - load_word(EXPR, EXPR_addr, 0), % Load expr pair record into EXPR + [load_word(EXPR, EXPR_addr, 0), % Load expr pair record into EXPR % At this point EXPR holds the record word of the expression. @@ -195,6 +193,8 @@ language. ⟐([]) --> []. ⟐([Term|Terms]) --> ⟐(Term), ⟐(Terms). +⟐(if_zero(Reg, Label)) --> [sub_imm(Reg, Reg, 0), eq_offset(Label)]. + do :- compile_program(Binary), diff --git a/thun/joy_asmii.bin b/thun/joy_asmii.bin new file mode 100644 index 0000000..ae95e03 Binary files /dev/null and b/thun/joy_asmii.bin differ