ANd portray_clause to stablize output logical variable names.
This commit is contained in:
Simon Forman 2019-11-10 14:35:57 -08:00
parent 0b210d7754
commit 3126dce307
4 changed files with 129 additions and 113 deletions

View File

@ -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),
label(_2290),
sub_imm(1, 1, 0), sub_imm(1, 1, 0),
eq_offset(_2302), eq_offset(G),
load_word(4, 1, 0), load_word(4, 1, 0),
lsl_imm(5, 4, 2), lsl_imm(5, 4, 2),
asr_imm(5, 5, 17), asr_imm(5, 5, 17),
eq_offset(_24346,4,17), eq_offset(B),
asr_imm(6,6,17),
eq_offset(),
add(5, 5, 1), add(5, 5, 1),
label(_2434), label(B),
lsl_imm(6, 4, 17), lsl_imm(6, 4, 17),
asr_imm(6, 6, 17), asr_imm(6, 6, 17),
eq_offset(_2502), eq_offset(C),
add(6, 6, 1), add(6, 6, 1),
label(_2502), label(C),
load_word(3, 5, 0), load_word(3, 5, 0),
mov(1,6), mov(1,
asr_imm(6,3,t(6,16383), 6),
ior_imm(6,6,65535), asr_imm(6, 3, 30),
and(30),
and_imm(6, 6, 2), and_imm(6, 6, 2),
sub_imm(6, 6, 2), sub_imm(6, 6, 2),
ne_offset(_2564), ne_offset(D),
mov_imm_with_shift(6, 16383), mov_imm_with_shift(6, 16383),
ior_imm(6, 6, 65535), ior_imm(6, 6, 65535),
and(6, 6, 3), 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),
do_offse,0,4),
sub(2, 5, 0), sub(2, 5, 0),
hi_offset(_2748), hi_offset(E),
and_imm(2, 2, 32767), and_imm(2, 2, 32767),
label(_2748), label(E),
lsl_imm(2, 2, 15), lsl_imm(2, 2, 15),
ior_imm(2, 2, 4), ior_imm(2, 2, 4),
label(_2810), label(P),
store_word(2, 0, 0), store_word(2, 0, 0),
do_offset,lsl_imm(2,2,17), do_offset(F),
asr_imm(2,2,17), label(G),
e(_2290), do_offset(G),
label(_2302), label(H),
do_offset(_2302), symbol(H),
label(_2864),
symbol(_2864),
lsl_imm(6, 2, 2), lsl_imm(6, 2, 2),
asr_imm(6, 6, 17), asr_imm(6, 6, 17),
eq_offset(_3064), eq_offset(I),
add(6, 6, 0), add(6, 6, 0),
label(_3064), label(I),
9,7,17), lsl_imm(2, 2, 17),
asr_imm(9,9,17),
eq_offset(lsl_imm(2,2,17),
asr_imm(2, 2, 17), asr_imm(2, 2, 17),
eq_offset(_3132), eq_offset(J),
add(2, 2, 0), add(2, 2, 0),
label(_3132), label(J),
load_word(7, 2, 0), load_word(7, 2, 0),
lsl_imm(8, 7, 2), lsl_imm(8, 7, 2),
asr_imm(8, 8, 17), asr_imm(8, 8, 17),
eq_offset(_3214)q_offset(_3394), eq_offset(K),
sub(6,6,0), add(8, 8, 2),
and_imm,add(8,8,2), label(K),
label(_3214),
lsl_imm(9, 7, 17), lsl_imm(9, 7, 17),
asr_imm(9, 9, 17), asr_imm(9, 9, 17),
eq_offset(_3282), eq_offset(L),
add(9, 9, 2), add(9, 9, 2),
label(_3282), label(L),
sub_imm(0, 0, 4), sub_imm(0, 0, 4),
sub_imm(8, 8, 0), sub_imm(8, 8, 0),
eq_offset,9,32767), eq_offset(M),
label(_3518),
mov_imm_wit(_3326),
sub(8, 8, 0), sub(8, 8, 0),
and_imm(8, 8, 32767), and_imm(8, 8, 32767),
label(_3326), label(M),
sub_imm(6, 6, 0), sub_imm(6, 6, 0),
eq_offset(_3394), eq_offset(N),
sub(6, 6, 0), sub(6, 6, 0),
and_imm(6, 6, 32767), and_imm(6, 6, 32767),
label(_3394), label(N),
lsl_imm(8, 8, 15), lsl_imm(8, 8, 15),
ior(8, 8, 6), ior(8, 8, 6),
store_word(8, 0, 0), store_word(8, 0, 0),
sub_imm(0, 0, 4), sub_imm(0, 0, 4),
sub_imm(9, 9, 0), sub_imm(9, 9, 0),
eq_offset(_3518), eq_offset(O),
sub(9, 9, 0), sub(9, 9, 0),
and_imm(9, 9, 32767), and_imm(9, 9, 32767),
label(_3518), label(O),
mov_imm_with_shift(2, 2), mov_imm_with_shift(2, 2),
ior(2, 2, 9), ior(2, 2, 9),
do_offset(_2810), do_offset(P),
label(_2242), label(Q),
expr_cell(_2864,0)] symbol(Q),
lsl_imm(5, 2,
2),
asr_imm(5, 5, 17),
do_offset(D),
label(R),
expr_cell(Q, 0)].

View File

@ -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.

View File

@ -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