mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-09-08 17:54:40 +00:00
Removed one synth rule. Fixed flaw in others.
This commit is contained in:
parent
eadf85a048
commit
cdbc2e05cf
@ -219,6 +219,7 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
String rvalZ1 = ".*=.*z1.*|.*_.*z1.*|...z1_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String rvalZ2 = ".*=.*z2.*|.*_.*z2.*|...z2_(lt|gt|le|ge|eq|neq)_.*";
|
||||
String lvalDerefZ1 = ".*_deref_...z1=.*";
|
||||
String lvalDerefC1 = ".*_deref_...c1=.*";
|
||||
String lvalDerefIdxAa = ".*_derefidx_...aa=.*";
|
||||
String lvalDerefIdxZ1 = ".*_derefidx_...z1=.*";
|
||||
String lvalDerefIdxZ2 = ".*_derefidx_...z2=.*";
|
||||
@ -395,54 +396,45 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
// Rewrite _deref_pb.z1_ to _vb.aa_ (if no other Z1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)z1(.*)", twoZ1+"|"+rvalAa+"|"+rvalYy+"|"+ lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, mapZ));
|
||||
// Rewrite _deref_pb.z1_ to _vb.aa_ (if other Z1)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*z1.*)_deref_pb(.)z1(.*)", lvalDerefZ1+"|"+rvalAa+"|"+rvalYy, "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)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)z1(.*z1.*)", ".*z1.*=.*"+"|"+rvalAa+"|"+rvalYy, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)z1(.*z1.*)", rvalAa+"|"+rvalYy+"|"+ lvalDerefZ1, "ldy #0\n"+"lda ({z1}),y", "$1vb$2aa$3", null, null));
|
||||
|
||||
// Rewrite *C1 to AA (if no other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalAa+"|"+twoC1, "lda {c1}", "$1_vb$2aa$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalAa+"|"+twoC1+"|"+lvalDerefC1, "lda {c1}", "$1vb$2aa$3", null, mapC));
|
||||
// Rewrite *C1 to AA (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalAa, "lda {c1}", "$1_vb$2aa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalAa+"|"+lvalDerefC1, "lda {c1}", "$1vb$2aa$3", null, null));
|
||||
// Rewrite *C1 to AA (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalAa, "lda {c1}", "$1_vb$2aa$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalAa+"|"+lvalDerefC1, "lda {c1}", "$1vb$2aa$3", null, null));
|
||||
// Rewrite *C1 to XX (if no other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalXx+"|"+twoC1, "ldx {c1}", "$1_vb$2xx$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalXx+"|"+twoC1+"|"+lvalDerefC1, "ldx {c1}", "$1vb$2xx$3", null, mapC));
|
||||
// Rewrite *C1 to XX (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalXx, "ldx {c1}", "$1_vb$2xx$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalXx+"|"+lvalDerefC1, "ldx {c1}", "$1vb$2xx$3", null, null));
|
||||
// Rewrite *C1 to XX (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalXx, "ldx {c1}", "$1_vb$2xx$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalXx+"|"+lvalDerefC1, "ldx {c1}", "$1vb$2xx$3", null, null));
|
||||
// Rewrite *C1 to YY (if no other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalYy+"|"+twoC1, "ldy {c1}", "$1_vb$2yy$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*)", rvalYy+"|"+twoC1+"|"+lvalDerefC1, "ldy {c1}", "$1vb$2yy$3", null, mapC));
|
||||
// Rewrite *C1 to YY (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalYy, "ldy {c1}", "$1_vb$2yy$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_deref_pb(.)c1(.*c1.*)", rvalYy+"|"+lvalDerefC1, "ldy {c1}", "$1vb$2yy$3", null, null));
|
||||
// Rewrite *C1 to YY (if other C1s)
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalYy, "ldy {c1}", "$1_vb$2yy$3", null, null));
|
||||
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*", "lda {c1}", "vb$1aa_$2_$3", null, mapC));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)z1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*|.*vb.yy.*|.*z1.*z1.*", "ldy #0\n" + "lda ({z1}),y", "vb$1aa_$2_$3", null, mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*c1.*)_deref_pb(.)c1(.*)", rvalYy+"|"+lvalDerefC1, "ldy {c1}", "$1vb$2yy$3", null, null));
|
||||
|
||||
// OLD STYLE REWRITES - written when only one rule could be taken
|
||||
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_(band|bor|bxor|plus)_(vb.aa)", ".*=vb.aa_.*", null, "$1=$4_$3_$2", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_(band|bor|bxor|plus)_(vb.xx)", ".*=vb.[ax][ax]_.*", null, "$1=$4_$3_$2", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_(band|bor|bxor|plus)_(vb.yy)", ".*=vb.[axy][axy]_.*", null, "$1=$4_$3_$2", null, null));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)xx=(.*)", null, null, "vb$1aa=$2", "tax\n", null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("vb(.)yy=(.*)", null, null, "vb$1aa=$2", "tay\n", null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("vbsyy=(.*)", null, null, "vbsaa=$1", "tay\n", null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("vbsz1=(.*)", ".*=.*vb.z1.*", null, "vbsaa=$1", "sta {z1}\n", mapZ));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuz1=(.*)", twoZ1+"|"+twoC1, null, "vb$1aa=$2", "ldx {z1}\n" + "sta {c1},x", mapZC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy=(.*)", twoC1, null, "vb$1aa=$2", "sta {c1},y", mapC, "yy"));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx=(.*)", twoC1, null, "vb$1aa=$2", "sta {c1},x", mapC, "xx"));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)z1_derefidx_vbuz2=(.*)", twoZ1+"|"+twoZ2, null, "vb$1aa=$2", "ldy {z2}\n" + "sta ({z1}),y", mapZ2));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=_deref_pb(.)c1(.*)", rvalAa+"|"+twoC1, "lda {c1}", "$1=vb$2aa$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=_deref_pb(.)z1(.*)", rvalAa+"|"+rvalYy+"|"+twoZ1, "ldy #0\n" + "lda ({z1}),y", "$1=vb$2aa$3", null, mapZ));
|
||||
|
||||
// Convert array indexing with A register to X/Y register by prefixing tax/tay (..._derefidx_vbuaa... -> ..._derefidx_vbuxx... /... _derefidx_vbuyy... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_derefidx_vbuaa(.*)", rvalXx, "tax", "$1=$2_derefidx_vbuxx$3", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_derefidx_vbuaa(.*)", rvalYy, "tay", "$1=$2_derefidx_vbuyy$3", null, null));
|
||||
|
||||
// Convert array indexing with zero page to x/y register by prefixing ldx z1 / ldy z1 ( ..._derefidx_vbuzn... -> ..._derefidx_vbuxx... / ..._derefidx_vbuyy... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_derefidx_vbuz1(.*)", rvalXx+"|"+twoZ1, "ldx {z1}", "$1=$2_derefidx_vbuxx$3", null, mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_derefidx_vbuz1(.*)", rvalYy+"|"+twoZ1, "ldy {z1}", "$1=$2_derefidx_vbuyy$3", null, mapZ));
|
||||
@ -475,28 +467,9 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuyy(.*)", rvalAa, "lda {c2},y", "$1=$2vb$3aa$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*c2.*)", rvalAa, "lda {c2},y", "$1=$2vb$3aa$4", null, null));
|
||||
|
||||
// Convert zeropage/constants/X/Y in assignments to A-register using LDA/TXA/TYA prefix
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbuz1(.*)", ".*z1.*=.*|.*=.*aa.*|.*z1.*z1.*", "lda {z1}", "$1=$2vbuaa$3", null, mapZ));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbsz1(.*)", ".*z1.*=.*|.*=.*aa.*|.*z1.*z1.*", "lda {z1}", "$1=$2vbsaa$3", null, mapZ));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbuz2(.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}", "$1=$2vbuaa$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbsz2(.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}", "$1=$2vbsaa$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbuz2(.*z3.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}", "$1=$2vbuaa$3", null, mapZ3));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)vbsz2(.*z3.*)", ".*z2.*=.*|.*=.*aa.*|.*z2.*z2.*|.*z3.*", "lda {z2}", "$1=$2vbsaa$3", null, mapZ3));
|
||||
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbuxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa", "$1=$2_vbuaa", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbsxx", ".*=.*[ax][ax].*xx|.*derefidx_vb.xx", "txa", "$1=$2_vbsaa", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbuyy", ".*=.*[ay][ay].*yy|.*derefidx_vb.yy", "tya", "$1=$2_vbuaa", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbsyy", ".*=-*[ay][ay].*yy|.*derefidx_vb.yy", "tya", "$1=$2_vbsaa", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbuz1", rvalAa+"|"+".*z1.*z1.*", "lda {z1}", "$1=$2_vbuaa", null, mapZ));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbsz1", rvalAa+"|"+".*z1.*z1.*", "lda {z1}", "$1=$2_vbsaa", null, mapZ));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbuz2", rvalAa+"|"+".*z2.*z2.*", "lda {z2}", "$1=$2_vbuaa", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)_vbuz3", rvalAa+"|"+".*z3.*z3.*", "lda {z3}", "$1=$2_vbuaa", null, null));
|
||||
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("vbuz1=vbuz1(.*)", rvalAa+"|"+threeZ1, "lda {z1}", "vbuaa=vbuaa$1", "sta {z1}", mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("vbsz1=vbsz1(.*)", rvalAa+"|"+threeZ1, "lda {z1}", "vbsaa=vbsaa$1", "sta {z1}", mapZ));
|
||||
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*|.*z1.*z1.*", "lda {z1}", "vbuaa_$1_$2", null, mapZ));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("vbsz1_(lt|gt|le|ge|eq|neq)_(.*)", ".*vb.aa.*|.*z1.*z1.*", "lda {z1}", "vbsaa_$1_$2", null, mapZ));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)c1_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa, "lda {c1}", "vb$1aa_$2_$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("_deref_pb(.)z1_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+rvalYy+"|"+twoZ1, "ldy #0\n" + "lda ({z1}),y", "vb$1aa_$2_$3", null, mapZ));
|
||||
|
||||
@ -508,25 +481,6 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},x", "vb$1aa_$2_$3", null, mapC));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuxx_(lt|gt|le|ge|eq|neq)_(.*c1.*)", rvalAa, "lda {c1},x", "vb$1aa_$2_$3", null, null));
|
||||
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_ge_(vb.aa)_then_(.*)", ".*vb.aa.*_ge.*", null, "$2_le_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_ge_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_ge.*", null, "$2_le_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_ge_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_ge.*", null, "$2_le_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_lt_(vb.aa)_then_(.*)", ".*vb.aa.*_lt.*", null, "$2_gt_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_lt_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_lt.*", null, "$2_gt_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_lt_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_lt.*", null, "$2_gt_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_gt_(vb.aa)_then_(.*)", ".*vb.aa.*_gt.*", null, "$2_lt_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_gt_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_gt.*", null, "$2_lt_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_gt_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_gt.*", null, "$2_lt_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_le_(vb.aa)_then_(.*)", ".*vb.aa.*_le.*", null, "$2_ge_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_le_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_le.*", null, "$2_ge_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_le_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_le.*", null, "$2_ge_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_neq_(vb.aa)_then_(.*)", ".*vb.aa.*_neq.*", null, "$2_neq_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_neq_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_neq.*", null, "$2_neq_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_neq_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_neq.*", null, "$2_neq_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_eq_(vb.aa)_then_(.*)", ".*vb.aa.*_eq.*", null, "$2_eq_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_eq_(vb.xx)_then_(.*)", ".*vb.[ax][ax].*_eq.*", null, "$2_eq_$1_then_$3", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_eq_(vb.yy)_then_(.*)", ".*vb.[axy][axy].*_eq.*", null, "$2_eq_$1_then_$3", null, null));
|
||||
|
||||
// Use unsigned ASM to synthesize signed ASM ( ...vbs... -> ...vbu... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_(eq|neq)_(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)_then_(.*)", null, null, "$1_$2_$3_then_$4", null, mapSToU));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)=(vbsz.|vbsc.|vbsaa|vbsxx|vbsyy)", null, null, "$1=$2", null, mapSToU));
|
||||
@ -543,10 +497,6 @@ class AsmFragmentTemplateSynthesisRule {
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwsz.)=(vwsz.)_(plus|minus|band|bxor|bor)_vb.c(.)", null, null, "$1=$2_$3_vwsc$4", null, null));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(vwsz.)=vb.c(.)_(plus|minus|band|bxor|bor)_(vwsz.)", null, null, "$1=vwsc$2_$3_$4", null, null));
|
||||
|
||||
// Move constant words to the end of the ASM signature for symmetric operators ( ...vw.c...vw.z... -> ...vw.z...vw.c... )
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(vwuz.)=(vwuc.)_(plus|band|bxor|bor)_(vwuz.)", null, null, "$1=$4_$3_$2", null, null));
|
||||
//synths.add(new AsmFragmentTemplateSynthesisRule("(vwsz.)=(vwsc.)_(plus|band|bxor|bor)_(vwsz.)", null, null, "$1=$4_$3_$2", null, null));
|
||||
|
||||
// Use Z1/Z2 ASM to synthesize Z1-only code ( ...z1...z1... -> ...z1...z2... )
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(v..)z1=(v..)z1_(plus|minus|band|bxor|bor)_(.*)", oneZ2, null, "$1z1=$2z2_$3_$4", null, mapZ, false));
|
||||
synths.add(new AsmFragmentTemplateSynthesisRule("(v..)z1=(.*)_(plus|minus|band|bxor|bor)_(v..)z1", oneZ2, null, "$1z1=$2_$3_$4z2", null, mapZ, false));
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1125,7 +1125,11 @@ pbuz1_derefidx_vbuc1=_deref_pbuz1 < pbuz1_derefidx_vbuc1=vbuaa - clobber:A Y cy
|
||||
sta ({z1}),y
|
||||
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuc1=_deref_pbuz2
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuc1=_deref_pbuc1
|
||||
pbuz1_derefidx_vbuc1=_deref_pbuc1 < pbuz1_derefidx_vbuc1=vbuaa - clobber:A Y cycles:12.0
|
||||
lda {c1}
|
||||
ldy #{c1}
|
||||
sta ({z1}),y
|
||||
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuc1=_deref_pbuc2
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuc1=pbuz1_derefidx_vbuaa
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuc1=pbuz1_derefidx_vbuxx
|
||||
@ -1215,7 +1219,16 @@ pbuc1_derefidx_vbuaa=_deref_pbuz1 < pbuc1_derefidx_vbuxx=_deref_pbuz1 < pbuc1_de
|
||||
lda ({z1}),y
|
||||
sta {c1},x
|
||||
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_deref_pbuc1
|
||||
pbuc1_derefidx_vbuaa=_deref_pbuc1 < pbuc1_derefidx_vbuxx=_deref_pbuc1 < pbuc1_derefidx_vbuxx=vbuaa - clobber:A X cycles:11.0
|
||||
tax
|
||||
lda {c1}
|
||||
sta {c1},x
|
||||
|
||||
pbuc1_derefidx_vbuaa=_deref_pbuc1 < pbuc1_derefidx_vbuyy=_deref_pbuc1 < pbuc1_derefidx_vbuyy=vbuaa - clobber:A Y cycles:11.0
|
||||
tay
|
||||
lda {c1}
|
||||
sta {c1},y
|
||||
|
||||
pbuc1_derefidx_vbuaa=_deref_pbuc2 < pbuc1_derefidx_vbuxx=_deref_pbuc2 < vbuaa=_deref_pbuc1 - clobber:A X cycles:11.0
|
||||
tax
|
||||
lda {c2}
|
||||
@ -1308,7 +1321,10 @@ pbuc1_derefidx_vbuxx=_deref_pbuz1 < pbuc1_derefidx_vbuxx=vbuaa - clobber:A Y cy
|
||||
lda ({z1}),y
|
||||
sta {c1},x
|
||||
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_deref_pbuc1
|
||||
pbuc1_derefidx_vbuxx=_deref_pbuc1 < pbuc1_derefidx_vbuxx=vbuaa - clobber:A cycles:9.0
|
||||
lda {c1}
|
||||
sta {c1},x
|
||||
|
||||
pbuc1_derefidx_vbuxx=_deref_pbuc2 < vbuaa=_deref_pbuc1 - clobber:A cycles:9.0
|
||||
lda {c2}
|
||||
sta {c1},x
|
||||
@ -1386,7 +1402,10 @@ pbuc1_derefidx_vbuyy=_deref_pbuz1 < pbuc1_derefidx_vbuaa=_deref_pbuz1 < pbuc1_de
|
||||
lda ({z1}),y
|
||||
sta {c1},x
|
||||
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_deref_pbuc1
|
||||
pbuc1_derefidx_vbuyy=_deref_pbuc1 < pbuc1_derefidx_vbuyy=vbuaa - clobber:A cycles:9.0
|
||||
lda {c1}
|
||||
sta {c1},y
|
||||
|
||||
pbuc1_derefidx_vbuyy=_deref_pbuc2 < vbuaa=_deref_pbuc1 - clobber:A cycles:9.0
|
||||
lda {c2}
|
||||
sta {c1},y
|
||||
@ -1499,10 +1518,16 @@ pbuc1_derefidx_vbuz1=_deref_pbuz2 < pbuc1_derefidx_vbuxx=_deref_pbuz1 < pbuc1_de
|
||||
lda ({z2}),y
|
||||
sta {c1},x
|
||||
|
||||
pbuc1_derefidx_vbuz1=_deref_pbuc1 < vbuaa=_deref_pbuc1 - clobber:A X cycles:12.0
|
||||
pbuc1_derefidx_vbuz1=_deref_pbuc1 < pbuc1_derefidx_vbuyy=_deref_pbuc1 < pbuc1_derefidx_vbuyy=vbuaa - clobber:A Y cycles:12.0
|
||||
ldy {z1}
|
||||
lda {c1}
|
||||
sta {c1},y
|
||||
|
||||
pbuc1_derefidx_vbuz1=_deref_pbuc1 < pbuc1_derefidx_vbuxx=_deref_pbuc1 < pbuc1_derefidx_vbuxx=vbuaa - clobber:A X cycles:12.0
|
||||
ldx {z1}
|
||||
lda {c1}
|
||||
sta {c1},x
|
||||
|
||||
pbuc1_derefidx_vbuz1=_deref_pbuc2 < pbuc1_derefidx_vbuyy=_deref_pbuc2 < vbuaa=_deref_pbuc1 - clobber:A Y cycles:12.0
|
||||
ldy {z1}
|
||||
lda {c2}
|
||||
|
@ -54,11 +54,11 @@ vbuaa=_inc__deref_pbuz1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y c
|
||||
CANNOT SYNTHESIZE vbuaa=_neg__deref_pbuz1
|
||||
CANNOT SYNTHESIZE vbuaa=_pos__deref_pbuz1
|
||||
CANNOT SYNTHESIZE vbuaa=_not__deref_pbuc1
|
||||
vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A cycles:8.0
|
||||
vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:8.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A cycles:8.0
|
||||
vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:8.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
@ -233,16 +233,12 @@ vbuxx=_inc__deref_pbuz1 < vbuxx=_inc_vbuaa < vbuxx=_inc_vbuxx - clobber:A X Y c
|
||||
CANNOT SYNTHESIZE vbuxx=_neg__deref_pbuz1
|
||||
CANNOT SYNTHESIZE vbuxx=_pos__deref_pbuz1
|
||||
CANNOT SYNTHESIZE vbuxx=_not__deref_pbuc1
|
||||
vbuxx=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A X cycles:10.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
tax
|
||||
vbuxx=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A X cycles:10.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
tax
|
||||
vbuxx=_dec__deref_pbuc1 < vbuxx=_dec_vbuxx - clobber:X cycles:6.0
|
||||
ldx {c1}
|
||||
dex
|
||||
vbuxx=_inc__deref_pbuc1 < vbuxx=_inc_vbuxx - clobber:X cycles:6.0
|
||||
ldx {c1}
|
||||
inx
|
||||
CANNOT SYNTHESIZE vbuxx=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE vbuxx=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE vbuxx=_not_pbuz1_derefidx_vbuaa
|
||||
@ -394,16 +390,12 @@ vbuyy=_inc__deref_pbuz1 < vbuyy=_inc_vbuaa < vbuyy=_inc_vbuyy - clobber:A Y cyc
|
||||
CANNOT SYNTHESIZE vbuyy=_neg__deref_pbuz1
|
||||
CANNOT SYNTHESIZE vbuyy=_pos__deref_pbuz1
|
||||
CANNOT SYNTHESIZE vbuyy=_not__deref_pbuc1
|
||||
vbuyy=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:10.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
tay
|
||||
vbuyy=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:10.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
tay
|
||||
vbuyy=_dec__deref_pbuc1 < vbuyy=_dec_vbuyy - clobber:Y cycles:6.0
|
||||
ldy {c1}
|
||||
dey
|
||||
vbuyy=_inc__deref_pbuc1 < vbuyy=_inc_vbuyy - clobber:Y cycles:6.0
|
||||
ldy {c1}
|
||||
iny
|
||||
CANNOT SYNTHESIZE vbuyy=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE vbuyy=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE vbuyy=_not_pbuz1_derefidx_vbuaa
|
||||
@ -637,16 +629,32 @@ vbuz1=_inc__deref_pbuz2 < vbuaa=_inc__deref_pbuz1 < vbuaa=_inc_vbuaa < vbuaa=vbu
|
||||
CANNOT SYNTHESIZE vbuz1=_neg__deref_pbuz2
|
||||
CANNOT SYNTHESIZE vbuz1=_pos__deref_pbuz2
|
||||
CANNOT SYNTHESIZE vbuz1=_not__deref_pbuc1
|
||||
vbuz1=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A cycles:11.0
|
||||
vbuz1=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:11.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {z1}
|
||||
vbuz1=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A cycles:11.0
|
||||
vbuz1=_dec__deref_pbuc1 < vbuyy=_dec__deref_pbuc1 < vbuyy=_dec_vbuyy - clobber:Y cycles:9.0
|
||||
ldy {c1}
|
||||
dey
|
||||
sty {z1}
|
||||
vbuz1=_dec__deref_pbuc1 < vbuxx=_dec__deref_pbuc1 < vbuxx=_dec_vbuxx - clobber:X cycles:9.0
|
||||
ldx {c1}
|
||||
dex
|
||||
stx {z1}
|
||||
vbuz1=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:11.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {z1}
|
||||
vbuz1=_inc__deref_pbuc1 < vbuyy=_inc__deref_pbuc1 < vbuyy=_inc_vbuyy - clobber:Y cycles:9.0
|
||||
ldy {c1}
|
||||
iny
|
||||
sty {z1}
|
||||
vbuz1=_inc__deref_pbuc1 < vbuxx=_inc__deref_pbuc1 < vbuxx=_inc_vbuxx - clobber:X cycles:9.0
|
||||
ldx {c1}
|
||||
inx
|
||||
stx {z1}
|
||||
CANNOT SYNTHESIZE vbuz1=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE vbuz1=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE vbuz1=_not_pbuz1_derefidx_vbuaa
|
||||
@ -952,13 +960,13 @@ _deref_pbuz1=_inc__deref_pbuz2 < vbuaa=_inc__deref_pbuz1 < vbuaa=_inc_vbuaa < vb
|
||||
CANNOT SYNTHESIZE _deref_pbuz1=_neg__deref_pbuz2
|
||||
CANNOT SYNTHESIZE _deref_pbuz1=_pos__deref_pbuz2
|
||||
CANNOT SYNTHESIZE _deref_pbuz1=_not__deref_pbuc1
|
||||
_deref_pbuz1=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:16.0
|
||||
_deref_pbuz1=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:16.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
_deref_pbuz1=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:16.0
|
||||
_deref_pbuz1=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:16.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
@ -1212,12 +1220,12 @@ CANNOT SYNTHESIZE _deref_pbuc1=_not__deref_pbuc1
|
||||
CANNOT SYNTHESIZE _deref_pbuc1=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE _deref_pbuc1=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE _deref_pbuc1=_not__deref_pbuc2
|
||||
_deref_pbuc1=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A cycles:12.0
|
||||
_deref_pbuc1=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:12.0
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1}
|
||||
_deref_pbuc1=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A cycles:12.0
|
||||
_deref_pbuc1=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:12.0
|
||||
lda {c2}
|
||||
clc
|
||||
adc #1
|
||||
@ -2204,13 +2212,13 @@ pbuz1_derefidx_vbuz2=_inc__deref_pbuz3 < vbuaa=_inc__deref_pbuz1 < vbuaa=_inc_vb
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_neg__deref_pbuz3
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_pos__deref_pbuz3
|
||||
CANNOT SYNTHESIZE pbuz1_derefidx_vbuz2=_not__deref_pbuc1
|
||||
pbuz1_derefidx_vbuz2=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:17.0
|
||||
pbuz1_derefidx_vbuz2=_dec__deref_pbuc1 < pbuz1_derefidx_vbuz2=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:17.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
ldy {z2}
|
||||
sta ({z1}),y
|
||||
pbuz1_derefidx_vbuz2=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:17.0
|
||||
pbuz1_derefidx_vbuz2=_inc__deref_pbuc1 < pbuz1_derefidx_vbuz2=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:17.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
@ -2758,30 +2766,52 @@ pbuc1_derefidx_vbuaa=_inc__deref_pbuz1 < pbuc1_derefidx_vbuxx=_inc__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_neg__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_pos__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_not__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_dec__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_inc__deref_pbuc1
|
||||
pbuc1_derefidx_vbuaa=_dec__deref_pbuc1 < pbuc1_derefidx_vbuxx=_dec__deref_pbuc1 < pbuc1_derefidx_vbuxx=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A X cycles:15.0
|
||||
tax
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuaa=_dec__deref_pbuc1 < pbuc1_derefidx_vbuyy=_dec__deref_pbuc1 < pbuc1_derefidx_vbuyy=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:15.0
|
||||
tay
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuaa=_inc__deref_pbuc1 < pbuc1_derefidx_vbuxx=_inc__deref_pbuc1 < pbuc1_derefidx_vbuxx=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A X cycles:15.0
|
||||
tax
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuaa=_inc__deref_pbuc1 < pbuc1_derefidx_vbuyy=_inc__deref_pbuc1 < pbuc1_derefidx_vbuyy=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:15.0
|
||||
tay
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},y
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuaa=_not__deref_pbuc2
|
||||
pbuc1_derefidx_vbuaa=_dec__deref_pbuc2 < pbuc1_derefidx_vbuxx=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A X cycles:15.0
|
||||
pbuc1_derefidx_vbuaa=_dec__deref_pbuc2 < pbuc1_derefidx_vbuxx=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A X cycles:15.0
|
||||
tax
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuaa=_dec__deref_pbuc2 < pbuc1_derefidx_vbuyy=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:15.0
|
||||
pbuc1_derefidx_vbuaa=_dec__deref_pbuc2 < pbuc1_derefidx_vbuyy=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:15.0
|
||||
tay
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuaa=_inc__deref_pbuc2 < pbuc1_derefidx_vbuxx=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A X cycles:15.0
|
||||
pbuc1_derefidx_vbuaa=_inc__deref_pbuc2 < pbuc1_derefidx_vbuxx=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A X cycles:15.0
|
||||
tax
|
||||
lda {c2}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuaa=_inc__deref_pbuc2 < pbuc1_derefidx_vbuyy=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:15.0
|
||||
pbuc1_derefidx_vbuaa=_inc__deref_pbuc2 < pbuc1_derefidx_vbuyy=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:15.0
|
||||
tay
|
||||
lda {c2}
|
||||
clc
|
||||
@ -3041,17 +3071,25 @@ pbuc1_derefidx_vbuxx=_inc__deref_pbuz1 < pbuc1_derefidx_vbuxx=_inc_vbuaa < vbuaa
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_neg__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_pos__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_not__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_dec__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_inc__deref_pbuc1
|
||||
pbuc1_derefidx_vbuxx=_dec__deref_pbuc1 < pbuc1_derefidx_vbuxx=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:13.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuxx=_inc__deref_pbuc1 < pbuc1_derefidx_vbuxx=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:13.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},x
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuxx=_not__deref_pbuc2
|
||||
pbuc1_derefidx_vbuxx=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A cycles:13.0
|
||||
pbuc1_derefidx_vbuxx=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:13.0
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuxx=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A cycles:13.0
|
||||
pbuc1_derefidx_vbuxx=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:13.0
|
||||
lda {c2}
|
||||
clc
|
||||
adc #1
|
||||
@ -3282,17 +3320,25 @@ pbuc1_derefidx_vbuyy=_inc__deref_pbuz1 < pbuc1_derefidx_vbuaa=_inc__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_neg__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_pos__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_not__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_dec__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_inc__deref_pbuc1
|
||||
pbuc1_derefidx_vbuyy=_dec__deref_pbuc1 < pbuc1_derefidx_vbuyy=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:13.0
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuyy=_inc__deref_pbuc1 < pbuc1_derefidx_vbuyy=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:13.0
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},y
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuyy=_not__deref_pbuc2
|
||||
pbuc1_derefidx_vbuyy=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A cycles:13.0
|
||||
pbuc1_derefidx_vbuyy=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A cycles:13.0
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuyy=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A cycles:13.0
|
||||
pbuc1_derefidx_vbuyy=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A cycles:13.0
|
||||
lda {c2}
|
||||
clc
|
||||
adc #1
|
||||
@ -3619,40 +3665,52 @@ pbuc1_derefidx_vbuz1=_inc__deref_pbuz2 < pbuc1_derefidx_vbuxx=_inc__deref_pbuz1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=_neg__deref_pbuz2
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=_pos__deref_pbuz2
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=_not__deref_pbuc1
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc1 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A X cycles:16.0
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc1 < pbuc1_derefidx_vbuyy=_dec__deref_pbuc1 < pbuc1_derefidx_vbuyy=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:16.0
|
||||
ldy {z1}
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc1 < pbuc1_derefidx_vbuxx=_dec__deref_pbuc1 < pbuc1_derefidx_vbuxx=_dec_vbuaa < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A X cycles:16.0
|
||||
ldx {z1}
|
||||
lda {c1}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc1 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A X cycles:16.0
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc1 < pbuc1_derefidx_vbuyy=_inc__deref_pbuc1 < pbuc1_derefidx_vbuyy=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:16.0
|
||||
ldy {z1}
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc1 < pbuc1_derefidx_vbuxx=_inc__deref_pbuc1 < pbuc1_derefidx_vbuxx=_inc_vbuaa < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A X cycles:16.0
|
||||
ldx {z1}
|
||||
lda {c1}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},x
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=_neg__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=_pos__deref_pbuc1
|
||||
CANNOT SYNTHESIZE pbuc1_derefidx_vbuz1=_not__deref_pbuc2
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc2 < pbuc1_derefidx_vbuyy=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:16.0
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc2 < pbuc1_derefidx_vbuyy=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A Y cycles:16.0
|
||||
ldy {z1}
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc2 < pbuc1_derefidx_vbuxx=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_deref_pbuc1_minus_1 < vbuaa=vbuaa_minus_1 - clobber:A X cycles:16.0
|
||||
pbuc1_derefidx_vbuz1=_dec__deref_pbuc2 < pbuc1_derefidx_vbuxx=_dec__deref_pbuc2 < vbuaa=_dec__deref_pbuc1 < vbuaa=_dec_vbuaa < vbuaa=vbuaa_minus_1 - clobber:A X cycles:16.0
|
||||
ldx {z1}
|
||||
lda {c2}
|
||||
sec
|
||||
sbc #1
|
||||
sta {c1},x
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc2 < pbuc1_derefidx_vbuyy=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:16.0
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc2 < pbuc1_derefidx_vbuyy=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A Y cycles:16.0
|
||||
ldy {z1}
|
||||
lda {c2}
|
||||
clc
|
||||
adc #1
|
||||
sta {c1},y
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc2 < pbuc1_derefidx_vbuxx=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_deref_pbuc1_plus_1 < vbuaa=vbuaa_plus_1 - clobber:A X cycles:16.0
|
||||
pbuc1_derefidx_vbuz1=_inc__deref_pbuc2 < pbuc1_derefidx_vbuxx=_inc__deref_pbuc2 < vbuaa=_inc__deref_pbuc1 < vbuaa=_inc_vbuaa < vbuaa=vbuaa_plus_1 - clobber:A X cycles:16.0
|
||||
ldx {z1}
|
||||
lda {c2}
|
||||
clc
|
||||
|
@ -14,46 +14,46 @@ main: {
|
||||
jmp b1
|
||||
}
|
||||
animate: {
|
||||
lda XPOS+0
|
||||
clc
|
||||
adc #1
|
||||
sta XPOS+0
|
||||
ldx XPOS+0
|
||||
inx
|
||||
stx XPOS+0
|
||||
txa
|
||||
cmp #$28
|
||||
bne b1
|
||||
lda #0
|
||||
sta XPOS+0
|
||||
b1:
|
||||
lda YPOS+0
|
||||
clc
|
||||
adc #1
|
||||
sta YPOS+0
|
||||
ldx YPOS+0
|
||||
inx
|
||||
stx YPOS+0
|
||||
txa
|
||||
cmp #$19
|
||||
bne b2
|
||||
lda #0
|
||||
sta YPOS+0
|
||||
b2:
|
||||
lda XPOS+1
|
||||
sec
|
||||
sbc #1
|
||||
sta XPOS+1
|
||||
ldx XPOS+1
|
||||
dex
|
||||
stx XPOS+1
|
||||
txa
|
||||
cmp #$ff
|
||||
bne b3
|
||||
lda #$28
|
||||
sta XPOS+1
|
||||
b3:
|
||||
lda YPOS+2
|
||||
clc
|
||||
adc #1
|
||||
sta YPOS+2
|
||||
ldx YPOS+2
|
||||
inx
|
||||
stx YPOS+2
|
||||
txa
|
||||
cmp #$19
|
||||
bne b4
|
||||
lda #0
|
||||
sta YPOS+2
|
||||
b4:
|
||||
lda YPOS+3
|
||||
sec
|
||||
sbc #1
|
||||
sta YPOS+3
|
||||
ldx YPOS+3
|
||||
dex
|
||||
stx YPOS+3
|
||||
txa
|
||||
cmp #$ff
|
||||
bne breturn
|
||||
lda #$19
|
||||
|
@ -2052,10 +2052,9 @@ animate: {
|
||||
.label _15 = $12
|
||||
.label _18 = $13
|
||||
//SEG24 [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuz1=_deref_pbuc1_plus_1
|
||||
lda XPOS+0
|
||||
clc
|
||||
adc #1
|
||||
sta _0
|
||||
ldy XPOS+0
|
||||
iny
|
||||
sty _0
|
||||
//SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1
|
||||
lda _0
|
||||
sta XPOS+0
|
||||
@ -2073,10 +2072,9 @@ animate: {
|
||||
//SEG29 animate::@1
|
||||
b1:
|
||||
//SEG30 [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuz1=_deref_pbuc1_plus_1
|
||||
lda YPOS+0
|
||||
clc
|
||||
adc #1
|
||||
sta _3
|
||||
ldy YPOS+0
|
||||
iny
|
||||
sty _3
|
||||
//SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1
|
||||
lda _3
|
||||
sta YPOS+0
|
||||
@ -2094,10 +2092,9 @@ animate: {
|
||||
//SEG35 animate::@2
|
||||
b2:
|
||||
//SEG36 [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuz1=_deref_pbuc1_minus_1
|
||||
lda XPOS+1
|
||||
sec
|
||||
sbc #1
|
||||
sta _6
|
||||
ldx XPOS+1
|
||||
dex
|
||||
stx _6
|
||||
//SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1
|
||||
lda _6
|
||||
sta XPOS+1
|
||||
@ -2115,10 +2112,9 @@ animate: {
|
||||
//SEG41 animate::@3
|
||||
b3:
|
||||
//SEG42 [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuz1=_deref_pbuc1_plus_1
|
||||
lda YPOS+2
|
||||
clc
|
||||
adc #1
|
||||
sta _9
|
||||
ldy YPOS+2
|
||||
iny
|
||||
sty _9
|
||||
//SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/word~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1
|
||||
lda _9
|
||||
sta YPOS+2
|
||||
@ -2136,10 +2132,9 @@ animate: {
|
||||
//SEG47 animate::@4
|
||||
b4:
|
||||
//SEG48 [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuz1=_deref_pbuc1_minus_1
|
||||
lda YPOS+3
|
||||
sec
|
||||
sbc #1
|
||||
sta _12
|
||||
ldx YPOS+3
|
||||
dex
|
||||
stx _12
|
||||
//SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuz1
|
||||
lda _12
|
||||
sta YPOS+3
|
||||
@ -2491,19 +2486,14 @@ initscreen: {
|
||||
COLS: .byte 1, 2, 3, 4, 5, 7
|
||||
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) always clobbers reg byte a
|
||||
Statement [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) always clobbers reg byte a
|
||||
Statement [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) always clobbers reg byte a
|
||||
Statement [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) always clobbers reg byte a
|
||||
Statement [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) always clobbers reg byte a
|
||||
Statement [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [32] (byte/word~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a
|
||||
@ -2527,19 +2517,14 @@ Statement [76] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte/signed
|
||||
Statement [77] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ( main:2::render:7::findcol:43 [ render::y#4 render::colline#5 render::x#2 findcol::x#0 findcol::y#0 findcol::i#10 findcol::mindiff#10 findcol::mincol#10 findcol::yp#0 findcol::diff#0 ] ) always clobbers reg byte a
|
||||
Statement [80] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] ( main:2::initscreen:5 [ initscreen::screen#2 ] ) always clobbers reg byte a reg byte y
|
||||
Statement [82] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word/signed word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] ( main:2::initscreen:5 [ initscreen::screen#1 ] ) always clobbers reg byte a
|
||||
Statement [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) always clobbers reg byte a
|
||||
Statement [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [15] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) always clobbers reg byte a
|
||||
Statement [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [19] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) always clobbers reg byte a
|
||||
Statement [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [23] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word) 40 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) always clobbers reg byte a
|
||||
Statement [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [27] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/signed byte/word/signed word) 0 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) always clobbers reg byte a
|
||||
Statement [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [31] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word) 25 [ ] ( main:2::animate:9 [ ] ) always clobbers reg byte a
|
||||
Statement [32] (byte/word~) animate::$15 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 3) + (byte/signed byte/word/signed word) 7 [ animate::$15 ] ( main:2::animate:9 [ animate::$15 ] ) always clobbers reg byte a
|
||||
@ -2588,33 +2573,33 @@ Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplift attempts [findcol] 10000/2239488 (limiting to 10000)
|
||||
Uplifting [findcol] best 1714005 combination reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$12 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:24 [ findcol::xp#0 ] zp ZP_BYTE:25 [ findcol::yp#0 ] zp ZP_BYTE:22 [ findcol::return#0 ] zp ZP_BYTE:21 [ findcol::y#0 ] zp ZP_BYTE:20 [ findcol::x#0 ]
|
||||
Uplifting [findcol] best 1713995 combination reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ] zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ] reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ] zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ] reg byte a [ findcol::$10 ] reg byte a [ findcol::$12 ] reg byte x [ findcol::i#10 findcol::i#1 ] zp ZP_BYTE:24 [ findcol::xp#0 ] zp ZP_BYTE:25 [ findcol::yp#0 ] zp ZP_BYTE:22 [ findcol::return#0 ] zp ZP_BYTE:21 [ findcol::y#0 ] zp ZP_BYTE:20 [ findcol::x#0 ]
|
||||
Limited combination testing to 10000 combinations of 2239488 possible.
|
||||
Uplifting [render] best 1708005 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ]
|
||||
Uplifting [initscreen] best 1708005 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
|
||||
Uplifting [render] best 1707995 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ] reg byte a [ render::col#0 ] zp ZP_BYTE:2 [ render::y#4 render::y#1 ] zp ZP_WORD:3 [ render::colline#5 render::colline#1 ]
|
||||
Uplifting [initscreen] best 1707995 combination zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ]
|
||||
Uplift attempts [animate] 10000/16384 (limiting to 10000)
|
||||
Uplifting [animate] best 1707963 combination reg byte a [ animate::$0 ] reg byte a [ animate::$3 ] reg byte a [ animate::$6 ] reg byte a [ animate::$9 ] reg byte a [ animate::$12 ] reg byte a [ animate::$15 ] reg byte a [ animate::$18 ]
|
||||
Uplifting [animate] best 1707953 combination reg byte x [ animate::$0 ] reg byte x [ animate::$3 ] reg byte x [ animate::$6 ] reg byte x [ animate::$9 ] reg byte x [ animate::$12 ] reg byte a [ animate::$15 ] reg byte a [ animate::$18 ]
|
||||
Limited combination testing to 10000 combinations of 16384 possible.
|
||||
Uplifting [main] best 1707963 combination
|
||||
Uplifting [] best 1707963 combination
|
||||
Uplifting [main] best 1707953 combination
|
||||
Uplifting [] best 1707953 combination
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
|
||||
Uplifting [findcol] best 1707963 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
|
||||
Uplifting [findcol] best 1707953 combination zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
|
||||
Uplifting [findcol] best 1707963 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
|
||||
Uplifting [findcol] best 1707953 combination zp ZP_BYTE:7 [ findcol::mindiff#10 findcol::mindiff#13 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:24 [ findcol::xp#0 ]
|
||||
Uplifting [findcol] best 1707963 combination zp ZP_BYTE:24 [ findcol::xp#0 ]
|
||||
Uplifting [findcol] best 1707953 combination zp ZP_BYTE:24 [ findcol::xp#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:25 [ findcol::yp#0 ]
|
||||
Uplifting [findcol] best 1707963 combination zp ZP_BYTE:25 [ findcol::yp#0 ]
|
||||
Uplifting [findcol] best 1707953 combination zp ZP_BYTE:25 [ findcol::yp#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ render::x#2 render::x#1 ]
|
||||
Uplifting [render] best 1707963 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ]
|
||||
Uplifting [render] best 1707953 combination zp ZP_BYTE:5 [ render::x#2 render::x#1 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:22 [ findcol::return#0 ]
|
||||
Uplifting [findcol] best 1703963 combination reg byte a [ findcol::return#0 ]
|
||||
Uplifting [findcol] best 1703953 combination reg byte a [ findcol::return#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:21 [ findcol::y#0 ]
|
||||
Uplifting [findcol] best 1703963 combination zp ZP_BYTE:21 [ findcol::y#0 ]
|
||||
Uplifting [findcol] best 1703953 combination zp ZP_BYTE:21 [ findcol::y#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:20 [ findcol::x#0 ]
|
||||
Uplifting [findcol] best 1703963 combination zp ZP_BYTE:20 [ findcol::x#0 ]
|
||||
Uplifting [findcol] best 1703953 combination zp ZP_BYTE:20 [ findcol::x#0 ]
|
||||
Attempting to uplift remaining variables inzp ZP_BYTE:2 [ render::y#4 render::y#1 ]
|
||||
Uplifting [render] best 1703963 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ]
|
||||
Uplifting [render] best 1703953 combination zp ZP_BYTE:2 [ render::y#4 render::y#1 ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:2 [ render::y#4 render::y#1 ] ] with [ zp ZP_BYTE:21 [ findcol::y#0 ] ]
|
||||
Coalescing zero page register [ zp ZP_WORD:3 [ render::colline#5 render::colline#1 ] ] with [ zp ZP_WORD:11 [ initscreen::screen#2 initscreen::screen#1 ] ]
|
||||
Coalescing zero page register [ zp ZP_BYTE:5 [ render::x#2 render::x#1 ] ] with [ zp ZP_BYTE:20 [ findcol::x#0 ] ]
|
||||
@ -2685,12 +2670,11 @@ main: {
|
||||
}
|
||||
//SEG23 animate
|
||||
animate: {
|
||||
//SEG24 [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuaa=_deref_pbuc1_plus_1
|
||||
lda XPOS+0
|
||||
clc
|
||||
adc #1
|
||||
//SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta XPOS+0
|
||||
//SEG24 [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuxx=_deref_pbuc1_plus_1
|
||||
ldx XPOS+0
|
||||
inx
|
||||
//SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx XPOS+0
|
||||
//SEG26 [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda XPOS+0
|
||||
cmp #$28
|
||||
@ -2704,12 +2688,11 @@ animate: {
|
||||
jmp b1
|
||||
//SEG29 animate::@1
|
||||
b1:
|
||||
//SEG30 [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuaa=_deref_pbuc1_plus_1
|
||||
lda YPOS+0
|
||||
clc
|
||||
adc #1
|
||||
//SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta YPOS+0
|
||||
//SEG30 [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuxx=_deref_pbuc1_plus_1
|
||||
ldx YPOS+0
|
||||
inx
|
||||
//SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx YPOS+0
|
||||
//SEG32 [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda YPOS+0
|
||||
cmp #$19
|
||||
@ -2723,12 +2706,11 @@ animate: {
|
||||
jmp b2
|
||||
//SEG35 animate::@2
|
||||
b2:
|
||||
//SEG36 [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuaa=_deref_pbuc1_minus_1
|
||||
lda XPOS+1
|
||||
sec
|
||||
sbc #1
|
||||
//SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta XPOS+1
|
||||
//SEG36 [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuxx=_deref_pbuc1_minus_1
|
||||
ldx XPOS+1
|
||||
dex
|
||||
//SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx XPOS+1
|
||||
//SEG38 [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda XPOS+1
|
||||
cmp #$ff
|
||||
@ -2742,12 +2724,11 @@ animate: {
|
||||
jmp b3
|
||||
//SEG41 animate::@3
|
||||
b3:
|
||||
//SEG42 [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuaa=_deref_pbuc1_plus_1
|
||||
lda YPOS+2
|
||||
clc
|
||||
adc #1
|
||||
//SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/word~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta YPOS+2
|
||||
//SEG42 [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuxx=_deref_pbuc1_plus_1
|
||||
ldx YPOS+2
|
||||
inx
|
||||
//SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/word~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx YPOS+2
|
||||
//SEG44 [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda YPOS+2
|
||||
cmp #$19
|
||||
@ -2761,12 +2742,11 @@ animate: {
|
||||
jmp b4
|
||||
//SEG47 animate::@4
|
||||
b4:
|
||||
//SEG48 [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuaa=_deref_pbuc1_minus_1
|
||||
lda YPOS+3
|
||||
sec
|
||||
sbc #1
|
||||
//SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta YPOS+3
|
||||
//SEG48 [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuxx=_deref_pbuc1_minus_1
|
||||
ldx YPOS+3
|
||||
dex
|
||||
//SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx YPOS+3
|
||||
//SEG50 [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
lda YPOS+3
|
||||
cmp #$ff
|
||||
@ -3111,11 +3091,11 @@ Removing instruction jmp b8
|
||||
Removing instruction jmp b1
|
||||
Removing instruction jmp breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
Removing instruction lda XPOS+0
|
||||
Removing instruction lda YPOS+0
|
||||
Removing instruction lda XPOS+1
|
||||
Removing instruction lda YPOS+2
|
||||
Removing instruction lda YPOS+3
|
||||
Replacing instruction lda XPOS+0 with TXA
|
||||
Replacing instruction lda YPOS+0 with TXA
|
||||
Replacing instruction lda XPOS+1 with TXA
|
||||
Replacing instruction lda YPOS+2 with TXA
|
||||
Replacing instruction lda YPOS+3 with TXA
|
||||
Removing instruction lda XPOS+3
|
||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||
Replacing label b1_from_b5 with b1
|
||||
@ -3199,13 +3179,13 @@ FINAL SYMBOL TABLE
|
||||
(byte[]) YPOS
|
||||
(const byte[]) YPOS#0 YPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 }
|
||||
(void()) animate()
|
||||
(byte/word~) animate::$0 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$12 reg byte a 4.0
|
||||
(byte/word~) animate::$0 reg byte x 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$12 reg byte x 4.0
|
||||
(byte/word~) animate::$15 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$18 reg byte a 4.0
|
||||
(byte/word~) animate::$3 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$6 reg byte a 4.0
|
||||
(byte/word~) animate::$9 reg byte a 4.0
|
||||
(byte/word~) animate::$3 reg byte x 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$6 reg byte x 4.0
|
||||
(byte/word~) animate::$9 reg byte x 4.0
|
||||
(label) animate::@1
|
||||
(label) animate::@10
|
||||
(label) animate::@11
|
||||
@ -3303,11 +3283,11 @@ zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
|
||||
reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
|
||||
zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ]
|
||||
reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
|
||||
reg byte a [ animate::$0 ]
|
||||
reg byte a [ animate::$3 ]
|
||||
reg byte a [ animate::$6 ]
|
||||
reg byte a [ animate::$9 ]
|
||||
reg byte a [ animate::$12 ]
|
||||
reg byte x [ animate::$0 ]
|
||||
reg byte x [ animate::$3 ]
|
||||
reg byte x [ animate::$6 ]
|
||||
reg byte x [ animate::$9 ]
|
||||
reg byte x [ animate::$12 ]
|
||||
reg byte a [ animate::$15 ]
|
||||
reg byte a [ animate::$18 ]
|
||||
reg byte a [ findcol::return#0 ]
|
||||
@ -3360,13 +3340,13 @@ main: {
|
||||
}
|
||||
//SEG23 animate
|
||||
animate: {
|
||||
//SEG24 [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuaa=_deref_pbuc1_plus_1
|
||||
lda XPOS+0
|
||||
clc
|
||||
adc #1
|
||||
//SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta XPOS+0
|
||||
//SEG24 [12] (byte/word~) animate::$0 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$0 ] ( main:2::animate:9 [ animate::$0 ] ) -- vbuxx=_deref_pbuc1_plus_1
|
||||
ldx XPOS+0
|
||||
inx
|
||||
//SEG25 [13] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$0 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx XPOS+0
|
||||
//SEG26 [14] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 40) goto animate::@1 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
txa
|
||||
cmp #$28
|
||||
bne b1
|
||||
//SEG27 animate::@7
|
||||
@ -3375,13 +3355,13 @@ animate: {
|
||||
sta XPOS+0
|
||||
//SEG29 animate::@1
|
||||
b1:
|
||||
//SEG30 [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuaa=_deref_pbuc1_plus_1
|
||||
lda YPOS+0
|
||||
clc
|
||||
adc #1
|
||||
//SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta YPOS+0
|
||||
//SEG30 [16] (byte/word~) animate::$3 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) + (byte/signed byte/word/signed word) 1 [ animate::$3 ] ( main:2::animate:9 [ animate::$3 ] ) -- vbuxx=_deref_pbuc1_plus_1
|
||||
ldx YPOS+0
|
||||
inx
|
||||
//SEG31 [17] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0) ← (byte/word~) animate::$3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx YPOS+0
|
||||
//SEG32 [18] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 0)!=(byte/signed byte/word/signed word) 25) goto animate::@2 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
txa
|
||||
cmp #$19
|
||||
bne b2
|
||||
//SEG33 animate::@8
|
||||
@ -3390,13 +3370,13 @@ animate: {
|
||||
sta YPOS+0
|
||||
//SEG35 animate::@2
|
||||
b2:
|
||||
//SEG36 [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuaa=_deref_pbuc1_minus_1
|
||||
lda XPOS+1
|
||||
sec
|
||||
sbc #1
|
||||
//SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta XPOS+1
|
||||
//SEG36 [20] (byte/signed byte/word/signed word~) animate::$6 ← *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) - (byte/signed byte/word/signed word) 1 [ animate::$6 ] ( main:2::animate:9 [ animate::$6 ] ) -- vbuxx=_deref_pbuc1_minus_1
|
||||
ldx XPOS+1
|
||||
dex
|
||||
//SEG37 [21] *((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1) ← (byte/signed byte/word/signed word~) animate::$6 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx XPOS+1
|
||||
//SEG38 [22] if(*((const byte[]) XPOS#0+(byte/signed byte/word/signed word) 1)!=(byte/word/signed word) 255) goto animate::@3 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
txa
|
||||
cmp #$ff
|
||||
bne b3
|
||||
//SEG39 animate::@9
|
||||
@ -3405,13 +3385,13 @@ animate: {
|
||||
sta XPOS+1
|
||||
//SEG41 animate::@3
|
||||
b3:
|
||||
//SEG42 [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuaa=_deref_pbuc1_plus_1
|
||||
lda YPOS+2
|
||||
clc
|
||||
adc #1
|
||||
//SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/word~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta YPOS+2
|
||||
//SEG42 [24] (byte/word~) animate::$9 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) + (byte/signed byte/word/signed word) 1 [ animate::$9 ] ( main:2::animate:9 [ animate::$9 ] ) -- vbuxx=_deref_pbuc1_plus_1
|
||||
ldx YPOS+2
|
||||
inx
|
||||
//SEG43 [25] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2) ← (byte/word~) animate::$9 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx YPOS+2
|
||||
//SEG44 [26] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 2)!=(byte/signed byte/word/signed word) 25) goto animate::@4 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
txa
|
||||
cmp #$19
|
||||
bne b4
|
||||
//SEG45 animate::@10
|
||||
@ -3420,13 +3400,13 @@ animate: {
|
||||
sta YPOS+2
|
||||
//SEG47 animate::@4
|
||||
b4:
|
||||
//SEG48 [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuaa=_deref_pbuc1_minus_1
|
||||
lda YPOS+3
|
||||
sec
|
||||
sbc #1
|
||||
//SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuaa
|
||||
sta YPOS+3
|
||||
//SEG48 [28] (byte/signed byte/word/signed word~) animate::$12 ← *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) - (byte/signed byte/word/signed word) 1 [ animate::$12 ] ( main:2::animate:9 [ animate::$12 ] ) -- vbuxx=_deref_pbuc1_minus_1
|
||||
ldx YPOS+3
|
||||
dex
|
||||
//SEG49 [29] *((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3) ← (byte/signed byte/word/signed word~) animate::$12 [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1=vbuxx
|
||||
stx YPOS+3
|
||||
//SEG50 [30] if(*((const byte[]) YPOS#0+(byte/signed byte/word/signed word) 3)!=(byte/word/signed word) 255) goto animate::@return [ ] ( main:2::animate:9 [ ] ) -- _deref_pbuc1_neq_vbuc2_then_la1
|
||||
txa
|
||||
cmp #$ff
|
||||
bne breturn
|
||||
//SEG51 animate::@11
|
||||
|
@ -14,13 +14,13 @@
|
||||
(byte[]) YPOS
|
||||
(const byte[]) YPOS#0 YPOS = { (byte/signed byte/word/signed word) 5, (byte/signed byte/word/signed word) 8, (byte/signed byte/word/signed word) 14, (byte/signed byte/word/signed word) 2, (byte/signed byte/word/signed word) 17, (byte/signed byte/word/signed word) 22 }
|
||||
(void()) animate()
|
||||
(byte/word~) animate::$0 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$12 reg byte a 4.0
|
||||
(byte/word~) animate::$0 reg byte x 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$12 reg byte x 4.0
|
||||
(byte/word~) animate::$15 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$18 reg byte a 4.0
|
||||
(byte/word~) animate::$3 reg byte a 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$6 reg byte a 4.0
|
||||
(byte/word~) animate::$9 reg byte a 4.0
|
||||
(byte/word~) animate::$3 reg byte x 4.0
|
||||
(byte/signed byte/word/signed word~) animate::$6 reg byte x 4.0
|
||||
(byte/word~) animate::$9 reg byte x 4.0
|
||||
(label) animate::@1
|
||||
(label) animate::@10
|
||||
(label) animate::@11
|
||||
@ -118,11 +118,11 @@ zp ZP_BYTE:6 [ findcol::mindiff#10 findcol::mindiff#13 ]
|
||||
reg byte y [ findcol::return#2 findcol::mincol#10 findcol::mincol#2 findcol::mincol#1 ]
|
||||
zp ZP_BYTE:7 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 findcol::xp#0 ]
|
||||
reg byte a [ findcol::mindiff#11 findcol::diff#6 findcol::diff#3 findcol::diff#2 findcol::mindiff#15 ]
|
||||
reg byte a [ animate::$0 ]
|
||||
reg byte a [ animate::$3 ]
|
||||
reg byte a [ animate::$6 ]
|
||||
reg byte a [ animate::$9 ]
|
||||
reg byte a [ animate::$12 ]
|
||||
reg byte x [ animate::$0 ]
|
||||
reg byte x [ animate::$3 ]
|
||||
reg byte x [ animate::$6 ]
|
||||
reg byte x [ animate::$9 ]
|
||||
reg byte x [ animate::$12 ]
|
||||
reg byte a [ animate::$15 ]
|
||||
reg byte a [ animate::$18 ]
|
||||
reg byte a [ findcol::return#0 ]
|
||||
|
Loading…
Reference in New Issue
Block a user