OSDN Git Service

That works nicely, again.
authorSimon Forman <sforman@hushmail.com>
Sat, 9 Nov 2019 21:42:14 +0000 (13:42 -0800)
committerSimon Forman <sforman@hushmail.com>
Sat, 9 Nov 2019 21:42:14 +0000 (13:42 -0800)
thun/compiler.markII.pl
thun/joy_asmii.bin [new file with mode: 0644]

index 11e6f68..eed8062 100644 (file)
@@ -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 (file)
index 0000000..ae95e03
Binary files /dev/null and b/thun/joy_asmii.bin differ