head_addr
This commit is contained in:
parent
c3e44e2bf8
commit
80d127788e
|
|
@ -24,7 +24,7 @@ eq_offset(C),
|
|||
add(6, 6, 1),
|
||||
label(C),
|
||||
load_word(3, 5, 0),
|
||||
mov(1,6),
|
||||
mov(1, 6),
|
||||
asr_imm(6, 3, 30),
|
||||
and_imm(6, 6, 2),
|
||||
sub_imm(6, 6, 2),
|
||||
|
|
@ -50,7 +50,8 @@ label(G),
|
|||
store_word(2, 0, 0),
|
||||
do_offset(H),
|
||||
label(I),
|
||||
do_offset(I),label(J),
|
||||
do_offset(I),
|
||||
label(J),
|
||||
symbol(J),
|
||||
lsl_imm(6, 2, 2),
|
||||
asr_imm(6, 6, 17),
|
||||
|
|
@ -102,4 +103,4 @@ lsl_imm(5, 2, 2),
|
|||
asr_imm(5, 5, 17),
|
||||
do_offset(D),
|
||||
label(S),
|
||||
expr_cell(R, 0)].
|
||||
expr_cell(R, 0)].
|
||||
|
|
|
|||
|
|
@ -109,12 +109,8 @@ Mark II
|
|||
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),
|
||||
|
|
@ -187,6 +183,8 @@ language.
|
|||
|
||||
⟐(definition(Name)) --> [label(Name), symbol(Name)].
|
||||
|
||||
⟐(head_addr(Pair, HeadAddr)) --> [lsl_imm(HeadAddr, Pair, 2), asr_imm(HeadAddr, HeadAddr, 17)].
|
||||
|
||||
|
||||
do :-
|
||||
compile_program(Binary),
|
||||
|
|
|
|||
Loading…
Reference in New Issue