Dup.
ANd portray_clause to stablize output logical variable names.
This commit is contained in:
parent
0b210d7754
commit
3126dce307
|
|
@ -1,111 +1,103 @@
|
||||||
[word(0),
|
[word(0),
|
||||||
do_offset(_2170),
|
do_offset(A),
|
||||||
allocate(_2180,20),
|
allocate(_, 20),
|
||||||
label(_2170),
|
label(A),
|
||||||
mov_imm(0,0),
|
mov_imm(0, 0),
|
||||||
store_word(0,0,0),
|
store_word(0, 0, 0),
|
||||||
mov_imm(0,4096),
|
mov_imm(0, 4096),
|
||||||
mov_imm(1,_2242),
|
mov_imm(1, R),
|
||||||
mov_imm(2,0),
|
mov_imm(2, 0),
|
||||||
mov_imm(3,0),
|
mov_imm(3, 0),
|
||||||
store_word(2,0,0),
|
store_word(2, 0, 0),
|
||||||
labelv_imm(3,0),
|
label(F),
|
||||||
store_word(2,0,0),
|
sub_imm(1, 1, 0),
|
||||||
label(_2290),
|
eq_offset(G),
|
||||||
sub_imm(1,1,0),
|
load_word(4, 1, 0),
|
||||||
eq_offset(_2302),
|
lsl_imm(5, 4, 2),
|
||||||
load_word(4,1,0),
|
asr_imm(5, 5, 17),
|
||||||
lsl_imm(5,4,2),
|
eq_offset(B),
|
||||||
asr_imm(5,5,17),
|
add(5, 5, 1),
|
||||||
eq_offset(_24346,4,17),
|
label(B),
|
||||||
asr_imm(6,6,17),
|
lsl_imm(6, 4, 17),
|
||||||
eq_offset(),
|
asr_imm(6, 6, 17),
|
||||||
add(5,5,1),
|
eq_offset(C),
|
||||||
label(_2434),
|
add(6, 6, 1),
|
||||||
lsl_imm(6,4,17),
|
label(C),
|
||||||
asr_imm(6,6,17),
|
load_word(3, 5, 0),
|
||||||
eq_offset(_2502),
|
mov(1,
|
||||||
add(6,6,1),
|
6),
|
||||||
label(_2502),
|
asr_imm(6, 3, 30),
|
||||||
load_word(3,5,0),
|
and_imm(6, 6, 2),
|
||||||
mov(1,6),
|
sub_imm(6, 6, 2),
|
||||||
asr_imm(6,3,t(6,16383),
|
ne_offset(D),
|
||||||
ior_imm(6,6,65535),
|
mov_imm_with_shift(6, 16383),
|
||||||
and(30),
|
ior_imm(6, 6, 65535),
|
||||||
and_imm(6,6,2),
|
and(6, 6, 3),
|
||||||
sub_imm(6,6,2),
|
|
||||||
ne_offset(_2564),
|
|
||||||
mov_imm_with_shift(6,16383),
|
|
||||||
ior_imm(6,6,65535),
|
|
||||||
and(6,6,3),
|
|
||||||
do(6),
|
do(6),
|
||||||
label(_2564),
|
label(D),
|
||||||
sub_imm(0(_2810),
|
sub_imm(0, 0, 4),
|
||||||
store_word(2,0,0),
|
sub(2, 5, 0),
|
||||||
do_offse,0,4),
|
hi_offset(E),
|
||||||
sub(2,5,0),
|
and_imm(2, 2, 32767),
|
||||||
hi_offset(_2748),
|
label(E),
|
||||||
and_imm(2,2,32767),
|
lsl_imm(2, 2, 15),
|
||||||
label(_2748),
|
ior_imm(2, 2, 4),
|
||||||
lsl_imm(2,2,15),
|
label(P),
|
||||||
ior_imm(2,2,4),
|
store_word(2, 0, 0),
|
||||||
label(_2810),
|
do_offset(F),
|
||||||
store_word(2,0,0),
|
label(G),
|
||||||
do_offset,lsl_imm(2,2,17),
|
do_offset(G),
|
||||||
asr_imm(2,2,17),
|
label(H),
|
||||||
e(_2290),
|
symbol(H),
|
||||||
label(_2302),
|
lsl_imm(6, 2, 2),
|
||||||
do_offset(_2302),
|
asr_imm(6, 6, 17),
|
||||||
label(_2864),
|
eq_offset(I),
|
||||||
symbol(_2864),
|
add(6, 6, 0),
|
||||||
lsl_imm(6,2,2),
|
label(I),
|
||||||
asr_imm(6,6,17),
|
lsl_imm(2, 2, 17),
|
||||||
eq_offset(_3064),
|
asr_imm(2, 2, 17),
|
||||||
add(6,6,0),
|
eq_offset(J),
|
||||||
label(_3064),
|
add(2, 2, 0),
|
||||||
9,7,17),
|
label(J),
|
||||||
asr_imm(9,9,17),
|
load_word(7, 2, 0),
|
||||||
eq_offset(lsl_imm(2,2,17),
|
lsl_imm(8, 7, 2),
|
||||||
asr_imm(2,2,17),
|
asr_imm(8, 8, 17),
|
||||||
eq_offset(_3132),
|
eq_offset(K),
|
||||||
add(2,2,0),
|
add(8, 8, 2),
|
||||||
label(_3132),
|
label(K),
|
||||||
load_word(7,2,0),
|
lsl_imm(9, 7, 17),
|
||||||
lsl_imm(8,7,2),
|
asr_imm(9, 9, 17),
|
||||||
asr_imm(8,8,17),
|
eq_offset(L),
|
||||||
eq_offset(_3214)q_offset(_3394),
|
add(9, 9, 2),
|
||||||
sub(6,6,0),
|
label(L),
|
||||||
and_imm,add(8,8,2),
|
sub_imm(0, 0, 4),
|
||||||
label(_3214),
|
sub_imm(8, 8, 0),
|
||||||
lsl_imm(9,7,17),
|
eq_offset(M),
|
||||||
asr_imm(9,9,17),
|
sub(8, 8, 0),
|
||||||
eq_offset(_3282),
|
and_imm(8, 8, 32767),
|
||||||
add(9,9,2),
|
label(M),
|
||||||
label(_3282),
|
sub_imm(6, 6, 0),
|
||||||
sub_imm(0,0,4),
|
eq_offset(N),
|
||||||
sub_imm(8,8,0),
|
sub(6, 6, 0),
|
||||||
eq_offset,9,32767),
|
and_imm(6, 6, 32767),
|
||||||
label(_3518),
|
label(N),
|
||||||
mov_imm_wit(_3326),
|
lsl_imm(8, 8, 15),
|
||||||
sub(8,8,0),
|
ior(8, 8, 6),
|
||||||
and_imm(8,8,32767),
|
store_word(8, 0, 0),
|
||||||
label(_3326),
|
sub_imm(0, 0, 4),
|
||||||
sub_imm(6,6,0),
|
sub_imm(9, 9, 0),
|
||||||
eq_offset(_3394),
|
eq_offset(O),
|
||||||
sub(6,6,0),
|
sub(9, 9, 0),
|
||||||
and_imm(6,6,32767),
|
and_imm(9, 9, 32767),
|
||||||
label(_3394),
|
label(O),
|
||||||
lsl_imm(8,8,15),
|
mov_imm_with_shift(2, 2),
|
||||||
ior(8,8,6),
|
ior(2, 2, 9),
|
||||||
store_word(8,0,0),
|
do_offset(P),
|
||||||
sub_imm(0,0,4),
|
label(Q),
|
||||||
sub_imm(9,9,0),
|
symbol(Q),
|
||||||
eq_offset(_3518),
|
lsl_imm(5, 2,
|
||||||
sub(9,9,0),
|
2),
|
||||||
and_imm(9,9,32767),
|
asr_imm(5, 5, 17),
|
||||||
label(_3518),
|
do_offset(D),
|
||||||
mov_imm_with_shift(2,2),
|
label(R),
|
||||||
ior(2,2,9),
|
expr_cell(Q, 0)].
|
||||||
do_offset(_2810),
|
|
||||||
label(_2242),
|
|
||||||
expr_cell(_2864,0)]
|
|
||||||
|
|
@ -79,7 +79,7 @@ Mark II
|
||||||
store_word(TOS, SP, 0), % RAM[SP] := TOS
|
store_word(TOS, SP, 0), % RAM[SP] := TOS
|
||||||
do_offset(Main)
|
do_offset(Main)
|
||||||
|
|
||||||
],⟐([
|
],⟐([
|
||||||
|
|
||||||
halt(HALT), % ======================================
|
halt(HALT), % ======================================
|
||||||
|
|
||||||
|
|
@ -102,10 +102,18 @@ Mark II
|
||||||
incr(SP),
|
incr(SP),
|
||||||
sub_base_from_offset(TEMP3, SP),
|
sub_base_from_offset(TEMP3, SP),
|
||||||
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)
|
||||||
|
]),[
|
||||||
|
% TermAddr := TOS << 2 >> 17
|
||||||
|
lsl_imm(TermAddr, TOS, 2),
|
||||||
|
asr_imm(TermAddr, TermAddr, 17)
|
||||||
|
],⟐([
|
||||||
|
jump(PUSH)
|
||||||
]),[
|
]),[
|
||||||
label(Expression),
|
label(Expression),
|
||||||
expr_cell(Cons, 0)
|
expr_cell(Dup, 0)
|
||||||
].
|
].
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -182,7 +190,7 @@ do :-
|
||||||
|
|
||||||
compile_program(Binary) :-
|
compile_program(Binary) :-
|
||||||
phrase(⟐(program), ASM),
|
phrase(⟐(program), ASM),
|
||||||
writeln(ASM),
|
portray_clause(ASM),
|
||||||
phrase(linker(ASM), EnumeratedASM),
|
phrase(linker(ASM), EnumeratedASM),
|
||||||
phrase(asm(EnumeratedASM), Binary).
|
phrase(asm(EnumeratedASM), Binary).
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -312,6 +312,22 @@ Maybe I can dispense with symbol records by modifying the
|
||||||
is-this-a-symbol code to just check if the address is below the end of
|
is-this-a-symbol code to just check if the address is below the end of
|
||||||
the library code.
|
the library code.
|
||||||
|
|
||||||
|
------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
[ザ,シ],ヮ(dup),
|
||||||
|
|
||||||
|
ザ swap_halves(TOS)
|
||||||
|
シ push(TOS, TOS, SP)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PC == 0
|
PC == 0
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue