head_addr
This commit is contained in:
parent
c3e44e2bf8
commit
80d127788e
|
|
@ -24,7 +24,7 @@ eq_offset(C),
|
||||||
add(6, 6, 1),
|
add(6, 6, 1),
|
||||||
label(C),
|
label(C),
|
||||||
load_word(3, 5, 0),
|
load_word(3, 5, 0),
|
||||||
mov(1,6),
|
mov(1, 6),
|
||||||
asr_imm(6, 3, 30),
|
asr_imm(6, 3, 30),
|
||||||
and_imm(6, 6, 2),
|
and_imm(6, 6, 2),
|
||||||
sub_imm(6, 6, 2),
|
sub_imm(6, 6, 2),
|
||||||
|
|
@ -50,7 +50,8 @@ label(G),
|
||||||
store_word(2, 0, 0),
|
store_word(2, 0, 0),
|
||||||
do_offset(H),
|
do_offset(H),
|
||||||
label(I),
|
label(I),
|
||||||
do_offset(I),label(J),
|
do_offset(I),
|
||||||
|
label(J),
|
||||||
symbol(J),
|
symbol(J),
|
||||||
lsl_imm(6, 2, 2),
|
lsl_imm(6, 2, 2),
|
||||||
asr_imm(6, 6, 17),
|
asr_imm(6, 6, 17),
|
||||||
|
|
@ -102,4 +103,4 @@ lsl_imm(5, 2, 2),
|
||||||
asr_imm(5, 5, 17),
|
asr_imm(5, 5, 17),
|
||||||
do_offset(D),
|
do_offset(D),
|
||||||
label(S),
|
label(S),
|
||||||
expr_cell(R, 0)].
|
expr_cell(R, 0)].
|
||||||
|
|
|
||||||
|
|
@ -109,12 +109,8 @@ Mark II
|
||||||
chain_link(TOS, TEMP3),
|
chain_link(TOS, TEMP3),
|
||||||
jump(Done), % Rely on mainloop::Done to write TOS to RAM.
|
jump(Done), % Rely on mainloop::Done to write TOS to RAM.
|
||||||
|
|
||||||
definition(Dup)
|
definition(Dup),
|
||||||
]),[
|
head_addr(TOS, TermAddr),
|
||||||
% TermAddr := TOS << 2 >> 17
|
|
||||||
lsl_imm(TermAddr, TOS, 2),
|
|
||||||
asr_imm(TermAddr, TermAddr, 17)
|
|
||||||
],⟐([
|
|
||||||
jump(PUSH)
|
jump(PUSH)
|
||||||
]),[
|
]),[
|
||||||
label(Expression),
|
label(Expression),
|
||||||
|
|
@ -187,6 +183,8 @@ language.
|
||||||
|
|
||||||
⟐(definition(Name)) --> [label(Name), symbol(Name)].
|
⟐(definition(Name)) --> [label(Name), symbol(Name)].
|
||||||
|
|
||||||
|
⟐(head_addr(Pair, HeadAddr)) --> [lsl_imm(HeadAddr, Pair, 2), asr_imm(HeadAddr, HeadAddr, 17)].
|
||||||
|
|
||||||
|
|
||||||
do :-
|
do :-
|
||||||
compile_program(Binary),
|
compile_program(Binary),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue