add(6, 6, 1),\r
label(C),\r
load_word(3, 5, 0),\r
-mov(1,6),\r
+mov(1, 6),\r
asr_imm(6, 3, 30),\r
and_imm(6, 6, 2),\r
sub_imm(6, 6, 2),\r
store_word(2, 0, 0),\r
do_offset(H),\r
label(I),\r
-do_offset(I),label(J),\r
+do_offset(I),\r
+label(J),\r
symbol(J),\r
lsl_imm(6, 2, 2),\r
asr_imm(6, 6, 17),\r
asr_imm(5, 5, 17),\r
do_offset(D),\r
label(S),\r
-expr_cell(R, 0)].
\ No newline at end of file
+expr_cell(R, 0)].\r
chain_link(TOS, TEMP3),
jump(Done), % Rely on mainloop::Done to write TOS to RAM.
- definition(Dup)
-]),[
- % TermAddr := TOS << 2 >> 17
- lsl_imm(TermAddr, TOS, 2),
- asr_imm(TermAddr, TermAddr, 17)
-],⟐([
+ definition(Dup),
+ head_addr(TOS, TermAddr),
jump(PUSH)
]),[
label(Expression),
⟐(definition(Name)) --> [label(Name), symbol(Name)].
+⟐(head_addr(Pair, HeadAddr)) --> [lsl_imm(HeadAddr, Pair, 2), asr_imm(HeadAddr, HeadAddr, 17)].
+
do :-
compile_program(Binary),