mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-23 04:29:05 +00:00
Working on M/Z synth rules.
This commit is contained in:
parent
a494e06e4b
commit
78d316e7db
src
main/java/dk/camelot64/kickc/fragment
test
java/dk/camelot64/kickc/test
ref
fragments-assignment-binary-_deref_pbuc1.logfragments-assignment-binary-_deref_pbuz1.logfragments-assignment-binary-pbuc1_derefidx_vbuaa.logfragments-assignment-binary-pbuc1_derefidx_vbuxx.logfragments-assignment-binary-pbuc1_derefidx_vbuyy.logfragments-assignment-binary-pbuc1_derefidx_vbuz1.logfragments-assignment-binary-pbuz1_derefidx_vbuaa.logfragments-assignment-binary-pbuz1_derefidx_vbuc1.logfragments-assignment-binary-pbuz1_derefidx_vbuxx.logfragments-assignment-binary-pbuz1_derefidx_vbuyy.logfragments-assignment-binary-pbuz1_derefidx_vbuz1.logfragments-assignment-binary-pbuz1_derefidx_vbuz2.logfragments-assignment-binary-vbuaa.logfragments-assignment-binary-vbuxx.logfragments-assignment-binary-vbuyy.logfragments-assignment-binary-vbuz1.logfragments-assignment-copy.logfragments-assignment-unary.logfragments-complex.log
@ -397,12 +397,14 @@ class AsmFragmentTemplateSynthesisRule {
|
|||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)z1(.*)", threeZM1, null, "$1m1$2m1$3", null, mapZ1M1));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)z1(.*)", threeZM1, null, "$1m1$2m1$3", null, mapZ1M1));
|
||||||
// Replace three Z1 with M1
|
// Replace three Z1 with M1
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)z1(.*)z1(.*)", fourZM1, null, "$1m1$2m1$3m1$4", null, mapZ1M1));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)z1(.*)z1(.*)", fourZM1, null, "$1m1$2m1$3m1$4", null, mapZ1M1));
|
||||||
|
|
||||||
// Replace Z2 with M2
|
// Replace Z2 with M2
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)", twoZM2, null, "$1m2$2", null, mapZ2M2));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)", twoZM2, null, "$1m2$2", null, mapZ2M2));
|
||||||
// Replace two Z2 with M2
|
// Replace two Z2 with M2
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)z2(.*)", threeZM2, null, "$1m2$2m2$3", null, mapZ2M2));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)z2(.*)", threeZM2, null, "$1m2$2m2$3", null, mapZ2M2));
|
||||||
// Replace three Z2 with M2
|
// Replace three Z2 with M2
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)z2(.*)z2(.*)", fourZM2, null, "$1m2$2m2$3m2$4", null, mapZ2M2));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)z2(.*)z2(.*)", fourZM2, null, "$1m2$2m2$3m2$4", null, mapZ2M2));
|
||||||
|
|
||||||
// Replace Z3 with M3
|
// Replace Z3 with M3
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z3(.*)", twoZM3, null, "$1m3$2", null, mapZ3M3));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z3(.*)", twoZM3, null, "$1m3$2", null, mapZ3M3));
|
||||||
// Replace two Z3 with M3
|
// Replace two Z3 with M3
|
||||||
@ -446,79 +448,6 @@ class AsmFragmentTemplateSynthesisRule {
|
|||||||
// Replace two YYs with AA (not assigned)
|
// Replace two YYs with AA (not assigned)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*vb.)yy(.*vb.)yy(.*)", rvalAa, "tya", "$1=$2aa$3aa$4", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*vb.)yy(.*vb.)yy(.*)", rvalAa, "tya", "$1=$2aa$3aa$4", null, null));
|
||||||
|
|
||||||
// Replace Z1 with AA (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*)", lvalZM1+"|"+rvalAa+"|"+ twoZM1, "lda {z1}", "$1aa$2", null, mapZM1));
|
|
||||||
// Replace two Z1s with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*vb.)z1(.*)", lvalZM1+"|"+rvalAa+"|"+ threeZM1, "lda {z1}", "$1aa$2aa$3", null, mapZM1));
|
|
||||||
// Replace first (not second) Z1 with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*)z1(.*)", lvalZM1+"|"+rvalAa, "lda {z1}", "$1aa$2z1$3", null, null));
|
|
||||||
// Replace second (not first) Z1 with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*vb.)z1(.*)", lvalZM1+"|"+rvalAa, "lda {z1}", "$1z1$2aa$3", null, null));
|
|
||||||
// Replace non-assigned Z1 with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(...aa)=(.*vb.)z1(.*)", rvalAa+"|"+ twoZM1, "lda {z1}", "$1=$2aa$3", null, mapZM1));
|
|
||||||
// Replace assigned Z1 with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)z1=(.*)", twoZM1, null, "$1aa=$2", "sta {z1}", mapZM1));
|
|
||||||
|
|
||||||
// Replace Z1 with YY (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*)", lvalZM1+"|"+rvalYy+"|"+twoZM1, "ldy {z1}", "$1yy$2", null, mapZM1));
|
|
||||||
// Replace two Z1s with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*vb.)z1(.*)", lvalZM1+"|"+rvalYy+"|"+threeZM1, "ldy {z1}", "$1yy$2yy$3", null, mapZM1));
|
|
||||||
// Replace first (not second) Z1 with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*)z1(.*)", lvalZM1+"|"+rvalYy, "ldy {z1}", "$1yy$2z1$3", null, null));
|
|
||||||
// Replace second (not first) Z1 with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*vb.)z1(.*)", lvalZM1+"|"+rvalYy, "ldy {z1}", "$1z1$2yy$3", null, null));
|
|
||||||
// Replace non-assigned Z1 with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(...yy)=(.*vb.)z1(.*)", twoZM1+"|"+rvalYy, "ldy {z1}", "$1=$2yy$3", null, mapZM1));
|
|
||||||
// Replace assigned Z1 with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)z1=(.*)", twoZM1, null, "$1yy=$2", "sty {z1}", mapZM1));
|
|
||||||
|
|
||||||
// Replace Z1 with XX (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*)", lvalZM1+"|"+rvalXx+"|"+twoZM1, "ldx {z1}", "$1xx$2", null, mapZM1));
|
|
||||||
// Replace two Z1s with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*vb.)z1(.*)", lvalZM1+"|"+rvalXx+"|"+threeZM1, "ldx {z1}", "$1xx$2xx$3", null, mapZM1));
|
|
||||||
// Replace first (not second) Z1 with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z1(.*)z1(.*)", lvalZM1+"|"+rvalXx, "ldx {z1}", "$1xx$2z1$3", null, null));
|
|
||||||
// Replace second (not first) Z1 with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*vb.)z1(.*)", lvalZM1+"|"+rvalXx, "ldx {z1}", "$1z1$2xx$3", null, null));
|
|
||||||
// Replace non-assigned Z1 with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(...xx)=(.*vb.)z1(.*)", twoZM1+"|"+rvalXx, "ldx {z1}", "$1=$2xx$3", null, mapZM1));
|
|
||||||
// Replace assigned Z1 with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)z1=(.*)", twoZM1, null, "$1xx=$2", "stx {z1}", mapZM1));
|
|
||||||
|
|
||||||
// Replace Z2 with AA (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*)", lvalZM2+"|"+rvalAa+"|"+twoZM2, "lda {z2}", "$1aa$2", null, mapZM2));
|
|
||||||
// Replace two Z2s with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*vb.)z2(.*)", lvalZM2+"|"+rvalAa+"|"+threeZM2, "lda {z2}", "$1aa$2aa$3", null, mapZM2));
|
|
||||||
// Replace first (of 2) Z2 with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*)z2(.*)", lvalZM2+"|"+rvalAa, "lda {z2}", "$1aa$2z2$3", null, null));
|
|
||||||
// Replace second (of 2) Z2 with AA
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*vb.)z2(.*)", lvalZM2+"|"+rvalAa, "lda {z2}", "$1z2$2aa$3", null, null));
|
|
||||||
|
|
||||||
// Replace Z2 with YY (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*)", lvalZM2+"|"+rvalYy+"|"+twoZM2, "ldy {z2}", "$1yy$2", null, mapZM2));
|
|
||||||
// Replace two Z2s with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*vb.)z2(.*)", lvalZM2+"|"+rvalYy+"|"+threeZM2, "ldy {z2}", "$1yy$2yy$3", null, mapZM2));
|
|
||||||
// Replace first (of 2) Z2 with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*)z2(.*)", lvalZM2+"|"+rvalYy, "ldy {z2}", "$1yy$2z2$3", null, null));
|
|
||||||
// Replace second (of 2) Z2 with YY
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*vb.)z2(.*)", lvalZM2+"|"+rvalYy, "ldy {z2}", "$1z2$2yy$3", null, null));
|
|
||||||
|
|
||||||
// Replace Z2 with XX(only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*)", lvalZM2+"|"+rvalXx+"|"+twoZM2, "ldx {z2}", "$1xx$2", null, mapZM2));
|
|
||||||
// Replace two Z2s with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*vb.)z2(.*)", lvalZM2+"|"+rvalXx+"|"+threeZM2, "ldx {z2}", "$1xx$2xx$3", null, mapZM2));
|
|
||||||
// Replace first (of 2) Z2 with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z2(.*)z2(.*)", lvalZM2+"|"+rvalXx, "ldx {z2}", "$1xx$2z2$3", null, null));
|
|
||||||
// Replace second (of 2) Z2 with XX
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*vb.)z2(.*)", lvalZM2+"|"+rvalXx, "ldx {z2}", "$1z2$2xx$3", null, null));
|
|
||||||
|
|
||||||
// Replace Z3 with AA (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z3(.*)", lvalZM3+"|"+twoZM3+"|"+rvalAa, "lda {z3}", "$1aa$2", null, mapZM3));
|
|
||||||
// Replace Z3 with YY (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z3(.*)", lvalZM3+"|"+twoZM3+"|"+rvalYy, "ldy {z3}", "$1yy$2", null, mapZM3));
|
|
||||||
// Replace Z3 with XX (only one)
|
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)z3(.*)", lvalZM3+"|"+twoZM3+"|"+rvalXx, "ldx {z3}", "$1xx$2", null, mapZM3));
|
|
||||||
|
|
||||||
// Replace M1 with AA (only one)
|
// Replace M1 with AA (only one)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*)", lvalZM1+"|"+rvalAa+"|"+ twoZM1, "lda {m1}", "$1aa$2", null, mapZM1));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*)", lvalZM1+"|"+rvalAa+"|"+ twoZM1, "lda {m1}", "$1aa$2", null, mapZM1));
|
||||||
// Replace two M1s with AA
|
// Replace two M1s with AA
|
||||||
@ -543,10 +472,67 @@ class AsmFragmentTemplateSynthesisRule {
|
|||||||
// Replace second (of 2) M2 with AA
|
// Replace second (of 2) M2 with AA
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m2(.*vb.)m2(.*)", lvalZM2+"|"+rvalAa, "lda {m2}", "$1m2$2aa$3", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m2(.*vb.)m2(.*)", lvalZM2+"|"+rvalAa, "lda {m2}", "$1m2$2aa$3", null, null));
|
||||||
|
|
||||||
|
// Replace M3 with AA (only one)
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m3(.*)", lvalZM3+"|"+rvalAa+"|"+twoZM3, "lda {m3}", "$1aa$2", null, mapZM3));
|
||||||
|
// Replace two M3s with AA
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m3(.*vb.)m3(.*)", lvalZM3+"|"+rvalAa+"|"+threeZM3, "lda {m3}", "$1aa$2aa$3", null, mapZM3));
|
||||||
|
// Replace first (of 2) M3 with AA
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m3(.*)m3(.*)", lvalZM3+"|"+rvalAa, "lda {m3}", "$1aa$2m3$3", null, null));
|
||||||
|
// Replace second (of 2) M3 with AA
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m3(.*vb.)m3(.*)", lvalZM3+"|"+rvalAa, "lda {m3}", "$1m3$2aa$3", null, null));
|
||||||
|
|
||||||
|
// Replace M1 with YY (only one)
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*)", lvalZM1+"|"+rvalYy+"|"+ twoZM1, "ldy {m1}", "$1yy$2", null, mapZM1));
|
||||||
|
// Replace two M1s with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*vb.)m1(.*)", lvalZM1+"|"+rvalYy+"|"+ threeZM1, "ldy {m1}", "$1yy$2yy$3", null, mapZM1));
|
||||||
|
// Replace first (not second) M1 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*)m1(.*)", lvalZM1+"|"+rvalYy, "ldy {m1}", "$1yy$2m1$3", null, null));
|
||||||
|
// Replace second (not first) M1 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m1(.*vb.)m1(.*)", lvalZM1+"|"+rvalYy, "ldy {m1}", "$1m1$2yy$3", null, null));
|
||||||
|
// Replace non-assigned M1 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(...yy)=(.*vb.)m1(.*)", rvalYy+"|"+ twoZM1, "ldy {m1}", "$1=$2yy$3", null, mapZM1));
|
||||||
|
// Replace assigned M1 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)m1=(.*)", twoZM1, null, "$1yy=$2", "sty {m1}", mapZM1));
|
||||||
|
// Replace assigned M1 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)m1=(.*m1.*)", null, null, "$1yy=$2", "sty {m1}", null));
|
||||||
|
|
||||||
|
// Replace M2 with YY (only one)
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m2(.*)", lvalZM2+"|"+rvalYy+"|"+twoZM2, "ldy {m2}", "$1yy$2", null, mapZM2));
|
||||||
|
// Replace two M2s with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m2(.*vb.)m2(.*)", lvalZM2+"|"+rvalYy+"|"+threeZM2, "ldy {m2}", "$1yy$2yy$3", null, mapZM2));
|
||||||
|
// Replace first (of 2) M2 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m2(.*)m2(.*)", lvalZM2+"|"+rvalYy, "ldy {m2}", "$1yy$2m2$3", null, null));
|
||||||
|
// Replace second (of 2) M2 with YY
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m2(.*vb.)m2(.*)", lvalZM2+"|"+rvalYy, "ldy {m2}", "$1m2$2yy$3", null, null));
|
||||||
|
|
||||||
|
// Replace M1 with XX (only one)
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*)", lvalZM1+"|"+rvalXx+"|"+ twoZM1, "ldx {m1}", "$1xx$2", null, mapZM1));
|
||||||
|
// Replace two M1s with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*vb.)m1(.*)", lvalZM1+"|"+rvalXx+"|"+ threeZM1, "ldx {m1}", "$1xx$2xx$3", null, mapZM1));
|
||||||
|
// Replace first (not second) M1 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m1(.*)m1(.*)", lvalZM1+"|"+rvalXx, "ldx {m1}", "$1xx$2m1$3", null, null));
|
||||||
|
// Replace second (not first) M1 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m1(.*vb.)m1(.*)", lvalZM1+"|"+rvalXx, "ldx {m1}", "$1m1$2xx$3", null, null));
|
||||||
|
// Replace non-assigned M1 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(...xx)=(.*vb.)m1(.*)", rvalXx+"|"+ twoZM1, "ldx {m1}", "$1=$2xx$3", null, mapZM1));
|
||||||
|
// Replace assigned M1 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)m1=(.*)", twoZM1, null, "$1xx=$2", "stx {m1}", mapZM1));
|
||||||
|
// Replace assigned M1 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(vb.)m1=(.*m1.*)", null, null, "$1xx=$2", "stx {m1}", null));
|
||||||
|
|
||||||
|
// Replace M2 with XX (only one)
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m2(.*)", lvalZM2+"|"+rvalXx+"|"+twoZM2, "ldx {m2}", "$1xx$2", null, mapZM2));
|
||||||
|
// Replace two M2s with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m2(.*vb.)m2(.*)", lvalZM2+"|"+rvalXx+"|"+threeZM2, "ldx {m2}", "$1xx$2xx$3", null, mapZM2));
|
||||||
|
// Replace first (of 2) M2 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*vb.)m2(.*)m2(.*)", lvalZM2+"|"+rvalXx, "ldx {m2}", "$1xx$2m2$3", null, null));
|
||||||
|
// Replace second (of 2) M2 with XX
|
||||||
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m2(.*vb.)m2(.*)", lvalZM2+"|"+rvalXx, "ldx {m2}", "$1m2$2xx$3", null, null));
|
||||||
|
|
||||||
// Correct wrong ordered Z2/Z1
|
// Correct wrong ordered Z2/Z1
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z2(.*)z1(.*)", twoZM1+"|"+twoZM2, null, "$1z1$2z2$3", null, mapZM2Swap, false));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m2(.*)m1(.*)", twoZM1+"|"+twoZM2, null, "$1m1$2m2$3", null, mapZM2Swap, false));
|
||||||
// Correct wrong ordered Z3/Z2
|
// Correct wrong ordered Z3/Z2
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z3(.*)z2(.*)", twoZM2+"|"+twoZM3, null, "$1z2$2z3$3", null, mapZM3Swap, false));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)m3(.*)m2(.*)", twoZM2+"|"+twoZM3, null, "$1m2$2m3$3", null, mapZM3Swap, false));
|
||||||
// Correct wrong ordered C2/C1
|
// Correct wrong ordered C2/C1
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)c2(.*)c1(.*)", twoC1+"|"+twoC2, null, "$1c1$2c2$3", null, mapC2Swap, false));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)c2(.*)c1(.*)", twoC1+"|"+twoC2, null, "$1c1$2c2$3", null, mapC2Swap, false));
|
||||||
|
|
||||||
@ -573,9 +559,9 @@ class AsmFragmentTemplateSynthesisRule {
|
|||||||
// Rewrite Assignments to Y from A
|
// Rewrite Assignments to Y from A
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)yy=(.*)", null, null, "vb$1aa=$2", "tay", null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)yy=(.*)", null, null, "vb$1aa=$2", "tay", null));
|
||||||
// Rewrite Assignments to Z1 from A
|
// Rewrite Assignments to Z1 from A
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)z1=(.*)", twoZM1, null, "vb$1aa=$2", "sta {z1}", mapZM1));
|
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)m1=(.*)", twoZM1, null, "vb$1aa=$2", "sta {m1}", mapZM1));
|
||||||
// Rewrite Assignments to Z1 from A
|
// Rewrite Assignments to Z1 from A
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)z1=(.*z1.*)", null, null, "vb$1aa=$2", "sta {z1}", null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)m1=(.*[mz]1.*)", null, null, "vb$1aa=$2", "sta {m1}", null));
|
||||||
// Rewrite Assignments to *C1 from A
|
// Rewrite Assignments to *C1 from A
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1=(.*)", null, null, "vb$1aa=$2", "sta {c1}", null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1=(.*)", null, null, "vb$1aa=$2", "sta {c1}", null));
|
||||||
// Rewrite Assignments to *Z1 from A
|
// Rewrite Assignments to *Z1 from A
|
||||||
@ -588,7 +574,7 @@ class AsmFragmentTemplateSynthesisRule {
|
|||||||
// Rewrite _deref_pb.z1_ to _vb.aa_ (if other Z1)
|
// Rewrite _deref_pb.z1_ to _vb.aa_ (if other Z1)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*z1.*)_deref_pb(.)z1(.*)", rvalAa+"|"+rvalYy+"|"+lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*z1.*)_deref_pb(.)z1(.*)", rvalAa+"|"+rvalYy+"|"+lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
||||||
// Rewrite _deref_pb.z1_ to _vb.aa_ (if other Z1)
|
// Rewrite _deref_pb.z1_ to _vb.aa_ (if other Z1)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)z1(.*z1.*)", rvalAa+"|"+rvalYy+"|"+ lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)z1(.*[zm]1.*)", rvalAa+"|"+rvalYy+"|"+ lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
||||||
|
|
||||||
// Replace VB*C1 with AA (only one)
|
// Replace VB*C1 with AA (only one)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", lvalC1+"|"+rvalAa, "lda #{c1}", "$1vb$2aa$3", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)vb(.)c1(.*)", lvalC1+"|"+rvalAa, "lda #{c1}", "$1vb$2aa$3", null, null));
|
||||||
@ -680,7 +666,7 @@ class AsmFragmentTemplateSynthesisRule {
|
|||||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)pb(.)z1_derefidx_vbuyy", rvalAa, "lda ({z1}),y", "$1z1$2vb$3aa", null, null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)z1(.*)pb(.)z1_derefidx_vbuyy", rvalAa, "lda ({z1}),y", "$1z1$2vb$3aa", null, null, null));
|
||||||
|
|
||||||
// Rewrite wv.z1=(word)_ror_4 to wv.z1=(word)
|
// Rewrite wv.z1=(word)_ror_4 to wv.z1=(word)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("vw(.*)z1=(.*)_ror_4", rvalAa, null, "vw$1z1=$2", "lsr {z1}+1\nror {z1}\nlsr {z1}+1\nror {z1}\nlsr {z1}+1\nror {z1}\nlsr {z1}+1\nror {z1}", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("vw(.*)m1=(.*)_ror_4", rvalAa, null, "vw$1m1=$2", "lsr {m1}+1\nror {m1}\nlsr {m1}+1\nror {m1}\nlsr {m1}+1\nror {m1}\nlsr {m1}+1\nror {m1}", null, null));
|
||||||
|
|
||||||
// Rewrite vbuaa=(byte)_rol_N to wbuz1=(byte)
|
// Rewrite vbuaa=(byte)_rol_N to wbuz1=(byte)
|
||||||
synths.add(new AsmFragmentTemplateSynthesisRule("vbuaa=(.*)_rol_1", rvalAa, null, "vbuaa=$1", "asl", null, null));
|
synths.add(new AsmFragmentTemplateSynthesisRule("vbuaa=(.*)_rol_1", rvalAa, null, "vbuaa=$1", "asl", null, null));
|
||||||
|
@ -2102,6 +2102,11 @@ public class TestPrograms {
|
|||||||
// compileAndCompare("complex/bcmod/bcmod5h", log());
|
// compileAndCompare("complex/bcmod/bcmod5h", log());
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
//@Test
|
||||||
|
//public void testBcmod5hb() throws IOException, URISyntaxException {
|
||||||
|
// compileAndCompare("complex/bcmod/bcmod5hb", log());
|
||||||
|
//}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testTetrisSprites() throws IOException, URISyntaxException {
|
public void testTetrisSprites() throws IOException, URISyntaxException {
|
||||||
compileAndCompare("complex/tetris/test-sprites");
|
compileAndCompare("complex/tetris/test-sprites");
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,17 +1,17 @@
|
|||||||
synthesized vbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < vbum1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:18.0
|
synthesized vbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < vbum1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuc1 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc1 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc1_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc1 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:18.0
|
||||||
ldy #{c1}
|
ldy #{c1}
|
||||||
lda ({z2}),y
|
lda ({z2}),y
|
||||||
ldy #{c2}
|
ldy #{c2}
|
||||||
and ({z3}),y
|
and ({z3}),y
|
||||||
sta {z1}
|
sta {z1}
|
||||||
synthesized pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz2_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz3_derefidx_vbuc2_band_pbuz1_derefidx_vbuz2 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuz3_band_pbuz1_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz3_band_pbuz2_derefidx_vbuc2 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz3_band_pbuz2_derefidx_vbuyy < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuz2_band_pbuz3_derefidx_vbuyy < pbuc1_derefidx_vbuxx=pbuz3_derefidx_vbuyy_band_pbuz1_derefidx_vbuz2 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuz3 < pbuc1_derefidx_vbuxx=pbuz2_derefidx_vbuz3_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz2_derefidx_vbuz3_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuz2_band_vbuaa < vbuaa=pbuz1_derefidx_vbuyy_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A X Y cycles:24.0
|
synthesized pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuz1=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuz1 < pbuc1_derefidx_vbum1=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbum1 < pbuc1_derefidx_vbuxx=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbum1 < vbuaa=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbum1 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A X Y cycles:24.0
|
||||||
ldx {z1}
|
ldx {z1}
|
||||||
ldy #{c2}
|
|
||||||
lda ({z3}),y
|
|
||||||
ldy {z1}
|
ldy {z1}
|
||||||
and ({z2}),y
|
lda ({z2}),y
|
||||||
|
ldy #{c2}
|
||||||
|
and ({z3}),y
|
||||||
sta {c1},x
|
sta {c1},x
|
||||||
synthesized pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < pbuc1_derefidx_vbuyy=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuc2_band_vbuaa < pbuc1_derefidx_vbuyy=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:27.0
|
synthesized pbuc1_derefidx_vbuz1=pbuz2_derefidx_vbuz1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbum1=pbuz2_derefidx_vbum1_band_pbuz3_derefidx_vbuc2 < pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < pbuc1_derefidx_vbuyy=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < pbuc1_derefidx_vbuyy=pbuz1_derefidx_vbuc2_band_vbuaa < pbuc1_derefidx_vbuyy=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:27.0
|
||||||
ldy {z1}
|
ldy {z1}
|
||||||
lda ({z2}),y
|
lda ({z2}),y
|
||||||
sty $ff
|
sty $ff
|
||||||
@ -26,14 +26,14 @@ synthesized vbuxx=pbuz1_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuxx=pbuz2_d
|
|||||||
ldy #{c2}
|
ldy #{c2}
|
||||||
and ({z2}),y
|
and ({z2}),y
|
||||||
tax
|
tax
|
||||||
synthesized _deref_pbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < _deref_pbuz1=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < _deref_pbuz1=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuc1 < _deref_pbuz1=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:23.0
|
synthesized _deref_pbuz1=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < _deref_pbuz1=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < _deref_pbuz1=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < _deref_pbuz1=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc1 < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc1_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc1 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:23.0
|
||||||
ldy #{c1}
|
ldy #{c1}
|
||||||
lda ({z2}),y
|
lda ({z2}),y
|
||||||
ldy #{c2}
|
ldy #{c2}
|
||||||
and ({z3}),y
|
and ({z3}),y
|
||||||
ldy #0
|
ldy #0
|
||||||
sta ({z1}),y
|
sta ({z1}),y
|
||||||
synthesized pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy_band_pbuz3_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuyy < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_pbuz2_derefidx_vbuyy < vbuaa=pbuz2_derefidx_vbuyy_band_pbuz1_derefidx_vbuc2 < vbuaa=pbuz1_derefidx_vbuyy_band_pbuz2_derefidx_vbuc2 < vbuaa=pbuz2_derefidx_vbuc2_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc2_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc2 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:27.0
|
synthesized pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc1_band_pbuz3_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc2_band_pbuz2_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuc2 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuc2_band_pbuz3_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz2_derefidx_vbuyy_band_pbuz3_derefidx_vbuc1 < pbuz1_derefidx_vbuaa=pbuz3_derefidx_vbuc1_band_pbuz2_derefidx_vbuyy < vbuaa=pbuz2_derefidx_vbuc1_band_pbuz1_derefidx_vbuyy < vbuaa=pbuz1_derefidx_vbuc1_band_vbuaa < vbuaa=vbuaa_band_pbuz1_derefidx_vbuc1 < vbuaa=vbuaa_band_pbuz1_derefidx_vbuyy - clobber:A Y cycles:27.0
|
||||||
ldy #{c1}
|
ldy #{c1}
|
||||||
sta $ff
|
sta $ff
|
||||||
lda ({z2}),y
|
lda ({z2}),y
|
||||||
|
Loading…
x
Reference in New Issue
Block a user