mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-06-20 03:29:32 +00:00
Allocation of zp/memory to variables is now prioritized by the calculated weight of the variable. This ensures that the most used variables are kept on zeropage when variables spill over into main memory. Closes #712
This commit is contained in:
parent
1f91617ad1
commit
5d6fcca6c2
|
@ -158,10 +158,8 @@ public class Pass4RegistersFinalize extends Pass2Base {
|
|||
|
||||
LiveRangeEquivalenceClassSet equivalenceClassSet = getProgram().getLiveRangeEquivalenceClassSet();
|
||||
List<LiveRangeEquivalenceClass> equivalenceClasses = new ArrayList<>(equivalenceClassSet.getEquivalenceClasses());
|
||||
/*
|
||||
final VariableRegisterWeights registerWeights = getProgram().getVariableRegisterWeights();
|
||||
Collections.sort(equivalenceClasses, (o1, o2) -> Double.compare(registerWeights.getTotalWeight(o2), registerWeights.getTotalWeight(o1)));
|
||||
*/
|
||||
|
||||
for(LiveRangeEquivalenceClass equivalenceClass : equivalenceClasses) {
|
||||
Registers.Register register = equivalenceClass.getRegister();
|
||||
|
|
|
@ -94,23 +94,24 @@ Added variable main::c#0 to live range equivalence class [ main::c#0 ]
|
|||
Complete equivalence classes
|
||||
[ main::b ]
|
||||
[ main::c#0 ]
|
||||
Allocated zp[1]:2 [ main::b ]
|
||||
Allocated zp[1]:3 [ main::c#0 ]
|
||||
Allocated zp[1]:2 [ main::c#0 ]
|
||||
Allocated zp[1]:3 [ main::b ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] main::b = 0 [ main::b ] ( [ main::b ] { } ) always clobbers reg byte a
|
||||
Statement [2] main::SCREEN[main::b] = main::c#0 [ main::b ] ( [ main::b ] { } ) always clobbers reg byte y
|
||||
Statement [4] if(main::b!=$b) goto main::@1 [ main::b ] ( [ main::b ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::b ] : zp[1]:2 ,
|
||||
Potential registers zp[1]:3 [ main::c#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::b ] : zp[1]:3 ,
|
||||
Potential registers zp[1]:2 [ main::c#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 22: zp[1]:3 [ main::c#0 ] 9.2: zp[1]:2 [ main::b ]
|
||||
Uplift Scope [main] 22: zp[1]:2 [ main::c#0 ] 9.2: zp[1]:3 [ main::b ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 319 combination reg byte a [ main::c#0 ] zp[1]:2 [ main::b ]
|
||||
Uplifting [main] best 319 combination reg byte a [ main::c#0 ] zp[1]:3 [ main::b ]
|
||||
Uplifting [] best 319 combination
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::b ]
|
||||
Uplifting [main] best 319 combination zp[1]:2 [ main::b ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ main::b ]
|
||||
Uplifting [main] best 319 combination zp[1]:3 [ main::b ]
|
||||
Allocated (was zp[1]:3) zp[1]:2 [ main::b ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -9,10 +9,10 @@
|
|||
:BasicUpstart(main)
|
||||
.const SIZEOF_INT = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
.label idx = 2
|
||||
.segment Code
|
||||
main: {
|
||||
.label i = 2
|
||||
.label i = 5
|
||||
// print(VALS)
|
||||
lda #<VALS
|
||||
sta.z print.p
|
||||
|
@ -49,9 +49,9 @@ main: {
|
|||
// }
|
||||
rts
|
||||
}
|
||||
// void print(__zp(4) int *p)
|
||||
// void print(__zp(3) int *p)
|
||||
print: {
|
||||
.label p = 4
|
||||
.label p = 3
|
||||
// SCREEN[idx++] = *p
|
||||
lda.z idx
|
||||
asl
|
||||
|
|
|
@ -264,42 +264,45 @@ Complete equivalence classes
|
|||
[ print::p#3 print::p#2 ]
|
||||
[ main::$5 ]
|
||||
[ print::$0 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:2 [ print::$0 ]
|
||||
Allocated zp[1]:3 [ idx#13 idx#14 ]
|
||||
Allocated zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
Allocated zp[1]:6 [ main::$5 ]
|
||||
Allocated zp[1]:7 [ print::$0 ]
|
||||
Allocated zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:7 [ main::$5 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [5] main::$5 = main::i#2 << 1 [ main::i#2 main::$5 idx#14 ] ( [ main::i#2 main::$5 idx#14 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#13 idx#14 ]
|
||||
Statement [6] print::p#2 = VALS + main::$5 [ main::i#2 print::p#2 idx#14 ] ( [ main::i#2 print::p#2 idx#14 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a
|
||||
Statement [12] print::$0 = idx#13 << 1 [ idx#13 print::p#3 print::$0 ] ( print:1 [ idx#13 print::p#3 print::$0 ] { } print:3 [ idx#13 print::p#3 print::$0 ] { { idx#13 = idx#14 } } print:7 [ main::i#2 idx#13 print::p#3 print::$0 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a
|
||||
Statement [13] SCREEN[print::$0] = *print::p#3 [ idx#13 ] ( print:1 [ idx#13 ] { } print:3 [ idx#13 ] { { idx#13 = idx#14 } } print:7 [ main::i#2 idx#13 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ idx#13 idx#14 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Statement [5] main::$5 = main::i#2 << 1 [ main::i#2 main::$5 idx#14 ] ( [ main::i#2 main::$5 idx#14 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a
|
||||
Statement [6] print::p#2 = VALS + main::$5 [ main::i#2 print::p#2 idx#14 ] ( [ main::i#2 print::p#2 idx#14 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a
|
||||
Statement [12] print::$0 = idx#13 << 1 [ idx#13 print::p#3 print::$0 ] ( print:1 [ idx#13 print::p#3 print::$0 ] { } print:3 [ idx#13 print::p#3 print::$0 ] { { idx#13 = idx#14 } } print:7 [ main::i#2 idx#13 print::p#3 print::$0 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a
|
||||
Statement [13] SCREEN[print::$0] = *print::p#3 [ idx#13 ] ( print:1 [ idx#13 ] { } print:3 [ idx#13 ] { { idx#13 = idx#14 } } print:7 [ main::i#2 idx#13 ] { { idx#13 = idx#14 } { print::p#2 = print::p#3 } } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , reg byte x ,
|
||||
Potential registers zp[1]:3 [ idx#13 idx#14 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[2]:4 [ print::p#3 print::p#2 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ main::$5 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ print::$0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ main::$5 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ print::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print] 202: zp[1]:7 [ print::$0 ] 78: zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
Uplift Scope [print] 202: zp[1]:2 [ print::$0 ] 78: zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
Uplift Scope [] 82.03: zp[1]:3 [ idx#13 idx#14 ]
|
||||
Uplift Scope [main] 24.75: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::$5 ]
|
||||
Uplift Scope [main] 24.75: zp[1]:6 [ main::i#2 main::i#1 ] 22: zp[1]:7 [ main::$5 ]
|
||||
|
||||
Uplifting [print] best 616 combination reg byte a [ print::$0 ] zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
Uplifting [] best 616 combination zp[1]:3 [ idx#13 idx#14 ]
|
||||
Uplifting [main] best 556 combination zp[1]:2 [ main::i#2 main::i#1 ] reg byte a [ main::$5 ]
|
||||
Uplifting [main] best 556 combination zp[1]:6 [ main::i#2 main::i#1 ] reg byte a [ main::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ idx#13 idx#14 ]
|
||||
Uplifting [] best 556 combination zp[1]:3 [ idx#13 idx#14 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 556 combination zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 556 combination zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Allocated (was zp[1]:3) zp[1]:2 [ idx#13 idx#14 ]
|
||||
Allocated (was zp[2]:4) zp[2]:3 [ print::p#3 print::p#2 ]
|
||||
Allocated (was zp[1]:6) zp[1]:5 [ main::i#2 main::i#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -316,11 +319,11 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
// Global Constants & labels
|
||||
.const SIZEOF_INT = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
.label idx = 2
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label i = 2
|
||||
.label i = 5
|
||||
// [1] call print
|
||||
// [11] phi from main to print [phi:main->print]
|
||||
print_from_main:
|
||||
|
@ -392,9 +395,9 @@ main: {
|
|||
rts
|
||||
}
|
||||
// print
|
||||
// void print(__zp(4) int *p)
|
||||
// void print(__zp(3) int *p)
|
||||
print: {
|
||||
.label p = 4
|
||||
.label p = 3
|
||||
// [12] print::$0 = idx#13 << 1 -- vbuaa=vbuz1_rol_1
|
||||
lda.z idx
|
||||
asl
|
||||
|
@ -446,22 +449,22 @@ __constant int * const SCREEN = (int *) 1024
|
|||
__constant char SIZEOF_INT = 2
|
||||
__constant int VALS[] = { 1, 2, 3, 4 }
|
||||
char idx
|
||||
char idx#13 // idx zp[1]:3 71.66666666666666
|
||||
char idx#14 // idx zp[1]:3 10.363636363636363
|
||||
char idx#13 // idx zp[1]:2 71.66666666666666
|
||||
char idx#14 // idx zp[1]:2 10.363636363636363
|
||||
void main()
|
||||
char main::$5 // reg byte a 22.0
|
||||
char main::i
|
||||
char main::i#1 // i zp[1]:2 16.5
|
||||
char main::i#2 // i zp[1]:2 8.25
|
||||
char main::i#1 // i zp[1]:5 16.5
|
||||
char main::i#2 // i zp[1]:5 8.25
|
||||
void print(int *p)
|
||||
char print::$0 // reg byte a 202.0
|
||||
int *print::p
|
||||
int *print::p#2 // p zp[2]:4 22.0
|
||||
int *print::p#3 // p zp[2]:4 56.0
|
||||
int *print::p#2 // p zp[2]:3 22.0
|
||||
int *print::p#3 // p zp[2]:3 56.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ idx#13 idx#14 ]
|
||||
zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
zp[1]:5 [ main::i#2 main::i#1 ]
|
||||
zp[1]:2 [ idx#13 idx#14 ]
|
||||
zp[2]:3 [ print::p#3 print::p#2 ]
|
||||
reg byte a [ main::$5 ]
|
||||
reg byte a [ print::$0 ]
|
||||
|
||||
|
@ -483,11 +486,11 @@ Score: 457
|
|||
// Global Constants & labels
|
||||
.const SIZEOF_INT = 2
|
||||
.label SCREEN = $400
|
||||
.label idx = 3
|
||||
.label idx = 2
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label i = 2
|
||||
.label i = 5
|
||||
// print(VALS)
|
||||
// [1] call print
|
||||
// [11] phi from main to print [phi:main->print]
|
||||
|
@ -551,9 +554,9 @@ main: {
|
|||
rts
|
||||
}
|
||||
// print
|
||||
// void print(__zp(4) int *p)
|
||||
// void print(__zp(3) int *p)
|
||||
print: {
|
||||
.label p = 4
|
||||
.label p = 3
|
||||
// SCREEN[idx++] = *p
|
||||
// [12] print::$0 = idx#13 << 1 -- vbuaa=vbuz1_rol_1
|
||||
lda.z idx
|
||||
|
|
|
@ -2,21 +2,21 @@ __constant int * const SCREEN = (int *) 1024
|
|||
__constant char SIZEOF_INT = 2
|
||||
__constant int VALS[] = { 1, 2, 3, 4 }
|
||||
char idx
|
||||
char idx#13 // idx zp[1]:3 71.66666666666666
|
||||
char idx#14 // idx zp[1]:3 10.363636363636363
|
||||
char idx#13 // idx zp[1]:2 71.66666666666666
|
||||
char idx#14 // idx zp[1]:2 10.363636363636363
|
||||
void main()
|
||||
char main::$5 // reg byte a 22.0
|
||||
char main::i
|
||||
char main::i#1 // i zp[1]:2 16.5
|
||||
char main::i#2 // i zp[1]:2 8.25
|
||||
char main::i#1 // i zp[1]:5 16.5
|
||||
char main::i#2 // i zp[1]:5 8.25
|
||||
void print(int *p)
|
||||
char print::$0 // reg byte a 202.0
|
||||
int *print::p
|
||||
int *print::p#2 // p zp[2]:4 22.0
|
||||
int *print::p#3 // p zp[2]:4 56.0
|
||||
int *print::p#2 // p zp[2]:3 22.0
|
||||
int *print::p#3 // p zp[2]:3 56.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ idx#13 idx#14 ]
|
||||
zp[2]:4 [ print::p#3 print::p#2 ]
|
||||
zp[1]:5 [ main::i#2 main::i#1 ]
|
||||
zp[1]:2 [ idx#13 idx#14 ]
|
||||
zp[2]:3 [ print::p#3 print::p#2 ]
|
||||
reg byte a [ main::$5 ]
|
||||
reg byte a [ print::$0 ]
|
||||
|
|
|
@ -221,19 +221,19 @@ Complete equivalence classes
|
|||
[ getValue::$1 ]
|
||||
[ getValue::$2 ]
|
||||
[ getValue::return#1 ]
|
||||
Allocated zp[1]:2 [ main::idx#2 main::idx#1 ]
|
||||
Allocated zp[2]:3 [ getValue::index#0 ]
|
||||
Allocated zp[2]:5 [ getValue::return#0 ]
|
||||
Allocated zp[2]:7 [ main::$0 ]
|
||||
Allocated zp[1]:9 [ main::$2 ]
|
||||
Allocated zp[1]:10 [ getValue::$0 ]
|
||||
Allocated zp[1]:11 [ getValue::$3 ]
|
||||
Allocated zp[1]:12 [ getValue::$1 ]
|
||||
Allocated zp[1]:13 [ getValue::$2 ]
|
||||
Allocated zp[2]:14 [ getValue::return#1 ]
|
||||
Allocated zp[1]:2 [ getValue::$0 ]
|
||||
Allocated zp[1]:3 [ getValue::$3 ]
|
||||
Allocated zp[1]:4 [ getValue::$1 ]
|
||||
Allocated zp[2]:5 [ getValue::index#0 ]
|
||||
Allocated zp[1]:7 [ getValue::$2 ]
|
||||
Allocated zp[2]:8 [ getValue::return#1 ]
|
||||
Allocated zp[1]:10 [ main::idx#2 main::idx#1 ]
|
||||
Allocated zp[2]:11 [ getValue::return#0 ]
|
||||
Allocated zp[1]:13 [ main::$2 ]
|
||||
Allocated zp[2]:14 [ main::$0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [2] getValue::index#0 = main::idx#2 [ main::idx#2 getValue::index#0 ] ( [ main::idx#2 getValue::index#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::idx#2 main::idx#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::idx#2 main::idx#1 ]
|
||||
Statement [4] getValue::return#0 = getValue::return#1 [ main::idx#2 getValue::return#0 ] ( [ main::idx#2 getValue::return#0 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Statement [5] main::$0 = getValue::return#0 [ main::idx#2 main::$0 ] ( [ main::idx#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::$2 = main::idx#2 << 1 [ main::idx#2 main::$0 main::$2 ] ( [ main::idx#2 main::$0 main::$2 ] { } ) always clobbers reg byte a
|
||||
|
@ -253,30 +253,30 @@ Statement [12] getValue::$3 = getValue::$0 << 1 [ getValue::$3 ] ( getValue:3 [
|
|||
Statement [13] getValue::$1 = arr16[getValue::$3] & $ff [ getValue::$1 ] ( getValue:3 [ main::idx#2 getValue::$1 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Statement [14] getValue::$2 = getValue::$1 >> 1 [ getValue::$2 ] ( getValue:3 [ main::idx#2 getValue::$2 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Statement [15] getValue::return#1 = (unsigned int)getValue::$2 [ getValue::return#1 ] ( getValue:3 [ main::idx#2 getValue::return#1 ] { { getValue::index#0 = main::idx#2 } { getValue::return#0 = getValue::return#1 } } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::idx#2 main::idx#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ getValue::index#0 ] : zp[2]:3 ,
|
||||
Potential registers zp[2]:5 [ getValue::return#0 ] : zp[2]:5 ,
|
||||
Potential registers zp[2]:7 [ main::$0 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:9 [ main::$2 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ getValue::$0 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ getValue::$3 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:12 [ getValue::$1 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ getValue::$2 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:14 [ getValue::return#1 ] : zp[2]:14 ,
|
||||
Potential registers zp[1]:10 [ main::idx#2 main::idx#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:5 [ getValue::index#0 ] : zp[2]:5 ,
|
||||
Potential registers zp[2]:11 [ getValue::return#0 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:14 [ main::$0 ] : zp[2]:14 ,
|
||||
Potential registers zp[1]:13 [ main::$2 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ getValue::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ getValue::$3 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ getValue::$1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ getValue::$2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:8 [ getValue::return#1 ] : zp[2]:8 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [getValue] 202: zp[1]:10 [ getValue::$0 ] 202: zp[1]:11 [ getValue::$3 ] 202: zp[1]:12 [ getValue::$1 ] 112: zp[2]:3 [ getValue::index#0 ] 101: zp[1]:13 [ getValue::$2 ] 37.33: zp[2]:14 [ getValue::return#1 ] 22: zp[2]:5 [ getValue::return#0 ]
|
||||
Uplift Scope [main] 22.79: zp[1]:2 [ main::idx#2 main::idx#1 ] 22: zp[1]:9 [ main::$2 ] 11: zp[2]:7 [ main::$0 ]
|
||||
Uplift Scope [getValue] 202: zp[1]:2 [ getValue::$0 ] 202: zp[1]:3 [ getValue::$3 ] 202: zp[1]:4 [ getValue::$1 ] 112: zp[2]:5 [ getValue::index#0 ] 101: zp[1]:7 [ getValue::$2 ] 37.33: zp[2]:8 [ getValue::return#1 ] 22: zp[2]:11 [ getValue::return#0 ]
|
||||
Uplift Scope [main] 22.79: zp[1]:10 [ main::idx#2 main::idx#1 ] 22: zp[1]:13 [ main::$2 ] 11: zp[2]:14 [ main::$0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [getValue] best 1015 combination reg byte a [ getValue::$0 ] reg byte a [ getValue::$3 ] reg byte a [ getValue::$1 ] zp[2]:3 [ getValue::index#0 ] reg byte a [ getValue::$2 ] zp[2]:14 [ getValue::return#1 ] zp[2]:5 [ getValue::return#0 ]
|
||||
Uplifting [getValue] best 1015 combination reg byte a [ getValue::$0 ] reg byte a [ getValue::$3 ] reg byte a [ getValue::$1 ] zp[2]:5 [ getValue::index#0 ] reg byte a [ getValue::$2 ] zp[2]:8 [ getValue::return#1 ] zp[2]:11 [ getValue::return#0 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [main] best 865 combination reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::$2 ] zp[2]:7 [ main::$0 ]
|
||||
Uplifting [main] best 865 combination reg byte x [ main::idx#2 main::idx#1 ] reg byte a [ main::$2 ] zp[2]:14 [ main::$0 ]
|
||||
Uplifting [] best 865 combination
|
||||
Coalescing zero page register [ zp[2]:5 [ getValue::return#0 ] ] with [ zp[2]:7 [ main::$0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:5 [ getValue::return#0 main::$0 ] ] with [ zp[2]:14 [ getValue::return#1 ] ] - score: 1
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ getValue::index#0 ]
|
||||
Allocated (was zp[2]:5) zp[2]:4 [ getValue::return#0 main::$0 getValue::return#1 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ getValue::return#0 ] ] with [ zp[2]:14 [ main::$0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:11 [ getValue::return#0 main::$0 ] ] with [ zp[2]:8 [ getValue::return#1 ] ] - score: 1
|
||||
Allocated (was zp[2]:5) zp[2]:2 [ getValue::index#0 ]
|
||||
Allocated (was zp[2]:11) zp[2]:4 [ getValue::return#0 main::$0 getValue::return#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -199,32 +199,32 @@ Complete equivalence classes
|
|||
[ main::sub#2 main::sub#1 ]
|
||||
[ main::$0 ]
|
||||
[ main::$1 ]
|
||||
Allocated zp[1]:2 [ main::item#4 main::item#1 ]
|
||||
Allocated zp[2]:3 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Allocated zp[1]:5 [ main::sub#2 main::sub#1 ]
|
||||
Allocated zp[1]:6 [ main::$0 ]
|
||||
Allocated zp[1]:7 [ main::$1 ]
|
||||
Allocated zp[1]:2 [ main::sub#2 main::sub#1 ]
|
||||
Allocated zp[1]:3 [ main::$0 ]
|
||||
Allocated zp[1]:4 [ main::$1 ]
|
||||
Allocated zp[1]:5 [ main::item#4 main::item#1 ]
|
||||
Allocated zp[2]:6 [ main::cur_item#4 main::cur_item#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] main::$0 = main::item#4 << 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::item#4 main::item#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::sub#2 main::sub#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::item#4 main::item#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::sub#2 main::sub#1 ]
|
||||
Statement [8] main::cur_item#1 = main::cur_item#4 + ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( [ main::item#4 main::cur_item#1 ] { } ) always clobbers reg byte a
|
||||
Statement [3] main::$0 = main::item#4 << 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] ( [ main::item#4 main::cur_item#4 main::sub#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Statement [8] main::cur_item#1 = main::cur_item#4 + ITEM_SIZE [ main::item#4 main::cur_item#1 ] ( [ main::item#4 main::cur_item#1 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::item#4 main::item#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ main::cur_item#4 main::cur_item#1 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:5 [ main::sub#2 main::sub#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::$0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ main::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::item#4 main::item#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:6 [ main::cur_item#4 main::cur_item#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:2 [ main::sub#2 main::sub#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::$1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 252.5: zp[1]:5 [ main::sub#2 main::sub#1 ] 202: zp[1]:6 [ main::$0 ] 202: zp[1]:7 [ main::$1 ] 31.88: zp[1]:2 [ main::item#4 main::item#1 ] 24.9: zp[2]:3 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Uplift Scope [main] 252.5: zp[1]:2 [ main::sub#2 main::sub#1 ] 202: zp[1]:3 [ main::$0 ] 202: zp[1]:4 [ main::$1 ] 31.88: zp[1]:5 [ main::item#4 main::item#1 ] 24.9: zp[2]:6 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 4406 combination reg byte y [ main::sub#2 main::sub#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte x [ main::item#4 main::item#1 ] zp[2]:3 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Uplifting [main] best 4406 combination reg byte y [ main::sub#2 main::sub#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte x [ main::item#4 main::item#1 ] zp[2]:6 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Limited combination testing to 100 combinations of 144 possible.
|
||||
Uplifting [] best 4406 combination
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ main::cur_item#4 main::cur_item#1 ]
|
||||
Allocated (was zp[2]:6) zp[2]:2 [ main::cur_item#4 main::cur_item#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -670,12 +670,12 @@ Initial phi equivalence classes
|
|||
Complete equivalence classes
|
||||
[ test::a#11 ]
|
||||
[ test::i#11 ]
|
||||
Allocated zp[1]:2 [ test::a#11 ]
|
||||
Allocated zp[1]:3 [ test::i#11 ]
|
||||
Allocated zp[1]:2 [ test::i#11 ]
|
||||
Allocated zp[1]:3 [ test::a#11 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [25] screen2#0[test::i#11] = ref[test::i#11] [ test::a#11 test::i#11 ] ( test:1 [ test::a#11 test::i#11 ] { } test:3 [ test::a#11 test::i#11 ] { } test:5 [ test::a#11 test::i#11 ] { } test:7 [ test::a#11 test::i#11 ] { } test:9 [ test::a#11 test::i#11 ] { } test:11 [ test::a#11 test::i#11 ] { } test:13 [ test::a#11 test::i#11 ] { } test:15 [ test::a#11 test::i#11 ] { } test:17 [ test::a#11 test::i#11 ] { } test:19 [ test::a#11 test::i#11 ] { } test:21 [ test::a#11 test::i#11 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ test::a#11 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ test::i#11 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ test::a#11 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ test::i#11 ]
|
||||
Statement [26] if(ref[test::i#11]==test::a#11) goto test::@1 [ test::i#11 ] ( test:1 [ test::i#11 ] { } test:3 [ test::i#11 ] { } test:5 [ test::i#11 ] { } test:7 [ test::i#11 ] { } test:9 [ test::i#11 ] { } test:11 [ test::i#11 ] { } test:13 [ test::i#11 ] { } test:15 [ test::i#11 ] { } test:17 [ test::i#11 ] { } test:19 [ test::i#11 ] { } test:21 [ test::i#11 ] { } ) always clobbers reg byte a
|
||||
Statement [27] cols[test::i#11] = RED [ ] ( test:1 [ ] { } test:3 [ ] { } test:5 [ ] { } test:7 [ ] { } test:9 [ ] { } test:11 [ ] { } test:13 [ ] { } test:15 [ ] { } test:17 [ ] { } test:19 [ ] { } test:21 [ ] { } ) always clobbers reg byte a
|
||||
Statement [29] cols[test::i#11] = GREEN [ ] ( test:1 [ ] { } test:3 [ ] { } test:5 [ ] { } test:7 [ ] { } test:9 [ ] { } test:11 [ ] { } test:13 [ ] { } test:15 [ ] { } test:17 [ ] { } test:19 [ ] { } test:21 [ ] { } ) always clobbers reg byte a
|
||||
|
@ -684,19 +684,20 @@ Statement [25] screen2#0[test::i#11] = ref[test::i#11] [ test::a#11 test::i#11 ]
|
|||
Statement [26] if(ref[test::i#11]==test::a#11) goto test::@1 [ test::i#11 ] ( test:1 [ test::i#11 ] { } test:3 [ test::i#11 ] { } test:5 [ test::i#11 ] { } test:7 [ test::i#11 ] { } test:9 [ test::i#11 ] { } test:11 [ test::i#11 ] { } test:13 [ test::i#11 ] { } test:15 [ test::i#11 ] { } test:17 [ test::i#11 ] { } test:19 [ test::i#11 ] { } test:21 [ test::i#11 ] { } ) always clobbers reg byte a
|
||||
Statement [27] cols[test::i#11] = RED [ ] ( test:1 [ ] { } test:3 [ ] { } test:5 [ ] { } test:7 [ ] { } test:9 [ ] { } test:11 [ ] { } test:13 [ ] { } test:15 [ ] { } test:17 [ ] { } test:19 [ ] { } test:21 [ ] { } ) always clobbers reg byte a
|
||||
Statement [29] cols[test::i#11] = GREEN [ ] ( test:1 [ ] { } test:3 [ ] { } test:5 [ ] { } test:7 [ ] { } test:9 [ ] { } test:11 [ ] { } test:13 [ ] { } test:15 [ ] { } test:17 [ ] { } test:19 [ ] { } test:21 [ ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ test::a#11 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ test::i#11 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ test::a#11 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ test::i#11 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [test] 16.5: zp[1]:3 [ test::i#11 ] 7.33: zp[1]:2 [ test::a#11 ]
|
||||
Uplift Scope [test] 16.5: zp[1]:2 [ test::i#11 ] 7.33: zp[1]:3 [ test::a#11 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [test] best 238 combination reg byte x [ test::i#11 ] zp[1]:2 [ test::a#11 ]
|
||||
Uplifting [test] best 238 combination reg byte x [ test::i#11 ] zp[1]:3 [ test::a#11 ]
|
||||
Uplifting [main] best 238 combination
|
||||
Uplifting [] best 238 combination
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ test::a#11 ]
|
||||
Uplifting [test] best 238 combination zp[1]:2 [ test::a#11 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ test::a#11 ]
|
||||
Uplifting [test] best 238 combination zp[1]:3 [ test::a#11 ]
|
||||
Allocated (was zp[1]:3) zp[1]:2 [ test::a#11 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -7,8 +7,8 @@
|
|||
.segmentdef Data [startAfter="Code"]
|
||||
.segment Basic
|
||||
:BasicUpstart(__start)
|
||||
.label line = 9
|
||||
.label idx = $b
|
||||
.label line = 7
|
||||
.label idx = 2
|
||||
.segment Code
|
||||
__start: {
|
||||
// __ma char * line = (char*)0x0400
|
||||
|
@ -23,7 +23,7 @@ __start: {
|
|||
rts
|
||||
}
|
||||
main: {
|
||||
.label s = 2
|
||||
.label s = $a
|
||||
lda #<$400
|
||||
sta.z s
|
||||
lda #>$400
|
||||
|
@ -56,9 +56,9 @@ main: {
|
|||
}
|
||||
md5: {
|
||||
.const c = $98
|
||||
.label b = 7
|
||||
.label a = 5
|
||||
.label b_1 = 4
|
||||
.label b = 4
|
||||
.label a = 6
|
||||
.label b_1 = 9
|
||||
lda #c
|
||||
sta.z a
|
||||
lda #$ef
|
||||
|
@ -102,11 +102,11 @@ md5: {
|
|||
sta.z a
|
||||
jmp __b1
|
||||
}
|
||||
// void print(__register(X) char i, __zp(6) char a, __zp(7) char b, __zp(8) char c)
|
||||
// void print(__register(X) char i, __zp(5) char a, __zp(4) char b, __zp(3) char c)
|
||||
print: {
|
||||
.label a = 6
|
||||
.label b = 7
|
||||
.label c = 8
|
||||
.label a = 5
|
||||
.label b = 4
|
||||
.label c = 3
|
||||
// l/0x10
|
||||
txa
|
||||
lsr
|
||||
|
|
|
@ -707,50 +707,50 @@ Complete equivalence classes
|
|||
[ print::print323_$1 ]
|
||||
[ print::print324_$0 ]
|
||||
[ print::print324_$1 ]
|
||||
Allocated zp[2]:2 [ main::s#2 main::s#1 ]
|
||||
Allocated zp[1]:4 [ md5::i#2 md5::i#1 ]
|
||||
Allocated zp[1]:5 [ md5::a#3 md5::a#8 ]
|
||||
Allocated zp[1]:6 [ md5::b#2 md5::b#8 ]
|
||||
Allocated zp[1]:7 [ md5::a#1 md5::a#9 ]
|
||||
Allocated zp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Allocated zp[1]:9 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Allocated zp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Allocated zp[1]:11 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Allocated zp[2]:12 [ line ]
|
||||
Allocated zp[1]:14 [ idx ]
|
||||
Allocated zp[1]:15 [ md5::$2 ]
|
||||
Allocated zp[1]:16 [ md5::b#1 ]
|
||||
Allocated zp[1]:17 [ print::print321_$0 ]
|
||||
Allocated zp[1]:18 [ print::print321_$1 ]
|
||||
Allocated zp[1]:19 [ print::print322_$0 ]
|
||||
Allocated zp[1]:20 [ print::print322_$1 ]
|
||||
Allocated zp[1]:21 [ print::print323_$0 ]
|
||||
Allocated zp[1]:22 [ print::print323_$1 ]
|
||||
Allocated zp[1]:23 [ print::print324_$0 ]
|
||||
Allocated zp[1]:24 [ print::print324_$1 ]
|
||||
Allocated zp[1]:2 [ print::print321_$0 ]
|
||||
Allocated zp[1]:3 [ print::print321_$1 ]
|
||||
Allocated zp[1]:4 [ print::print322_$0 ]
|
||||
Allocated zp[1]:5 [ print::print322_$1 ]
|
||||
Allocated zp[1]:6 [ print::print323_$0 ]
|
||||
Allocated zp[1]:7 [ print::print323_$1 ]
|
||||
Allocated zp[1]:8 [ print::print324_$0 ]
|
||||
Allocated zp[1]:9 [ print::print324_$1 ]
|
||||
Allocated zp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Allocated zp[1]:11 [ idx ]
|
||||
Allocated zp[1]:12 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Allocated zp[1]:13 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Allocated zp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Allocated zp[1]:15 [ md5::a#1 md5::a#9 ]
|
||||
Allocated zp[2]:16 [ line ]
|
||||
Allocated zp[1]:18 [ md5::$2 ]
|
||||
Allocated zp[1]:19 [ md5::a#3 md5::a#8 ]
|
||||
Allocated zp[1]:20 [ md5::b#2 md5::b#8 ]
|
||||
Allocated zp[1]:21 [ md5::i#2 md5::i#1 ]
|
||||
Allocated zp[1]:22 [ md5::b#1 ]
|
||||
Allocated zp[2]:23 [ main::s#2 main::s#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] line = (char *) 1024 [ line ] ( [ line ] { } ) always clobbers reg byte a
|
||||
Statement [2] idx = 0 [ line idx ] ( [ line idx ] { } ) always clobbers reg byte a
|
||||
Statement [8] if(main::s#2<$800) goto main::@2 [ line idx main::s#2 ] ( main:4 [ line idx main::s#2 ] { } ) always clobbers reg byte a
|
||||
Statement [12] *main::s#2 = ' ' [ line idx main::s#2 ] ( main:4 [ line idx main::s#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [37] print::print321_$0 = print::print321_l#0 >> 4 [ line idx print::print321_l#0 print::a#2 print::b#2 print::c#2 print::print321_$0 ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx print::print321_l#0 print::a#2 print::b#2 print::c#2 print::print321_$0 ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx print::print321_l#0 print::a#2 print::b#2 print::c#2 print::print321_$0 ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ md5::i#2 md5::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ md5::b#2 md5::b#8 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ md5::a#1 md5::a#9 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:11 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:16 [ md5::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:21 [ md5::i#2 md5::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ md5::b#2 md5::b#8 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:15 [ md5::a#1 md5::a#9 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:13 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:12 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:22 [ md5::b#1 ]
|
||||
Statement [38] line[idx] = HEX[print::print321_$0] [ line idx print::print321_l#0 print::a#2 print::b#2 print::c#2 ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx print::print321_l#0 print::a#2 print::b#2 print::c#2 ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx print::print321_l#0 print::a#2 print::b#2 print::c#2 ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ md5::i#2 md5::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ md5::b#2 md5::b#8 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:7 [ md5::a#1 md5::a#9 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:9 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:11 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:16 [ md5::b#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:21 [ md5::i#2 md5::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:20 [ md5::b#2 md5::b#8 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:15 [ md5::a#1 md5::a#9 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:13 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:12 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:22 [ md5::b#1 ]
|
||||
Statement [40] print::print321_$1 = print::print321_l#0 & $f [ line idx print::a#2 print::b#2 print::c#2 print::print321_$1 ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx print::a#2 print::b#2 print::c#2 print::print321_$1 ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx print::a#2 print::b#2 print::c#2 print::print321_$1 ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a
|
||||
Statement [41] line[idx] = HEX[print::print321_$1] [ line idx print::a#2 print::b#2 print::c#2 ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx print::a#2 print::b#2 print::c#2 ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx print::a#2 print::b#2 print::c#2 ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [43] line[idx] = ' ' [ line idx print::a#2 print::b#2 print::c#2 ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx print::a#2 print::b#2 print::c#2 ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx print::a#2 print::b#2 print::c#2 ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a reg byte y
|
||||
|
@ -798,74 +798,75 @@ Statement [65] line[idx] = HEX[print::print324_$1] [ line idx ] ( main:4::md5:10
|
|||
Statement [67] line[idx] = ' ' [ line idx ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [69] line = line + $28 [ line ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a
|
||||
Statement [70] idx = 0 [ line idx ] ( main:4::md5:10::print:22 [ md5::i#2 md5::b#2 md5::a#1 line idx ] { { print::print321_l#0 = print::i#0 md5::i#2 } { print::a#0 = print::a#2 md5::a#3 } { print::b#0 = print::b#2 md5::b#2 } { print::c#0 = print::c#2 md5::a#1 } } main:4::md5:10::print:31 [ md5::i#2 md5::b#2 md5::a#1 md5::b#1 line idx ] { { print::print321_l#0 = print::i#1 md5::i#2 } { print::a#1 = print::a#2 md5::a#1 } { print::b#1 = print::b#2 md5::b#1 } { print::c#1 = print::c#2 md5::b#2 } } ) always clobbers reg byte a
|
||||
Potential registers zp[2]:2 [ main::s#2 main::s#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ md5::i#2 md5::i#1 ] : zp[1]:4 , reg byte x ,
|
||||
Potential registers zp[1]:5 [ md5::a#3 md5::a#8 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ md5::b#2 md5::b#8 ] : zp[1]:6 , reg byte x ,
|
||||
Potential registers zp[1]:7 [ md5::a#1 md5::a#9 ] : zp[1]:7 , reg byte x ,
|
||||
Potential registers zp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ] : zp[1]:8 , reg byte x ,
|
||||
Potential registers zp[1]:9 [ print::a#2 print::a#0 print::a#1 ] : zp[1]:9 , reg byte x ,
|
||||
Potential registers zp[1]:10 [ print::b#2 print::b#0 print::b#1 ] : zp[1]:10 , reg byte x ,
|
||||
Potential registers zp[1]:11 [ print::c#2 print::c#0 print::c#1 ] : zp[1]:11 , reg byte x ,
|
||||
Potential registers zp[2]:12 [ line ] : zp[2]:12 ,
|
||||
Potential registers zp[1]:14 [ idx ] : zp[1]:14 ,
|
||||
Potential registers zp[1]:15 [ md5::$2 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:16 [ md5::b#1 ] : zp[1]:16 , reg byte x ,
|
||||
Potential registers zp[1]:17 [ print::print321_$0 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:18 [ print::print321_$1 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:19 [ print::print322_$0 ] : zp[1]:19 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:20 [ print::print322_$1 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:21 [ print::print323_$0 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:22 [ print::print323_$1 ] : zp[1]:22 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:23 [ print::print324_$0 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:24 [ print::print324_$1 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:23 [ main::s#2 main::s#1 ] : zp[2]:23 ,
|
||||
Potential registers zp[1]:21 [ md5::i#2 md5::i#1 ] : zp[1]:21 , reg byte x ,
|
||||
Potential registers zp[1]:19 [ md5::a#3 md5::a#8 ] : zp[1]:19 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:20 [ md5::b#2 md5::b#8 ] : zp[1]:20 , reg byte x ,
|
||||
Potential registers zp[1]:15 [ md5::a#1 md5::a#9 ] : zp[1]:15 , reg byte x ,
|
||||
Potential registers zp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ] : zp[1]:10 , reg byte x ,
|
||||
Potential registers zp[1]:13 [ print::a#2 print::a#0 print::a#1 ] : zp[1]:13 , reg byte x ,
|
||||
Potential registers zp[1]:14 [ print::b#2 print::b#0 print::b#1 ] : zp[1]:14 , reg byte x ,
|
||||
Potential registers zp[1]:12 [ print::c#2 print::c#0 print::c#1 ] : zp[1]:12 , reg byte x ,
|
||||
Potential registers zp[2]:16 [ line ] : zp[2]:16 ,
|
||||
Potential registers zp[1]:11 [ idx ] : zp[1]:11 ,
|
||||
Potential registers zp[1]:18 [ md5::$2 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:22 [ md5::b#1 ] : zp[1]:22 , reg byte x ,
|
||||
Potential registers zp[1]:2 [ print::print321_$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ print::print321_$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ print::print322_$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ print::print322_$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ print::print323_$0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ print::print323_$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ print::print324_$0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ print::print324_$1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print] 20,002: zp[1]:17 [ print::print321_$0 ] 20,002: zp[1]:18 [ print::print321_$1 ] 20,002: zp[1]:19 [ print::print322_$0 ] 20,002: zp[1]:20 [ print::print322_$1 ] 20,002: zp[1]:21 [ print::print323_$0 ] 20,002: zp[1]:22 [ print::print323_$1 ] 20,002: zp[1]:23 [ print::print324_$0 ] 20,002: zp[1]:24 [ print::print324_$1 ] 6,502: zp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ] 4,789.86: zp[1]:11 [ print::c#2 print::c#0 print::c#1 ] 3,168.33: zp[1]:9 [ print::a#2 print::a#0 print::a#1 ] 3,102.2: zp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Uplift Scope [md5] 2,237.53: zp[1]:7 [ md5::a#1 md5::a#9 ] 2,002: zp[1]:15 [ md5::$2 ] 1,334.67: zp[1]:5 [ md5::a#3 md5::a#8 ] 1,264.42: zp[1]:6 [ md5::b#2 md5::b#8 ] 875.88: zp[1]:4 [ md5::i#2 md5::i#1 ] 375.38: zp[1]:16 [ md5::b#1 ]
|
||||
Uplift Scope [] 5,873.63: zp[1]:14 [ idx ] 2,121.45: zp[2]:12 [ line ]
|
||||
Uplift Scope [main] 336.67: zp[2]:2 [ main::s#2 main::s#1 ]
|
||||
Uplift Scope [print] 20,002: zp[1]:2 [ print::print321_$0 ] 20,002: zp[1]:3 [ print::print321_$1 ] 20,002: zp[1]:4 [ print::print322_$0 ] 20,002: zp[1]:5 [ print::print322_$1 ] 20,002: zp[1]:6 [ print::print323_$0 ] 20,002: zp[1]:7 [ print::print323_$1 ] 20,002: zp[1]:8 [ print::print324_$0 ] 20,002: zp[1]:9 [ print::print324_$1 ] 6,502: zp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ] 4,789.86: zp[1]:12 [ print::c#2 print::c#0 print::c#1 ] 3,168.33: zp[1]:13 [ print::a#2 print::a#0 print::a#1 ] 3,102.2: zp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Uplift Scope [md5] 2,237.53: zp[1]:15 [ md5::a#1 md5::a#9 ] 2,002: zp[1]:18 [ md5::$2 ] 1,334.67: zp[1]:19 [ md5::a#3 md5::a#8 ] 1,264.42: zp[1]:20 [ md5::b#2 md5::b#8 ] 875.88: zp[1]:21 [ md5::i#2 md5::i#1 ] 375.38: zp[1]:22 [ md5::b#1 ]
|
||||
Uplift Scope [] 5,873.63: zp[1]:11 [ idx ] 2,121.45: zp[2]:16 [ line ]
|
||||
Uplift Scope [main] 336.67: zp[2]:23 [ main::s#2 main::s#1 ]
|
||||
Uplift Scope [__start]
|
||||
|
||||
Uplifting [print] best 2443 combination reg byte a [ print::print321_$0 ] reg byte a [ print::print321_$1 ] reg byte a [ print::print322_$0 ] reg byte a [ print::print322_$1 ] zp[1]:21 [ print::print323_$0 ] zp[1]:22 [ print::print323_$1 ] zp[1]:23 [ print::print324_$0 ] zp[1]:24 [ print::print324_$1 ] zp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ] zp[1]:11 [ print::c#2 print::c#0 print::c#1 ] zp[1]:9 [ print::a#2 print::a#0 print::a#1 ] zp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Uplifting [print] best 2443 combination reg byte a [ print::print321_$0 ] reg byte a [ print::print321_$1 ] reg byte a [ print::print322_$0 ] reg byte a [ print::print322_$1 ] zp[1]:6 [ print::print323_$0 ] zp[1]:7 [ print::print323_$1 ] zp[1]:8 [ print::print324_$0 ] zp[1]:9 [ print::print324_$1 ] zp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ] zp[1]:12 [ print::c#2 print::c#0 print::c#1 ] zp[1]:13 [ print::a#2 print::a#0 print::a#1 ] zp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Limited combination testing to 100 combinations of 1048576 possible.
|
||||
Uplifting [md5] best 2153 combination zp[1]:7 [ md5::a#1 md5::a#9 ] reg byte a [ md5::$2 ] reg byte y [ md5::a#3 md5::a#8 ] zp[1]:6 [ md5::b#2 md5::b#8 ] reg byte x [ md5::i#2 md5::i#1 ] zp[1]:16 [ md5::b#1 ]
|
||||
Uplifting [md5] best 2153 combination zp[1]:15 [ md5::a#1 md5::a#9 ] reg byte a [ md5::$2 ] reg byte y [ md5::a#3 md5::a#8 ] zp[1]:20 [ md5::b#2 md5::b#8 ] reg byte x [ md5::i#2 md5::i#1 ] zp[1]:22 [ md5::b#1 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [] best 2153 combination zp[1]:14 [ idx ] zp[2]:12 [ line ]
|
||||
Uplifting [main] best 2153 combination zp[2]:2 [ main::s#2 main::s#1 ]
|
||||
Uplifting [] best 2153 combination zp[1]:11 [ idx ] zp[2]:16 [ line ]
|
||||
Uplifting [main] best 2153 combination zp[2]:23 [ main::s#2 main::s#1 ]
|
||||
Uplifting [__start] best 2153 combination
|
||||
Attempting to uplift remaining variables inzp[1]:21 [ print::print323_$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ print::print323_$0 ]
|
||||
Uplifting [print] best 2149 combination reg byte a [ print::print323_$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:22 [ print::print323_$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:7 [ print::print323_$1 ]
|
||||
Uplifting [print] best 2145 combination reg byte a [ print::print323_$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:23 [ print::print324_$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ print::print324_$0 ]
|
||||
Uplifting [print] best 2141 combination reg byte a [ print::print324_$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:24 [ print::print324_$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ print::print324_$1 ]
|
||||
Uplifting [print] best 2137 combination reg byte a [ print::print324_$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:10 [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Uplifting [print] best 2075 combination reg byte x [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:14 [ idx ]
|
||||
Uplifting [] best 2075 combination zp[1]:14 [ idx ]
|
||||
Attempting to uplift remaining variables inzp[1]:11 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Uplifting [print] best 2075 combination zp[1]:11 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Uplifting [print] best 2075 combination zp[1]:9 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Uplifting [print] best 2075 combination zp[1]:10 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:7 [ md5::a#1 md5::a#9 ]
|
||||
Uplifting [md5] best 2075 combination zp[1]:7 [ md5::a#1 md5::a#9 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ md5::b#2 md5::b#8 ]
|
||||
Uplifting [md5] best 2075 combination zp[1]:6 [ md5::b#2 md5::b#8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:16 [ md5::b#1 ]
|
||||
Uplifting [md5] best 2075 combination zp[1]:16 [ md5::b#1 ]
|
||||
Coalescing zero page register [ zp[1]:10 [ print::b#2 print::b#0 print::b#1 ] ] with [ zp[1]:16 [ md5::b#1 ] ] - score: 1
|
||||
Allocated (was zp[1]:6) zp[1]:4 [ md5::b#2 md5::b#8 ]
|
||||
Allocated (was zp[1]:7) zp[1]:5 [ md5::a#1 md5::a#9 ]
|
||||
Allocated (was zp[1]:9) zp[1]:6 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Allocated (was zp[1]:10) zp[1]:7 [ print::b#2 print::b#0 print::b#1 md5::b#1 ]
|
||||
Allocated (was zp[1]:11) zp[1]:8 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Allocated (was zp[2]:12) zp[2]:9 [ line ]
|
||||
Allocated (was zp[1]:14) zp[1]:11 [ idx ]
|
||||
Attempting to uplift remaining variables inzp[1]:11 [ idx ]
|
||||
Uplifting [] best 2075 combination zp[1]:11 [ idx ]
|
||||
Attempting to uplift remaining variables inzp[1]:12 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Uplifting [print] best 2075 combination zp[1]:12 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:13 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Uplifting [print] best 2075 combination zp[1]:13 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Uplifting [print] best 2075 combination zp[1]:14 [ print::b#2 print::b#0 print::b#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:15 [ md5::a#1 md5::a#9 ]
|
||||
Uplifting [md5] best 2075 combination zp[1]:15 [ md5::a#1 md5::a#9 ]
|
||||
Attempting to uplift remaining variables inzp[1]:20 [ md5::b#2 md5::b#8 ]
|
||||
Uplifting [md5] best 2075 combination zp[1]:20 [ md5::b#2 md5::b#8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:22 [ md5::b#1 ]
|
||||
Uplifting [md5] best 2075 combination zp[1]:22 [ md5::b#1 ]
|
||||
Coalescing zero page register [ zp[1]:14 [ print::b#2 print::b#0 print::b#1 ] ] with [ zp[1]:22 [ md5::b#1 ] ] - score: 1
|
||||
Allocated (was zp[1]:11) zp[1]:2 [ idx ]
|
||||
Allocated (was zp[1]:12) zp[1]:3 [ print::c#2 print::c#0 print::c#1 ]
|
||||
Allocated (was zp[1]:14) zp[1]:4 [ print::b#2 print::b#0 print::b#1 md5::b#1 ]
|
||||
Allocated (was zp[1]:13) zp[1]:5 [ print::a#2 print::a#0 print::a#1 ]
|
||||
Allocated (was zp[1]:15) zp[1]:6 [ md5::a#1 md5::a#9 ]
|
||||
Allocated (was zp[2]:16) zp[2]:7 [ line ]
|
||||
Allocated (was zp[1]:20) zp[1]:9 [ md5::b#2 md5::b#8 ]
|
||||
Allocated (was zp[2]:23) zp[2]:10 [ main::s#2 main::s#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -880,8 +881,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.segment Basic
|
||||
:BasicUpstart(__start)
|
||||
// Global Constants & labels
|
||||
.label line = 9
|
||||
.label idx = $b
|
||||
.label line = 7
|
||||
.label idx = 2
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -913,7 +914,7 @@ __start: {
|
|||
}
|
||||
// main
|
||||
main: {
|
||||
.label s = 2
|
||||
.label s = $a
|
||||
// [7] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
// [7] phi main::s#2 = (char *) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
||||
|
@ -968,9 +969,9 @@ main: {
|
|||
// md5
|
||||
md5: {
|
||||
.const c = $98
|
||||
.label b = 7
|
||||
.label a = 5
|
||||
.label b_1 = 4
|
||||
.label b = 4
|
||||
.label a = 6
|
||||
.label b_1 = 9
|
||||
// [15] phi from md5 to md5::@1 [phi:md5->md5::@1]
|
||||
__b1_from_md5:
|
||||
// [15] phi md5::a#1 = md5::c#0 [phi:md5->md5::@1#0] -- vbuz1=vbuc1
|
||||
|
@ -1072,11 +1073,11 @@ md5: {
|
|||
jmp __b1
|
||||
}
|
||||
// print
|
||||
// void print(__register(X) char i, __zp(6) char a, __zp(7) char b, __zp(8) char c)
|
||||
// void print(__register(X) char i, __zp(5) char a, __zp(4) char b, __zp(3) char c)
|
||||
print: {
|
||||
.label a = 6
|
||||
.label b = 7
|
||||
.label c = 8
|
||||
.label a = 5
|
||||
.label b = 4
|
||||
.label c = 3
|
||||
jmp print321
|
||||
// print::print321
|
||||
print321:
|
||||
|
@ -1290,23 +1291,23 @@ Succesful ASM optimization Pass5UnusedLabelElimination
|
|||
FINAL SYMBOL TABLE
|
||||
__constant char HEX[] = "0123456789abcdef"
|
||||
void __start()
|
||||
__loadstore char idx // zp[1]:11 5873.634920634922
|
||||
__loadstore char *line // zp[2]:9 2121.4545454545455
|
||||
__loadstore char idx // zp[1]:2 5873.634920634922
|
||||
__loadstore char *line // zp[2]:7 2121.4545454545455
|
||||
void main()
|
||||
char *main::s
|
||||
char *main::s#1 // s zp[2]:2 202.0
|
||||
char *main::s#2 // s zp[2]:2 134.66666666666666
|
||||
char *main::s#1 // s zp[2]:10 202.0
|
||||
char *main::s#2 // s zp[2]:10 134.66666666666666
|
||||
void md5()
|
||||
char md5::$2 // reg byte a 2002.0
|
||||
char md5::a
|
||||
char md5::a#1 // a zp[1]:5 235.52941176470588
|
||||
char md5::a#1 // a zp[1]:6 235.52941176470588
|
||||
char md5::a#3 // reg byte y 667.3333333333334
|
||||
char md5::a#8 // reg byte y 667.3333333333334
|
||||
char md5::a#9 // a zp[1]:5 2002.0
|
||||
char md5::a#9 // a zp[1]:6 2002.0
|
||||
char md5::b
|
||||
char md5::b#1 // b zp[1]:7 375.375
|
||||
char md5::b#2 // b_1 zp[1]:4 263.42105263157896
|
||||
char md5::b#8 // b_1 zp[1]:4 1001.0
|
||||
char md5::b#1 // b zp[1]:4 375.375
|
||||
char md5::b#2 // b_1 zp[1]:9 263.42105263157896
|
||||
char md5::b#8 // b_1 zp[1]:9 1001.0
|
||||
char md5::c
|
||||
__constant char md5::c#0 = $98 // c
|
||||
char md5::i
|
||||
|
@ -1315,17 +1316,17 @@ char md5::i#2 // reg byte x 375.375
|
|||
char md5::temp
|
||||
void print(char i , char a , char b , char c)
|
||||
char print::a
|
||||
char print::a#0 // a zp[1]:6 667.3333333333334
|
||||
char print::a#1 // a zp[1]:6 667.3333333333334
|
||||
char print::a#2 // a zp[1]:6 1833.6666666666665
|
||||
char print::a#0 // a zp[1]:5 667.3333333333334
|
||||
char print::a#1 // a zp[1]:5 667.3333333333334
|
||||
char print::a#2 // a zp[1]:5 1833.6666666666665
|
||||
char print::b
|
||||
char print::b#0 // b zp[1]:7 1001.0
|
||||
char print::b#1 // b zp[1]:7 1001.0
|
||||
char print::b#2 // b zp[1]:7 1100.2
|
||||
char print::b#0 // b zp[1]:4 1001.0
|
||||
char print::b#1 // b zp[1]:4 1001.0
|
||||
char print::b#2 // b zp[1]:4 1100.2
|
||||
char print::c
|
||||
char print::c#0 // c zp[1]:8 2002.0
|
||||
char print::c#1 // c zp[1]:8 2002.0
|
||||
char print::c#2 // c zp[1]:8 785.8571428571429
|
||||
char print::c#0 // c zp[1]:3 2002.0
|
||||
char print::c#1 // c zp[1]:3 2002.0
|
||||
char print::c#2 // c zp[1]:3 785.8571428571429
|
||||
char print::i
|
||||
char print::i#0 // reg byte x 500.5
|
||||
char print::i#1 // reg byte x 500.5
|
||||
|
@ -1343,17 +1344,17 @@ char print::print324_$0 // reg byte a 20002.0
|
|||
char print::print324_$1 // reg byte a 20002.0
|
||||
char print::print324_l
|
||||
|
||||
zp[2]:2 [ main::s#2 main::s#1 ]
|
||||
zp[2]:10 [ main::s#2 main::s#1 ]
|
||||
reg byte x [ md5::i#2 md5::i#1 ]
|
||||
reg byte y [ md5::a#3 md5::a#8 ]
|
||||
zp[1]:4 [ md5::b#2 md5::b#8 ]
|
||||
zp[1]:5 [ md5::a#1 md5::a#9 ]
|
||||
zp[1]:9 [ md5::b#2 md5::b#8 ]
|
||||
zp[1]:6 [ md5::a#1 md5::a#9 ]
|
||||
reg byte x [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
zp[1]:6 [ print::a#2 print::a#0 print::a#1 ]
|
||||
zp[1]:7 [ print::b#2 print::b#0 print::b#1 md5::b#1 ]
|
||||
zp[1]:8 [ print::c#2 print::c#0 print::c#1 ]
|
||||
zp[2]:9 [ line ]
|
||||
zp[1]:11 [ idx ]
|
||||
zp[1]:5 [ print::a#2 print::a#0 print::a#1 ]
|
||||
zp[1]:4 [ print::b#2 print::b#0 print::b#1 md5::b#1 ]
|
||||
zp[1]:3 [ print::c#2 print::c#0 print::c#1 ]
|
||||
zp[2]:7 [ line ]
|
||||
zp[1]:2 [ idx ]
|
||||
reg byte a [ md5::$2 ]
|
||||
reg byte a [ print::print321_$0 ]
|
||||
reg byte a [ print::print321_$1 ]
|
||||
|
@ -1380,8 +1381,8 @@ Score: 1690
|
|||
.segment Basic
|
||||
:BasicUpstart(__start)
|
||||
// Global Constants & labels
|
||||
.label line = 9
|
||||
.label idx = $b
|
||||
.label line = 7
|
||||
.label idx = 2
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -1407,7 +1408,7 @@ __start: {
|
|||
}
|
||||
// main
|
||||
main: {
|
||||
.label s = 2
|
||||
.label s = $a
|
||||
// [7] phi from main to main::@1 [phi:main->main::@1]
|
||||
// [7] phi main::s#2 = (char *) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
||||
lda #<$400
|
||||
|
@ -1456,9 +1457,9 @@ main: {
|
|||
// md5
|
||||
md5: {
|
||||
.const c = $98
|
||||
.label b = 7
|
||||
.label a = 5
|
||||
.label b_1 = 4
|
||||
.label b = 4
|
||||
.label a = 6
|
||||
.label b_1 = 9
|
||||
// [15] phi from md5 to md5::@1 [phi:md5->md5::@1]
|
||||
// [15] phi md5::a#1 = md5::c#0 [phi:md5->md5::@1#0] -- vbuz1=vbuc1
|
||||
lda #c
|
||||
|
@ -1550,11 +1551,11 @@ md5: {
|
|||
jmp __b1
|
||||
}
|
||||
// print
|
||||
// void print(__register(X) char i, __zp(6) char a, __zp(7) char b, __zp(8) char c)
|
||||
// void print(__register(X) char i, __zp(5) char a, __zp(4) char b, __zp(3) char c)
|
||||
print: {
|
||||
.label a = 6
|
||||
.label b = 7
|
||||
.label c = 8
|
||||
.label a = 5
|
||||
.label b = 4
|
||||
.label c = 3
|
||||
// print::print321
|
||||
// l/0x10
|
||||
// [37] print::print321_$0 = print::print321_l#0 >> 4 -- vbuaa=vbuxx_ror_4
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
__constant char HEX[] = "0123456789abcdef"
|
||||
void __start()
|
||||
__loadstore char idx // zp[1]:11 5873.634920634922
|
||||
__loadstore char *line // zp[2]:9 2121.4545454545455
|
||||
__loadstore char idx // zp[1]:2 5873.634920634922
|
||||
__loadstore char *line // zp[2]:7 2121.4545454545455
|
||||
void main()
|
||||
char *main::s
|
||||
char *main::s#1 // s zp[2]:2 202.0
|
||||
char *main::s#2 // s zp[2]:2 134.66666666666666
|
||||
char *main::s#1 // s zp[2]:10 202.0
|
||||
char *main::s#2 // s zp[2]:10 134.66666666666666
|
||||
void md5()
|
||||
char md5::$2 // reg byte a 2002.0
|
||||
char md5::a
|
||||
char md5::a#1 // a zp[1]:5 235.52941176470588
|
||||
char md5::a#1 // a zp[1]:6 235.52941176470588
|
||||
char md5::a#3 // reg byte y 667.3333333333334
|
||||
char md5::a#8 // reg byte y 667.3333333333334
|
||||
char md5::a#9 // a zp[1]:5 2002.0
|
||||
char md5::a#9 // a zp[1]:6 2002.0
|
||||
char md5::b
|
||||
char md5::b#1 // b zp[1]:7 375.375
|
||||
char md5::b#2 // b_1 zp[1]:4 263.42105263157896
|
||||
char md5::b#8 // b_1 zp[1]:4 1001.0
|
||||
char md5::b#1 // b zp[1]:4 375.375
|
||||
char md5::b#2 // b_1 zp[1]:9 263.42105263157896
|
||||
char md5::b#8 // b_1 zp[1]:9 1001.0
|
||||
char md5::c
|
||||
__constant char md5::c#0 = $98 // c
|
||||
char md5::i
|
||||
|
@ -25,17 +25,17 @@ char md5::i#2 // reg byte x 375.375
|
|||
char md5::temp
|
||||
void print(char i , char a , char b , char c)
|
||||
char print::a
|
||||
char print::a#0 // a zp[1]:6 667.3333333333334
|
||||
char print::a#1 // a zp[1]:6 667.3333333333334
|
||||
char print::a#2 // a zp[1]:6 1833.6666666666665
|
||||
char print::a#0 // a zp[1]:5 667.3333333333334
|
||||
char print::a#1 // a zp[1]:5 667.3333333333334
|
||||
char print::a#2 // a zp[1]:5 1833.6666666666665
|
||||
char print::b
|
||||
char print::b#0 // b zp[1]:7 1001.0
|
||||
char print::b#1 // b zp[1]:7 1001.0
|
||||
char print::b#2 // b zp[1]:7 1100.2
|
||||
char print::b#0 // b zp[1]:4 1001.0
|
||||
char print::b#1 // b zp[1]:4 1001.0
|
||||
char print::b#2 // b zp[1]:4 1100.2
|
||||
char print::c
|
||||
char print::c#0 // c zp[1]:8 2002.0
|
||||
char print::c#1 // c zp[1]:8 2002.0
|
||||
char print::c#2 // c zp[1]:8 785.8571428571429
|
||||
char print::c#0 // c zp[1]:3 2002.0
|
||||
char print::c#1 // c zp[1]:3 2002.0
|
||||
char print::c#2 // c zp[1]:3 785.8571428571429
|
||||
char print::i
|
||||
char print::i#0 // reg byte x 500.5
|
||||
char print::i#1 // reg byte x 500.5
|
||||
|
@ -53,17 +53,17 @@ char print::print324_$0 // reg byte a 20002.0
|
|||
char print::print324_$1 // reg byte a 20002.0
|
||||
char print::print324_l
|
||||
|
||||
zp[2]:2 [ main::s#2 main::s#1 ]
|
||||
zp[2]:10 [ main::s#2 main::s#1 ]
|
||||
reg byte x [ md5::i#2 md5::i#1 ]
|
||||
reg byte y [ md5::a#3 md5::a#8 ]
|
||||
zp[1]:4 [ md5::b#2 md5::b#8 ]
|
||||
zp[1]:5 [ md5::a#1 md5::a#9 ]
|
||||
zp[1]:9 [ md5::b#2 md5::b#8 ]
|
||||
zp[1]:6 [ md5::a#1 md5::a#9 ]
|
||||
reg byte x [ print::print321_l#0 print::i#0 print::i#1 ]
|
||||
zp[1]:6 [ print::a#2 print::a#0 print::a#1 ]
|
||||
zp[1]:7 [ print::b#2 print::b#0 print::b#1 md5::b#1 ]
|
||||
zp[1]:8 [ print::c#2 print::c#0 print::c#1 ]
|
||||
zp[2]:9 [ line ]
|
||||
zp[1]:11 [ idx ]
|
||||
zp[1]:5 [ print::a#2 print::a#0 print::a#1 ]
|
||||
zp[1]:4 [ print::b#2 print::b#0 print::b#1 md5::b#1 ]
|
||||
zp[1]:3 [ print::c#2 print::c#0 print::c#1 ]
|
||||
zp[2]:7 [ line ]
|
||||
zp[1]:2 [ idx ]
|
||||
reg byte a [ md5::$2 ]
|
||||
reg byte a [ print::print321_$0 ]
|
||||
reg byte a [ print::print321_$1 ]
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
.label BITMAP = $2000
|
||||
.segment Code
|
||||
main: {
|
||||
.label i = 2
|
||||
.label i = $10
|
||||
// fill(BITMAP,40*25*8,0)
|
||||
ldx #0
|
||||
lda #<$28*$19*8
|
||||
|
@ -104,11 +104,11 @@ main: {
|
|||
jmp __b1
|
||||
}
|
||||
// Fill some memory with a value
|
||||
// void fill(char *start, __zp(4) int size, __register(X) char val)
|
||||
// void fill(char *start, __zp($c) int size, __register(X) char val)
|
||||
fill: {
|
||||
.label end = 4
|
||||
.label addr = 6
|
||||
.label size = 4
|
||||
.label end = $c
|
||||
.label addr = $e
|
||||
.label size = $c
|
||||
// byte* end = start + size
|
||||
clc
|
||||
lda.z end
|
||||
|
@ -139,20 +139,20 @@ fill: {
|
|||
!:
|
||||
jmp __b1
|
||||
}
|
||||
// void circle(int xc, int yc, __zp(6) int r)
|
||||
// void circle(int xc, int yc, __zp($e) int r)
|
||||
circle: {
|
||||
.const xc = $a0
|
||||
.const yc = $64
|
||||
.label __0 = 8
|
||||
.label __5 = $a
|
||||
.label __6 = $a
|
||||
.label __7 = 8
|
||||
.label __9 = $c
|
||||
.label __10 = 8
|
||||
.label r = 6
|
||||
.label p = 8
|
||||
.label y = 6
|
||||
.label x1 = 4
|
||||
.label __0 = $a
|
||||
.label __5 = 8
|
||||
.label __6 = 8
|
||||
.label __7 = $a
|
||||
.label __9 = 6
|
||||
.label __10 = $a
|
||||
.label r = $e
|
||||
.label p = $a
|
||||
.label y = $e
|
||||
.label x1 = $c
|
||||
// r << 1
|
||||
lda.z r
|
||||
asl
|
||||
|
@ -389,16 +389,16 @@ circle: {
|
|||
sta.z p+1
|
||||
jmp __b4
|
||||
}
|
||||
// void plot(__zp($a) int x, __zp($c) int y)
|
||||
// void plot(__zp(8) int x, __zp(6) int y)
|
||||
plot: {
|
||||
.label __8 = $e
|
||||
.label __11 = $c
|
||||
.label __12 = $10
|
||||
.label x = $a
|
||||
.label y = $c
|
||||
.label location = $e
|
||||
.label __15 = $10
|
||||
.label __16 = $10
|
||||
.label __8 = 4
|
||||
.label __11 = 6
|
||||
.label __12 = 2
|
||||
.label x = 8
|
||||
.label y = 6
|
||||
.label location = 4
|
||||
.label __15 = 2
|
||||
.label __16 = 2
|
||||
// if (x < 0 || x > 319 || y < 0 || y > 199)
|
||||
lda.z x+1
|
||||
bpl !__breturn+
|
||||
|
|
|
@ -1056,34 +1056,34 @@ Complete equivalence classes
|
|||
[ plot::location#3 ]
|
||||
[ plot::$13 ]
|
||||
[ plot::$14 ]
|
||||
Allocated zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:4 [ fill::size#2 ]
|
||||
Allocated zp[1]:6 [ fill::val#4 ]
|
||||
Allocated zp[2]:7 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated zp[2]:9 [ circle::x1#10 circle::x1#1 ]
|
||||
Allocated zp[2]:11 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
Allocated zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
Allocated zp[2]:15 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated zp[2]:17 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
Allocated zp[2]:19 [ fill::end#0 ]
|
||||
Allocated zp[2]:21 [ circle::$0 ]
|
||||
Allocated zp[2]:23 [ circle::$5 ]
|
||||
Allocated zp[2]:25 [ circle::$6 ]
|
||||
Allocated zp[2]:27 [ circle::$7 ]
|
||||
Allocated zp[2]:29 [ circle::$9 ]
|
||||
Allocated zp[2]:31 [ circle::$10 ]
|
||||
Allocated zp[2]:33 [ plot::$8 ]
|
||||
Allocated zp[2]:35 [ plot::location#1 ]
|
||||
Allocated zp[1]:37 [ plot::$9 ]
|
||||
Allocated zp[1]:38 [ plot::$10 ]
|
||||
Allocated zp[2]:39 [ plot::location#2 ]
|
||||
Allocated zp[2]:41 [ plot::$11 ]
|
||||
Allocated zp[2]:43 [ plot::$15 ]
|
||||
Allocated zp[2]:45 [ plot::$16 ]
|
||||
Allocated zp[2]:47 [ plot::$12 ]
|
||||
Allocated zp[2]:49 [ plot::location#3 ]
|
||||
Allocated zp[1]:51 [ plot::$13 ]
|
||||
Allocated zp[1]:52 [ plot::$14 ]
|
||||
Allocated zp[2]:2 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
Allocated zp[2]:4 [ plot::$8 ]
|
||||
Allocated zp[1]:6 [ plot::$9 ]
|
||||
Allocated zp[1]:7 [ plot::$10 ]
|
||||
Allocated zp[2]:8 [ plot::$15 ]
|
||||
Allocated zp[2]:10 [ plot::$16 ]
|
||||
Allocated zp[2]:12 [ plot::$12 ]
|
||||
Allocated zp[1]:14 [ plot::$13 ]
|
||||
Allocated zp[1]:15 [ plot::$14 ]
|
||||
Allocated zp[2]:16 [ plot::$11 ]
|
||||
Allocated zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated zp[2]:20 [ plot::location#3 ]
|
||||
Allocated zp[2]:22 [ plot::location#1 ]
|
||||
Allocated zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
Allocated zp[2]:26 [ plot::location#2 ]
|
||||
Allocated zp[2]:28 [ circle::x1#10 circle::x1#1 ]
|
||||
Allocated zp[2]:30 [ circle::$5 ]
|
||||
Allocated zp[2]:32 [ circle::$6 ]
|
||||
Allocated zp[2]:34 [ circle::$7 ]
|
||||
Allocated zp[2]:36 [ circle::$9 ]
|
||||
Allocated zp[2]:38 [ circle::$10 ]
|
||||
Allocated zp[2]:40 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ]
|
||||
Allocated zp[2]:42 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated zp[2]:44 [ circle::$0 ]
|
||||
Allocated zp[2]:46 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:48 [ fill::end#0 ]
|
||||
Allocated zp[1]:50 [ fill::val#4 ]
|
||||
Allocated zp[2]:51 [ fill::size#2 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -1092,10 +1092,10 @@ Statement [8] if(main::i#2<$b4) goto main::@2 [ main::i#2 ] ( [ main::i#2 ] { }
|
|||
Statement [10] circle::r#0 = main::i#2 [ main::i#2 circle::r#0 ] ( [ main::i#2 circle::r#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
|
||||
Statement [12] main::i#1 = main::i#2 + 5 [ main::i#1 ] ( [ main::i#1 ] { } ) always clobbers reg byte a
|
||||
Statement [14] fill::end#0 = fill::addr#0 + fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( fill:1 [ fill::addr#0 fill::val#4 fill::end#0 ] { } fill:3 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ fill::val#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:50 [ fill::val#4 ]
|
||||
Statement [16] if(fill::addr#2!=fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
|
||||
Statement [18] *fill::addr#2 = fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ fill::val#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:50 [ fill::val#4 ]
|
||||
Statement [20] circle::$0 = circle::r#0 << 1 [ circle::r#0 circle::$0 ] ( circle:11 [ main::i#2 circle::r#0 circle::$0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
|
||||
Statement [21] circle::p#0 = 3 - circle::$0 [ circle::r#0 circle::p#0 ] ( circle:11 [ main::i#2 circle::r#0 circle::p#0 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
|
||||
Statement [23] if(circle::x1#10<=circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( circle:11 [ main::i#2 circle::x1#10 circle::y#13 circle::p#3 ] { { circle::r#0 = main::i#2 } } ) always clobbers reg byte a
|
||||
|
@ -1191,76 +1191,76 @@ Statement [74] plot::location#3 = plot::location#2 + plot::$12 [ plot::x#8 plot:
|
|||
Statement [75] plot::$13 = plot::x#8 & 7 [ plot::location#3 plot::$13 ] ( circle:11::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:11::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:11::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:11::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:11::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:11::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:11::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:11::plot:55 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$13 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [76] plot::$14 = *plot::location#3 | bitmask[plot::$13] [ plot::location#3 plot::$14 ] ( circle:11::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:11::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:11::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:11::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:11::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:11::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:11::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:11::plot:55 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$14 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [77] *plot::location#3 = plot::$14 [ ] ( circle:11::plot:34 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:11::plot:37 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:11::plot:40 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:11::plot:43 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:11::plot:46 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:11::plot:49 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:11::plot:52 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:11::plot:55 [ main::i#2 circle::x1#10 circle::y#10 circle::p#10 ] { { circle::r#0 = main::i#2 } { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
|
||||
Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ fill::size#2 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ fill::val#4 ] : zp[1]:6 , reg byte x ,
|
||||
Potential registers zp[2]:7 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:9 [ circle::x1#10 circle::x1#1 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] : zp[2]:15 ,
|
||||
Potential registers zp[2]:17 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] : zp[2]:17 ,
|
||||
Potential registers zp[2]:19 [ fill::end#0 ] : zp[2]:19 ,
|
||||
Potential registers zp[2]:21 [ circle::$0 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:23 [ circle::$5 ] : zp[2]:23 ,
|
||||
Potential registers zp[2]:25 [ circle::$6 ] : zp[2]:25 ,
|
||||
Potential registers zp[2]:27 [ circle::$7 ] : zp[2]:27 ,
|
||||
Potential registers zp[2]:29 [ circle::$9 ] : zp[2]:29 ,
|
||||
Potential registers zp[2]:31 [ circle::$10 ] : zp[2]:31 ,
|
||||
Potential registers zp[2]:33 [ plot::$8 ] : zp[2]:33 ,
|
||||
Potential registers zp[2]:35 [ plot::location#1 ] : zp[2]:35 ,
|
||||
Potential registers zp[1]:37 [ plot::$9 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:38 [ plot::$10 ] : zp[1]:38 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:39 [ plot::location#2 ] : zp[2]:39 ,
|
||||
Potential registers zp[2]:41 [ plot::$11 ] : zp[2]:41 ,
|
||||
Potential registers zp[2]:43 [ plot::$15 ] : zp[2]:43 ,
|
||||
Potential registers zp[2]:45 [ plot::$16 ] : zp[2]:45 ,
|
||||
Potential registers zp[2]:47 [ plot::$12 ] : zp[2]:47 ,
|
||||
Potential registers zp[2]:49 [ plot::location#3 ] : zp[2]:49 ,
|
||||
Potential registers zp[1]:51 [ plot::$13 ] : zp[1]:51 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:52 [ plot::$14 ] : zp[1]:52 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:46 [ main::i#2 main::i#1 ] : zp[2]:46 ,
|
||||
Potential registers zp[2]:51 [ fill::size#2 ] : zp[2]:51 ,
|
||||
Potential registers zp[1]:50 [ fill::val#4 ] : zp[1]:50 , reg byte x ,
|
||||
Potential registers zp[2]:42 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:42 ,
|
||||
Potential registers zp[2]:28 [ circle::x1#10 circle::x1#1 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:40 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] : zp[2]:40 ,
|
||||
Potential registers zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:24 ,
|
||||
Potential registers zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:2 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:48 [ fill::end#0 ] : zp[2]:48 ,
|
||||
Potential registers zp[2]:44 [ circle::$0 ] : zp[2]:44 ,
|
||||
Potential registers zp[2]:30 [ circle::$5 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:32 [ circle::$6 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:34 [ circle::$7 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:36 [ circle::$9 ] : zp[2]:36 ,
|
||||
Potential registers zp[2]:38 [ circle::$10 ] : zp[2]:38 ,
|
||||
Potential registers zp[2]:4 [ plot::$8 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:22 [ plot::location#1 ] : zp[2]:22 ,
|
||||
Potential registers zp[1]:6 [ plot::$9 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ plot::$10 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:26 [ plot::location#2 ] : zp[2]:26 ,
|
||||
Potential registers zp[2]:16 [ plot::$11 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:8 [ plot::$15 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:10 [ plot::$16 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ plot::$12 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:20 [ plot::location#3 ] : zp[2]:20 ,
|
||||
Potential registers zp[1]:14 [ plot::$13 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:15 [ plot::$14 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 208,017.2: zp[2]:17 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 200,002: zp[2]:33 [ plot::$8 ] 200,002: zp[1]:37 [ plot::$9 ] 200,002: zp[1]:38 [ plot::$10 ] 200,002: zp[2]:43 [ plot::$15 ] 200,002: zp[2]:45 [ plot::$16 ] 200,002: zp[2]:47 [ plot::$12 ] 200,002: zp[1]:51 [ plot::$13 ] 200,002: zp[1]:52 [ plot::$14 ] 150,001.5: zp[2]:41 [ plot::$11 ] 112,008.8: zp[2]:15 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 100,001: zp[2]:49 [ plot::location#3 ] 66,667.33: zp[2]:35 [ plot::location#1 ] 40,000.4: zp[2]:39 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 47,089.25: zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 23,613.47: zp[2]:9 [ circle::x1#10 circle::x1#1 ] 20,002: zp[2]:23 [ circle::$5 ] 20,002: zp[2]:25 [ circle::$6 ] 20,002: zp[2]:27 [ circle::$7 ] 20,002: zp[2]:29 [ circle::$9 ] 20,002: zp[2]:31 [ circle::$10 ] 16,986.96: zp[2]:11 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 202: zp[2]:21 [ circle::$0 ]
|
||||
Uplift Scope [fill] 351.33: zp[2]:7 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 22.4: zp[2]:19 [ fill::end#0 ] 16.83: zp[1]:6 [ fill::val#4 ] 11: zp[2]:4 [ fill::size#2 ]
|
||||
Uplift Scope [main] 33: zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [plot] 208,017.2: zp[2]:2 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 200,002: zp[2]:4 [ plot::$8 ] 200,002: zp[1]:6 [ plot::$9 ] 200,002: zp[1]:7 [ plot::$10 ] 200,002: zp[2]:8 [ plot::$15 ] 200,002: zp[2]:10 [ plot::$16 ] 200,002: zp[2]:12 [ plot::$12 ] 200,002: zp[1]:14 [ plot::$13 ] 200,002: zp[1]:15 [ plot::$14 ] 150,001.5: zp[2]:16 [ plot::$11 ] 112,008.8: zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 100,001: zp[2]:20 [ plot::location#3 ] 66,667.33: zp[2]:22 [ plot::location#1 ] 40,000.4: zp[2]:26 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 47,089.25: zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] 23,613.47: zp[2]:28 [ circle::x1#10 circle::x1#1 ] 20,002: zp[2]:30 [ circle::$5 ] 20,002: zp[2]:32 [ circle::$6 ] 20,002: zp[2]:34 [ circle::$7 ] 20,002: zp[2]:36 [ circle::$9 ] 20,002: zp[2]:38 [ circle::$10 ] 16,986.96: zp[2]:40 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] 202: zp[2]:44 [ circle::$0 ]
|
||||
Uplift Scope [fill] 351.33: zp[2]:42 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 22.4: zp[2]:48 [ fill::end#0 ] 16.83: zp[1]:50 [ fill::val#4 ] 11: zp[2]:51 [ fill::size#2 ]
|
||||
Uplift Scope [main] 33: zp[2]:46 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 53676 combination zp[2]:17 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:33 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:43 [ plot::$15 ] zp[2]:45 [ plot::$16 ] zp[2]:47 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:41 [ plot::$11 ] zp[2]:15 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:49 [ plot::location#3 ] zp[2]:35 [ plot::location#1 ] zp[2]:39 [ plot::location#2 ]
|
||||
Uplifting [plot] best 53676 combination zp[2]:2 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:4 [ plot::$8 ] reg byte a [ plot::$9 ] reg byte a [ plot::$10 ] zp[2]:8 [ plot::$15 ] zp[2]:10 [ plot::$16 ] zp[2]:12 [ plot::$12 ] reg byte a [ plot::$13 ] reg byte a [ plot::$14 ] zp[2]:16 [ plot::$11 ] zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:20 [ plot::location#3 ] zp[2]:22 [ plot::location#1 ] zp[2]:26 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 53676 combination zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:9 [ circle::x1#10 circle::x1#1 ] zp[2]:23 [ circle::$5 ] zp[2]:25 [ circle::$6 ] zp[2]:27 [ circle::$7 ] zp[2]:29 [ circle::$9 ] zp[2]:31 [ circle::$10 ] zp[2]:11 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] zp[2]:21 [ circle::$0 ]
|
||||
Uplifting [fill] best 53660 combination zp[2]:7 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:19 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:4 [ fill::size#2 ]
|
||||
Uplifting [main] best 53660 combination zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Uplifting [circle] best 53676 combination zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:28 [ circle::x1#10 circle::x1#1 ] zp[2]:30 [ circle::$5 ] zp[2]:32 [ circle::$6 ] zp[2]:34 [ circle::$7 ] zp[2]:36 [ circle::$9 ] zp[2]:38 [ circle::$10 ] zp[2]:40 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] zp[2]:44 [ circle::$0 ]
|
||||
Uplifting [fill] best 53660 combination zp[2]:42 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:48 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:51 [ fill::size#2 ]
|
||||
Uplifting [main] best 53660 combination zp[2]:46 [ main::i#2 main::i#1 ]
|
||||
Uplifting [MOS6526_CIA] best 53660 combination
|
||||
Uplifting [MOS6569_VICII] best 53660 combination
|
||||
Uplifting [MOS6581_SID] best 53660 combination
|
||||
Uplifting [] best 53660 combination
|
||||
Coalescing zero page register [ zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:27 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:31 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:4 [ fill::size#2 ] ] with [ zp[2]:19 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:13 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ] ] with [ zp[2]:21 [ circle::$0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:17 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:41 [ plot::$11 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:23 [ circle::$5 ] ] with [ zp[2]:25 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:33 [ plot::$8 ] ] with [ zp[2]:35 [ plot::location#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:39 [ plot::location#2 ] ] with [ zp[2]:49 [ plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:43 [ plot::$15 ] ] with [ zp[2]:45 [ plot::$16 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:33 [ plot::$8 plot::location#1 ] ] with [ zp[2]:39 [ plot::location#2 plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:43 [ plot::$15 plot::$16 ] ] with [ zp[2]:47 [ plot::$12 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:9 [ circle::x1#10 circle::x1#1 ] ] with [ zp[2]:4 [ fill::size#2 fill::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:11 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] ] with [ zp[2]:7 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:23 [ circle::$5 circle::$6 ] ] with [ zp[2]:15 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:29 [ circle::$9 ] ] with [ zp[2]:17 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ] ]
|
||||
Allocated (was zp[2]:9) zp[2]:4 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
Allocated (was zp[2]:11) zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated (was zp[2]:13) zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
Allocated (was zp[2]:23) zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:29) zp[2]:12 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
Allocated (was zp[2]:33) zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
Allocated (was zp[2]:43) zp[2]:16 [ plot::$15 plot::$16 plot::$12 ]
|
||||
Coalescing zero page register [ zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:34 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:38 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:51 [ fill::size#2 ] ] with [ zp[2]:48 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ] ] with [ zp[2]:44 [ circle::$0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:2 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:16 [ plot::$11 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:30 [ circle::$5 ] ] with [ zp[2]:32 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:4 [ plot::$8 ] ] with [ zp[2]:22 [ plot::location#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:26 [ plot::location#2 ] ] with [ zp[2]:20 [ plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:8 [ plot::$15 ] ] with [ zp[2]:10 [ plot::$16 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:4 [ plot::$8 plot::location#1 ] ] with [ zp[2]:26 [ plot::location#2 plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:8 [ plot::$15 plot::$16 ] ] with [ zp[2]:12 [ plot::$12 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ circle::x1#10 circle::x1#1 ] ] with [ zp[2]:51 [ fill::size#2 fill::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:40 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 ] ] with [ zp[2]:42 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:30 [ circle::$5 circle::$6 ] ] with [ zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:36 [ circle::$9 ] ] with [ zp[2]:2 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ] ]
|
||||
Allocated (was zp[2]:8) zp[2]:2 [ plot::$15 plot::$16 plot::$12 ]
|
||||
Allocated (was zp[2]:36) zp[2]:6 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
Allocated (was zp[2]:30) zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:24) zp[2]:10 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
Allocated (was zp[2]:28) zp[2]:12 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
Allocated (was zp[2]:40) zp[2]:14 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated (was zp[2]:46) zp[2]:16 [ main::i#2 main::i#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -1307,7 +1307,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label i = 2
|
||||
.label i = $10
|
||||
// [1] call fill
|
||||
// [13] phi from main to fill [phi:main->fill]
|
||||
fill_from_main:
|
||||
|
@ -1410,11 +1410,11 @@ main: {
|
|||
}
|
||||
// fill
|
||||
// Fill some memory with a value
|
||||
// void fill(char *start, __zp(4) int size, __register(X) char val)
|
||||
// void fill(char *start, __zp($c) int size, __register(X) char val)
|
||||
fill: {
|
||||
.label end = 4
|
||||
.label addr = 6
|
||||
.label size = 4
|
||||
.label end = $c
|
||||
.label addr = $e
|
||||
.label size = $c
|
||||
// [14] fill::end#0 = fill::addr#0 + fill::size#2 -- pbuz1=pbuz2_plus_vwsz1
|
||||
clc
|
||||
lda.z end
|
||||
|
@ -1456,20 +1456,20 @@ fill: {
|
|||
jmp __b1_from___b2
|
||||
}
|
||||
// circle
|
||||
// void circle(int xc, int yc, __zp(6) int r)
|
||||
// void circle(int xc, int yc, __zp($e) int r)
|
||||
circle: {
|
||||
.const xc = $a0
|
||||
.const yc = $64
|
||||
.label __0 = 8
|
||||
.label __5 = $a
|
||||
.label __6 = $a
|
||||
.label __7 = 8
|
||||
.label __9 = $c
|
||||
.label __10 = 8
|
||||
.label r = 6
|
||||
.label p = 8
|
||||
.label y = 6
|
||||
.label x1 = 4
|
||||
.label __0 = $a
|
||||
.label __5 = 8
|
||||
.label __6 = 8
|
||||
.label __7 = $a
|
||||
.label __9 = 6
|
||||
.label __10 = $a
|
||||
.label r = $e
|
||||
.label p = $a
|
||||
.label y = $e
|
||||
.label x1 = $c
|
||||
// [20] circle::$0 = circle::r#0 << 1 -- vwsz1=vwsz2_rol_1
|
||||
lda.z r
|
||||
asl
|
||||
|
@ -1805,16 +1805,16 @@ circle: {
|
|||
jmp __b4_from___b3
|
||||
}
|
||||
// plot
|
||||
// void plot(__zp($a) int x, __zp($c) int y)
|
||||
// void plot(__zp(8) int x, __zp(6) int y)
|
||||
plot: {
|
||||
.label __8 = $e
|
||||
.label __11 = $c
|
||||
.label __12 = $10
|
||||
.label x = $a
|
||||
.label y = $c
|
||||
.label location = $e
|
||||
.label __15 = $10
|
||||
.label __16 = $10
|
||||
.label __8 = 4
|
||||
.label __11 = 6
|
||||
.label __12 = 2
|
||||
.label x = 8
|
||||
.label y = 6
|
||||
.label location = 4
|
||||
.label __15 = 2
|
||||
.label __16 = 2
|
||||
// [61] if(plot::x#8<0) goto plot::@return -- vwsz1_lt_0_then_la1
|
||||
lda.z x+1
|
||||
bmi __breturn
|
||||
|
@ -2040,93 +2040,93 @@ __constant char * const VICII_MEMORY = (char *) 53272
|
|||
__constant const char VICII_RSEL = 8
|
||||
__constant char bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
|
||||
void circle(int xc , int yc , int r)
|
||||
int circle::$0 // zp[2]:8 202.0
|
||||
int circle::$10 // zp[2]:8 20002.0
|
||||
int circle::$5 // zp[2]:10 20002.0
|
||||
int circle::$6 // zp[2]:10 20002.0
|
||||
int circle::$7 // zp[2]:8 20002.0
|
||||
int circle::$9 // zp[2]:12 20002.0
|
||||
int circle::$0 // zp[2]:10 202.0
|
||||
int circle::$10 // zp[2]:10 20002.0
|
||||
int circle::$5 // zp[2]:8 20002.0
|
||||
int circle::$6 // zp[2]:8 20002.0
|
||||
int circle::$7 // zp[2]:10 20002.0
|
||||
int circle::$9 // zp[2]:6 20002.0
|
||||
int circle::p
|
||||
int circle::p#0 // p zp[2]:8 202.0
|
||||
int circle::p#1 // p zp[2]:8 20002.0
|
||||
int circle::p#10 // p zp[2]:8 1153.9615384615383
|
||||
int circle::p#2 // p zp[2]:8 20002.0
|
||||
int circle::p#3 // p zp[2]:8 5729.285714285716
|
||||
int circle::p#0 // p zp[2]:10 202.0
|
||||
int circle::p#1 // p zp[2]:10 20002.0
|
||||
int circle::p#10 // p zp[2]:10 1153.9615384615383
|
||||
int circle::p#2 // p zp[2]:10 20002.0
|
||||
int circle::p#3 // p zp[2]:10 5729.285714285716
|
||||
int circle::r
|
||||
int circle::r#0 // r zp[2]:6 71.0
|
||||
int circle::r#0 // r zp[2]:14 71.0
|
||||
int circle::x1
|
||||
int circle::x1#1 // x1 zp[2]:4 20002.0
|
||||
int circle::x1#10 // x1 zp[2]:4 3611.472222222223
|
||||
int circle::x1#1 // x1 zp[2]:12 20002.0
|
||||
int circle::x1#10 // x1 zp[2]:12 3611.472222222223
|
||||
int circle::xc
|
||||
__constant int circle::xc#0 = $a0 // xc
|
||||
int circle::y
|
||||
int circle::y#1 // y zp[2]:6 6000.6
|
||||
int circle::y#10 // y zp[2]:6 4231.192307692308
|
||||
int circle::y#13 // y zp[2]:6 6684.166666666666
|
||||
int circle::y#1 // y zp[2]:14 6000.6
|
||||
int circle::y#10 // y zp[2]:14 4231.192307692308
|
||||
int circle::y#13 // y zp[2]:14 6684.166666666666
|
||||
int circle::yc
|
||||
__constant int circle::yc#0 = $64 // yc
|
||||
void fill(char *start , int size , char val)
|
||||
char *fill::addr
|
||||
char *fill::addr#0 // addr zp[2]:6 11.0
|
||||
char *fill::addr#1 // addr zp[2]:6 202.0
|
||||
char *fill::addr#2 // addr zp[2]:6 138.33333333333331
|
||||
char *fill::addr#0 // addr zp[2]:14 11.0
|
||||
char *fill::addr#1 // addr zp[2]:14 202.0
|
||||
char *fill::addr#2 // addr zp[2]:14 138.33333333333331
|
||||
char *fill::end
|
||||
char *fill::end#0 // end zp[2]:4 22.4
|
||||
char *fill::end#0 // end zp[2]:12 22.4
|
||||
int fill::size
|
||||
int fill::size#2 // size zp[2]:4 11.0
|
||||
int fill::size#2 // size zp[2]:12 11.0
|
||||
char *fill::start
|
||||
char fill::val
|
||||
char fill::val#4 // reg byte x 16.833333333333332
|
||||
void main()
|
||||
int main::i
|
||||
int main::i#1 // i zp[2]:2 22.0
|
||||
int main::i#2 // i zp[2]:2 11.0
|
||||
int main::i#1 // i zp[2]:16 22.0
|
||||
int main::i#2 // i zp[2]:16 11.0
|
||||
void plot(int x , int y)
|
||||
char plot::$10 // reg byte a 200002.0
|
||||
int plot::$11 // zp[2]:12 150001.5
|
||||
int plot::$12 // zp[2]:16 200002.0
|
||||
int plot::$11 // zp[2]:6 150001.5
|
||||
int plot::$12 // zp[2]:2 200002.0
|
||||
signed char plot::$13 // reg byte a 200002.0
|
||||
char plot::$14 // reg byte a 200002.0
|
||||
int plot::$15 // zp[2]:16 200002.0
|
||||
int plot::$16 // zp[2]:16 200002.0
|
||||
int plot::$8 // zp[2]:14 200002.0
|
||||
int plot::$15 // zp[2]:2 200002.0
|
||||
int plot::$16 // zp[2]:2 200002.0
|
||||
int plot::$8 // zp[2]:4 200002.0
|
||||
char plot::$9 // reg byte a 200002.0
|
||||
char *plot::location
|
||||
char *plot::location#1 // location zp[2]:14 66667.33333333333
|
||||
char *plot::location#2 // location zp[2]:14 40000.4
|
||||
char *plot::location#3 // location zp[2]:14 100001.0
|
||||
char *plot::location#1 // location zp[2]:4 66667.33333333333
|
||||
char *plot::location#2 // location zp[2]:4 40000.4
|
||||
char *plot::location#3 // location zp[2]:4 100001.0
|
||||
int plot::x
|
||||
int plot::x#0 // x zp[2]:10 10001.0
|
||||
int plot::x#1 // x zp[2]:10 10001.0
|
||||
int plot::x#2 // x zp[2]:10 10001.0
|
||||
int plot::x#3 // x zp[2]:10 10001.0
|
||||
int plot::x#4 // x zp[2]:10 10001.0
|
||||
int plot::x#5 // x zp[2]:10 10001.0
|
||||
int plot::x#6 // x zp[2]:10 10001.0
|
||||
int plot::x#7 // x zp[2]:10 10001.0
|
||||
int plot::x#8 // x zp[2]:10 32000.800000000003
|
||||
int plot::x#0 // x zp[2]:8 10001.0
|
||||
int plot::x#1 // x zp[2]:8 10001.0
|
||||
int plot::x#2 // x zp[2]:8 10001.0
|
||||
int plot::x#3 // x zp[2]:8 10001.0
|
||||
int plot::x#4 // x zp[2]:8 10001.0
|
||||
int plot::x#5 // x zp[2]:8 10001.0
|
||||
int plot::x#6 // x zp[2]:8 10001.0
|
||||
int plot::x#7 // x zp[2]:8 10001.0
|
||||
int plot::x#8 // x zp[2]:8 32000.800000000003
|
||||
int plot::y
|
||||
int plot::y#0 // y zp[2]:12 20002.0
|
||||
int plot::y#1 // y zp[2]:12 20002.0
|
||||
int plot::y#2 // y zp[2]:12 20002.0
|
||||
int plot::y#3 // y zp[2]:12 20002.0
|
||||
int plot::y#4 // y zp[2]:12 20002.0
|
||||
int plot::y#5 // y zp[2]:12 20002.0
|
||||
int plot::y#6 // y zp[2]:12 20002.0
|
||||
int plot::y#7 // y zp[2]:12 20002.0
|
||||
int plot::y#8 // y zp[2]:12 48001.2
|
||||
int plot::y#0 // y zp[2]:6 20002.0
|
||||
int plot::y#1 // y zp[2]:6 20002.0
|
||||
int plot::y#2 // y zp[2]:6 20002.0
|
||||
int plot::y#3 // y zp[2]:6 20002.0
|
||||
int plot::y#4 // y zp[2]:6 20002.0
|
||||
int plot::y#5 // y zp[2]:6 20002.0
|
||||
int plot::y#6 // y zp[2]:6 20002.0
|
||||
int plot::y#7 // y zp[2]:6 20002.0
|
||||
int plot::y#8 // y zp[2]:6 48001.2
|
||||
|
||||
zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
zp[2]:16 [ main::i#2 main::i#1 ]
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:4 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:12 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
zp[2]:12 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:14 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:10 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:6 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
zp[2]:4 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$10 ]
|
||||
zp[2]:16 [ plot::$15 plot::$16 plot::$12 ]
|
||||
zp[2]:2 [ plot::$15 plot::$16 plot::$12 ]
|
||||
reg byte a [ plot::$13 ]
|
||||
reg byte a [ plot::$14 ]
|
||||
|
||||
|
@ -2178,7 +2178,7 @@ Score: 51752
|
|||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label i = 2
|
||||
.label i = $10
|
||||
// fill(BITMAP,40*25*8,0)
|
||||
// [1] call fill
|
||||
// [13] phi from main to fill [phi:main->fill]
|
||||
|
@ -2274,11 +2274,11 @@ main: {
|
|||
}
|
||||
// fill
|
||||
// Fill some memory with a value
|
||||
// void fill(char *start, __zp(4) int size, __register(X) char val)
|
||||
// void fill(char *start, __zp($c) int size, __register(X) char val)
|
||||
fill: {
|
||||
.label end = 4
|
||||
.label addr = 6
|
||||
.label size = 4
|
||||
.label end = $c
|
||||
.label addr = $e
|
||||
.label size = $c
|
||||
// byte* end = start + size
|
||||
// [14] fill::end#0 = fill::addr#0 + fill::size#2 -- pbuz1=pbuz2_plus_vwsz1
|
||||
clc
|
||||
|
@ -2320,20 +2320,20 @@ fill: {
|
|||
jmp __b1
|
||||
}
|
||||
// circle
|
||||
// void circle(int xc, int yc, __zp(6) int r)
|
||||
// void circle(int xc, int yc, __zp($e) int r)
|
||||
circle: {
|
||||
.const xc = $a0
|
||||
.const yc = $64
|
||||
.label __0 = 8
|
||||
.label __5 = $a
|
||||
.label __6 = $a
|
||||
.label __7 = 8
|
||||
.label __9 = $c
|
||||
.label __10 = 8
|
||||
.label r = 6
|
||||
.label p = 8
|
||||
.label y = 6
|
||||
.label x1 = 4
|
||||
.label __0 = $a
|
||||
.label __5 = 8
|
||||
.label __6 = 8
|
||||
.label __7 = $a
|
||||
.label __9 = 6
|
||||
.label __10 = $a
|
||||
.label r = $e
|
||||
.label p = $a
|
||||
.label y = $e
|
||||
.label x1 = $c
|
||||
// r << 1
|
||||
// [20] circle::$0 = circle::r#0 << 1 -- vwsz1=vwsz2_rol_1
|
||||
lda.z r
|
||||
|
@ -2658,16 +2658,16 @@ circle: {
|
|||
jmp __b4
|
||||
}
|
||||
// plot
|
||||
// void plot(__zp($a) int x, __zp($c) int y)
|
||||
// void plot(__zp(8) int x, __zp(6) int y)
|
||||
plot: {
|
||||
.label __8 = $e
|
||||
.label __11 = $c
|
||||
.label __12 = $10
|
||||
.label x = $a
|
||||
.label y = $c
|
||||
.label location = $e
|
||||
.label __15 = $10
|
||||
.label __16 = $10
|
||||
.label __8 = 4
|
||||
.label __11 = 6
|
||||
.label __12 = 2
|
||||
.label x = 8
|
||||
.label y = 6
|
||||
.label location = 4
|
||||
.label __15 = 2
|
||||
.label __16 = 2
|
||||
// if (x < 0 || x > 319 || y < 0 || y > 199)
|
||||
// [61] if(plot::x#8<0) goto plot::@return -- vwsz1_lt_0_then_la1
|
||||
lda.z x+1
|
||||
|
|
|
@ -9,92 +9,92 @@ __constant char * const VICII_MEMORY = (char *) 53272
|
|||
__constant const char VICII_RSEL = 8
|
||||
__constant char bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
|
||||
void circle(int xc , int yc , int r)
|
||||
int circle::$0 // zp[2]:8 202.0
|
||||
int circle::$10 // zp[2]:8 20002.0
|
||||
int circle::$5 // zp[2]:10 20002.0
|
||||
int circle::$6 // zp[2]:10 20002.0
|
||||
int circle::$7 // zp[2]:8 20002.0
|
||||
int circle::$9 // zp[2]:12 20002.0
|
||||
int circle::$0 // zp[2]:10 202.0
|
||||
int circle::$10 // zp[2]:10 20002.0
|
||||
int circle::$5 // zp[2]:8 20002.0
|
||||
int circle::$6 // zp[2]:8 20002.0
|
||||
int circle::$7 // zp[2]:10 20002.0
|
||||
int circle::$9 // zp[2]:6 20002.0
|
||||
int circle::p
|
||||
int circle::p#0 // p zp[2]:8 202.0
|
||||
int circle::p#1 // p zp[2]:8 20002.0
|
||||
int circle::p#10 // p zp[2]:8 1153.9615384615383
|
||||
int circle::p#2 // p zp[2]:8 20002.0
|
||||
int circle::p#3 // p zp[2]:8 5729.285714285716
|
||||
int circle::p#0 // p zp[2]:10 202.0
|
||||
int circle::p#1 // p zp[2]:10 20002.0
|
||||
int circle::p#10 // p zp[2]:10 1153.9615384615383
|
||||
int circle::p#2 // p zp[2]:10 20002.0
|
||||
int circle::p#3 // p zp[2]:10 5729.285714285716
|
||||
int circle::r
|
||||
int circle::r#0 // r zp[2]:6 71.0
|
||||
int circle::r#0 // r zp[2]:14 71.0
|
||||
int circle::x1
|
||||
int circle::x1#1 // x1 zp[2]:4 20002.0
|
||||
int circle::x1#10 // x1 zp[2]:4 3611.472222222223
|
||||
int circle::x1#1 // x1 zp[2]:12 20002.0
|
||||
int circle::x1#10 // x1 zp[2]:12 3611.472222222223
|
||||
int circle::xc
|
||||
__constant int circle::xc#0 = $a0 // xc
|
||||
int circle::y
|
||||
int circle::y#1 // y zp[2]:6 6000.6
|
||||
int circle::y#10 // y zp[2]:6 4231.192307692308
|
||||
int circle::y#13 // y zp[2]:6 6684.166666666666
|
||||
int circle::y#1 // y zp[2]:14 6000.6
|
||||
int circle::y#10 // y zp[2]:14 4231.192307692308
|
||||
int circle::y#13 // y zp[2]:14 6684.166666666666
|
||||
int circle::yc
|
||||
__constant int circle::yc#0 = $64 // yc
|
||||
void fill(char *start , int size , char val)
|
||||
char *fill::addr
|
||||
char *fill::addr#0 // addr zp[2]:6 11.0
|
||||
char *fill::addr#1 // addr zp[2]:6 202.0
|
||||
char *fill::addr#2 // addr zp[2]:6 138.33333333333331
|
||||
char *fill::addr#0 // addr zp[2]:14 11.0
|
||||
char *fill::addr#1 // addr zp[2]:14 202.0
|
||||
char *fill::addr#2 // addr zp[2]:14 138.33333333333331
|
||||
char *fill::end
|
||||
char *fill::end#0 // end zp[2]:4 22.4
|
||||
char *fill::end#0 // end zp[2]:12 22.4
|
||||
int fill::size
|
||||
int fill::size#2 // size zp[2]:4 11.0
|
||||
int fill::size#2 // size zp[2]:12 11.0
|
||||
char *fill::start
|
||||
char fill::val
|
||||
char fill::val#4 // reg byte x 16.833333333333332
|
||||
void main()
|
||||
int main::i
|
||||
int main::i#1 // i zp[2]:2 22.0
|
||||
int main::i#2 // i zp[2]:2 11.0
|
||||
int main::i#1 // i zp[2]:16 22.0
|
||||
int main::i#2 // i zp[2]:16 11.0
|
||||
void plot(int x , int y)
|
||||
char plot::$10 // reg byte a 200002.0
|
||||
int plot::$11 // zp[2]:12 150001.5
|
||||
int plot::$12 // zp[2]:16 200002.0
|
||||
int plot::$11 // zp[2]:6 150001.5
|
||||
int plot::$12 // zp[2]:2 200002.0
|
||||
signed char plot::$13 // reg byte a 200002.0
|
||||
char plot::$14 // reg byte a 200002.0
|
||||
int plot::$15 // zp[2]:16 200002.0
|
||||
int plot::$16 // zp[2]:16 200002.0
|
||||
int plot::$8 // zp[2]:14 200002.0
|
||||
int plot::$15 // zp[2]:2 200002.0
|
||||
int plot::$16 // zp[2]:2 200002.0
|
||||
int plot::$8 // zp[2]:4 200002.0
|
||||
char plot::$9 // reg byte a 200002.0
|
||||
char *plot::location
|
||||
char *plot::location#1 // location zp[2]:14 66667.33333333333
|
||||
char *plot::location#2 // location zp[2]:14 40000.4
|
||||
char *plot::location#3 // location zp[2]:14 100001.0
|
||||
char *plot::location#1 // location zp[2]:4 66667.33333333333
|
||||
char *plot::location#2 // location zp[2]:4 40000.4
|
||||
char *plot::location#3 // location zp[2]:4 100001.0
|
||||
int plot::x
|
||||
int plot::x#0 // x zp[2]:10 10001.0
|
||||
int plot::x#1 // x zp[2]:10 10001.0
|
||||
int plot::x#2 // x zp[2]:10 10001.0
|
||||
int plot::x#3 // x zp[2]:10 10001.0
|
||||
int plot::x#4 // x zp[2]:10 10001.0
|
||||
int plot::x#5 // x zp[2]:10 10001.0
|
||||
int plot::x#6 // x zp[2]:10 10001.0
|
||||
int plot::x#7 // x zp[2]:10 10001.0
|
||||
int plot::x#8 // x zp[2]:10 32000.800000000003
|
||||
int plot::x#0 // x zp[2]:8 10001.0
|
||||
int plot::x#1 // x zp[2]:8 10001.0
|
||||
int plot::x#2 // x zp[2]:8 10001.0
|
||||
int plot::x#3 // x zp[2]:8 10001.0
|
||||
int plot::x#4 // x zp[2]:8 10001.0
|
||||
int plot::x#5 // x zp[2]:8 10001.0
|
||||
int plot::x#6 // x zp[2]:8 10001.0
|
||||
int plot::x#7 // x zp[2]:8 10001.0
|
||||
int plot::x#8 // x zp[2]:8 32000.800000000003
|
||||
int plot::y
|
||||
int plot::y#0 // y zp[2]:12 20002.0
|
||||
int plot::y#1 // y zp[2]:12 20002.0
|
||||
int plot::y#2 // y zp[2]:12 20002.0
|
||||
int plot::y#3 // y zp[2]:12 20002.0
|
||||
int plot::y#4 // y zp[2]:12 20002.0
|
||||
int plot::y#5 // y zp[2]:12 20002.0
|
||||
int plot::y#6 // y zp[2]:12 20002.0
|
||||
int plot::y#7 // y zp[2]:12 20002.0
|
||||
int plot::y#8 // y zp[2]:12 48001.2
|
||||
int plot::y#0 // y zp[2]:6 20002.0
|
||||
int plot::y#1 // y zp[2]:6 20002.0
|
||||
int plot::y#2 // y zp[2]:6 20002.0
|
||||
int plot::y#3 // y zp[2]:6 20002.0
|
||||
int plot::y#4 // y zp[2]:6 20002.0
|
||||
int plot::y#5 // y zp[2]:6 20002.0
|
||||
int plot::y#6 // y zp[2]:6 20002.0
|
||||
int plot::y#7 // y zp[2]:6 20002.0
|
||||
int plot::y#8 // y zp[2]:6 48001.2
|
||||
|
||||
zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
zp[2]:16 [ main::i#2 main::i#1 ]
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:4 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:6 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:8 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
zp[2]:10 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:12 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
zp[2]:14 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
zp[2]:12 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:14 [ circle::y#13 circle::r#0 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:10 [ circle::p#3 circle::p#0 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 circle::$0 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:6 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$11 ]
|
||||
zp[2]:4 [ plot::$8 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$10 ]
|
||||
zp[2]:16 [ plot::$15 plot::$16 plot::$12 ]
|
||||
zp[2]:2 [ plot::$15 plot::$16 plot::$12 ]
|
||||
reg byte a [ plot::$13 ]
|
||||
reg byte a [ plot::$14 ]
|
||||
|
|
|
@ -72,11 +72,11 @@ main: {
|
|||
jmp __b1
|
||||
}
|
||||
// Fill some memory with a value
|
||||
// void fill(char *start, __zp(2) int size, __register(X) char val)
|
||||
// void fill(char *start, __zp($e) int size, __register(X) char val)
|
||||
fill: {
|
||||
.label end = 2
|
||||
.label addr = 4
|
||||
.label size = 2
|
||||
.label end = $e
|
||||
.label addr = $c
|
||||
.label size = $e
|
||||
// byte* end = start + size
|
||||
clc
|
||||
lda.z end
|
||||
|
@ -114,12 +114,12 @@ circle: {
|
|||
.const r = $32
|
||||
.label __5 = 8
|
||||
.label __6 = 8
|
||||
.label __7 = 6
|
||||
.label __9 = $a
|
||||
.label __10 = 6
|
||||
.label p = 6
|
||||
.label y = 4
|
||||
.label x1 = 2
|
||||
.label __7 = $a
|
||||
.label __9 = 6
|
||||
.label __10 = $a
|
||||
.label p = $a
|
||||
.label y = $c
|
||||
.label x1 = $e
|
||||
lda #<3-(r<<1)
|
||||
sta.z p
|
||||
lda #>3-(r<<1)
|
||||
|
@ -349,16 +349,16 @@ circle: {
|
|||
sta.z p+1
|
||||
jmp __b4
|
||||
}
|
||||
// void plot(__zp(8) int x, __zp($a) int y)
|
||||
// void plot(__zp(8) int x, __zp(6) int y)
|
||||
plot: {
|
||||
.label __0 = $c
|
||||
.label __2 = $a
|
||||
.label __3 = $e
|
||||
.label __0 = 4
|
||||
.label __2 = 6
|
||||
.label __3 = 2
|
||||
.label x = 8
|
||||
.label y = $a
|
||||
.label location = $c
|
||||
.label __7 = $e
|
||||
.label __8 = $e
|
||||
.label y = 6
|
||||
.label location = 4
|
||||
.label __7 = 2
|
||||
.label __8 = 2
|
||||
// x & $fff8
|
||||
lda.z x
|
||||
and #<$fff8
|
||||
|
|
|
@ -955,41 +955,41 @@ Complete equivalence classes
|
|||
[ plot::location#3 ]
|
||||
[ plot::$4 ]
|
||||
[ plot::$5 ]
|
||||
Allocated zp[2]:2 [ fill::size#2 ]
|
||||
Allocated zp[1]:4 [ fill::val#4 ]
|
||||
Allocated zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated zp[2]:7 [ circle::x1#10 circle::x1#1 ]
|
||||
Allocated zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Allocated zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
Allocated zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
Allocated zp[2]:17 [ fill::end#0 ]
|
||||
Allocated zp[2]:19 [ circle::$5 ]
|
||||
Allocated zp[2]:21 [ circle::$6 ]
|
||||
Allocated zp[2]:23 [ circle::$7 ]
|
||||
Allocated zp[2]:25 [ circle::$9 ]
|
||||
Allocated zp[2]:27 [ circle::$10 ]
|
||||
Allocated zp[2]:29 [ plot::$0 ]
|
||||
Allocated zp[2]:31 [ plot::location#1 ]
|
||||
Allocated zp[1]:33 [ plot::$6 ]
|
||||
Allocated zp[1]:34 [ plot::$1 ]
|
||||
Allocated zp[2]:35 [ plot::location#2 ]
|
||||
Allocated zp[2]:37 [ plot::$2 ]
|
||||
Allocated zp[2]:39 [ plot::$7 ]
|
||||
Allocated zp[2]:41 [ plot::$8 ]
|
||||
Allocated zp[2]:43 [ plot::$3 ]
|
||||
Allocated zp[2]:45 [ plot::location#3 ]
|
||||
Allocated zp[1]:47 [ plot::$4 ]
|
||||
Allocated zp[1]:48 [ plot::$5 ]
|
||||
Allocated zp[2]:2 [ plot::$0 ]
|
||||
Allocated zp[1]:4 [ plot::$6 ]
|
||||
Allocated zp[1]:5 [ plot::$1 ]
|
||||
Allocated zp[2]:6 [ plot::$7 ]
|
||||
Allocated zp[2]:8 [ plot::$8 ]
|
||||
Allocated zp[2]:10 [ plot::$3 ]
|
||||
Allocated zp[1]:12 [ plot::$4 ]
|
||||
Allocated zp[1]:13 [ plot::$5 ]
|
||||
Allocated zp[2]:14 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ]
|
||||
Allocated zp[2]:16 [ plot::$2 ]
|
||||
Allocated zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated zp[2]:20 [ plot::location#3 ]
|
||||
Allocated zp[2]:22 [ plot::location#1 ]
|
||||
Allocated zp[2]:24 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ]
|
||||
Allocated zp[2]:26 [ plot::location#2 ]
|
||||
Allocated zp[2]:28 [ fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated zp[2]:30 [ circle::x1#10 circle::x1#1 ]
|
||||
Allocated zp[2]:32 [ circle::$5 ]
|
||||
Allocated zp[2]:34 [ circle::$6 ]
|
||||
Allocated zp[2]:36 [ circle::$7 ]
|
||||
Allocated zp[2]:38 [ circle::$9 ]
|
||||
Allocated zp[2]:40 [ circle::$10 ]
|
||||
Allocated zp[2]:42 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Allocated zp[2]:44 [ fill::end#0 ]
|
||||
Allocated zp[1]:46 [ fill::val#4 ]
|
||||
Allocated zp[2]:47 [ fill::size#2 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] *BORDER_COLOR = BLUE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *VICII_MEMORY = (char)(unsigned int)SCREEN&$3fff/$40|(unsigned int)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] fill::end#0 = fill::addr#0 + fill::size#2 [ fill::addr#0 fill::val#4 fill::end#0 ] ( fill:1 [ fill::addr#0 fill::val#4 fill::end#0 ] { } fill:3 [ fill::addr#0 fill::val#4 fill::end#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ fill::val#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:46 [ fill::val#4 ]
|
||||
Statement [12] if(fill::addr#2!=fill::end#0) goto fill::@2 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a
|
||||
Statement [14] *fill::addr#2 = fill::val#4 [ fill::val#4 fill::end#0 fill::addr#2 ] ( fill:1 [ fill::val#4 fill::end#0 fill::addr#2 ] { } fill:3 [ fill::val#4 fill::end#0 fill::addr#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ fill::val#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:46 [ fill::val#4 ]
|
||||
Statement [18] if(circle::x1#10<=circle::y#13) goto circle::@2 [ circle::x1#10 circle::y#13 circle::p#3 ] ( circle:7 [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a
|
||||
Statement [20] if(circle::p#3<0) goto circle::@3 [ circle::x1#10 circle::y#13 circle::p#3 ] ( circle:7 [ circle::x1#10 circle::y#13 circle::p#3 ] { } ) always clobbers reg byte a
|
||||
Statement [21] circle::y#1 = circle::y#13 - 1 [ circle::x1#10 circle::p#3 circle::y#1 ] ( circle:7 [ circle::x1#10 circle::p#3 circle::y#1 ] { } ) always clobbers reg byte a
|
||||
|
@ -1072,73 +1072,73 @@ Statement [65] plot::location#3 = plot::location#2 + plot::$3 [ plot::x#8 plot::
|
|||
Statement [66] plot::$4 = plot::x#8 & 7 [ plot::location#3 plot::$4 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$4 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a
|
||||
Statement [67] plot::$5 = *plot::location#3 | bitmask[plot::$4] [ plot::location#3 plot::$5 ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 plot::location#3 plot::$5 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [68] *plot::location#3 = plot::$5 [ ] ( circle:7::plot:29 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#0 = plot::x#8 } { plot::y#0 = plot::y#8 } } circle:7::plot:32 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#1 = plot::x#8 } { plot::y#1 = plot::y#8 } } circle:7::plot:35 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#2 = plot::x#8 } { plot::y#2 = plot::y#8 } } circle:7::plot:38 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#3 = plot::x#8 } { plot::y#3 = plot::y#8 } } circle:7::plot:41 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#4 = plot::x#8 } { plot::y#4 = plot::y#8 } } circle:7::plot:44 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#5 = plot::x#8 } { plot::y#5 = plot::y#8 } } circle:7::plot:47 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#6 = plot::x#8 } { plot::y#6 = plot::y#8 } } circle:7::plot:50 [ circle::x1#10 circle::y#10 circle::p#10 ] { { plot::x#7 = plot::x#8 } { plot::y#7 = plot::y#8 } } ) always clobbers reg byte y
|
||||
Potential registers zp[2]:2 [ fill::size#2 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ fill::val#4 ] : zp[1]:4 , reg byte x ,
|
||||
Potential registers zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[2]:7 [ circle::x1#10 circle::x1#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] : zp[2]:15 ,
|
||||
Potential registers zp[2]:17 [ fill::end#0 ] : zp[2]:17 ,
|
||||
Potential registers zp[2]:19 [ circle::$5 ] : zp[2]:19 ,
|
||||
Potential registers zp[2]:21 [ circle::$6 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:23 [ circle::$7 ] : zp[2]:23 ,
|
||||
Potential registers zp[2]:25 [ circle::$9 ] : zp[2]:25 ,
|
||||
Potential registers zp[2]:27 [ circle::$10 ] : zp[2]:27 ,
|
||||
Potential registers zp[2]:29 [ plot::$0 ] : zp[2]:29 ,
|
||||
Potential registers zp[2]:31 [ plot::location#1 ] : zp[2]:31 ,
|
||||
Potential registers zp[1]:33 [ plot::$6 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:34 [ plot::$1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:35 [ plot::location#2 ] : zp[2]:35 ,
|
||||
Potential registers zp[2]:37 [ plot::$2 ] : zp[2]:37 ,
|
||||
Potential registers zp[2]:39 [ plot::$7 ] : zp[2]:39 ,
|
||||
Potential registers zp[2]:41 [ plot::$8 ] : zp[2]:41 ,
|
||||
Potential registers zp[2]:43 [ plot::$3 ] : zp[2]:43 ,
|
||||
Potential registers zp[2]:45 [ plot::location#3 ] : zp[2]:45 ,
|
||||
Potential registers zp[1]:47 [ plot::$4 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:48 [ plot::$5 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:47 [ fill::size#2 ] : zp[2]:47 ,
|
||||
Potential registers zp[1]:46 [ fill::val#4 ] : zp[1]:46 , reg byte x ,
|
||||
Potential registers zp[2]:28 [ fill::addr#2 fill::addr#0 fill::addr#1 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:30 [ circle::x1#10 circle::x1#1 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:42 [ circle::y#13 circle::y#10 circle::y#1 ] : zp[2]:42 ,
|
||||
Potential registers zp[2]:24 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] : zp[2]:24 ,
|
||||
Potential registers zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:14 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] : zp[2]:14 ,
|
||||
Potential registers zp[2]:44 [ fill::end#0 ] : zp[2]:44 ,
|
||||
Potential registers zp[2]:32 [ circle::$5 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:34 [ circle::$6 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:36 [ circle::$7 ] : zp[2]:36 ,
|
||||
Potential registers zp[2]:38 [ circle::$9 ] : zp[2]:38 ,
|
||||
Potential registers zp[2]:40 [ circle::$10 ] : zp[2]:40 ,
|
||||
Potential registers zp[2]:2 [ plot::$0 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:22 [ plot::location#1 ] : zp[2]:22 ,
|
||||
Potential registers zp[1]:4 [ plot::$6 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ plot::$1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:26 [ plot::location#2 ] : zp[2]:26 ,
|
||||
Potential registers zp[2]:16 [ plot::$2 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:6 [ plot::$7 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:8 [ plot::$8 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:10 [ plot::$3 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:20 [ plot::location#3 ] : zp[2]:20 ,
|
||||
Potential registers zp[1]:12 [ plot::$4 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ plot::$5 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 2,002: zp[2]:29 [ plot::$0 ] 2,002: zp[1]:33 [ plot::$6 ] 2,002: zp[1]:34 [ plot::$1 ] 2,002: zp[2]:39 [ plot::$7 ] 2,002: zp[2]:41 [ plot::$8 ] 2,002: zp[2]:43 [ plot::$3 ] 2,002: zp[1]:47 [ plot::$4 ] 2,002: zp[1]:48 [ plot::$5 ] 1,917.5: zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 1,501.5: zp[2]:37 [ plot::$2 ] 1,063.45: zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 1,001: zp[2]:45 [ plot::location#3 ] 667.33: zp[2]:31 [ plot::location#1 ] 400.4: zp[2]:35 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 473.37: zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 238.47: zp[2]:7 [ circle::x1#10 circle::x1#1 ] 202: zp[2]:19 [ circle::$5 ] 202: zp[2]:21 [ circle::$6 ] 202: zp[2]:23 [ circle::$7 ] 202: zp[2]:25 [ circle::$9 ] 202: zp[2]:27 [ circle::$10 ] 170.66: zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplift Scope [fill] 351.33: zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 22.4: zp[2]:17 [ fill::end#0 ] 16.83: zp[1]:4 [ fill::val#4 ] 11: zp[2]:2 [ fill::size#2 ]
|
||||
Uplift Scope [plot] 2,002: zp[2]:2 [ plot::$0 ] 2,002: zp[1]:4 [ plot::$6 ] 2,002: zp[1]:5 [ plot::$1 ] 2,002: zp[2]:6 [ plot::$7 ] 2,002: zp[2]:8 [ plot::$8 ] 2,002: zp[2]:10 [ plot::$3 ] 2,002: zp[1]:12 [ plot::$4 ] 2,002: zp[1]:13 [ plot::$5 ] 1,917.5: zp[2]:14 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] 1,501.5: zp[2]:16 [ plot::$2 ] 1,063.45: zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] 1,001: zp[2]:20 [ plot::location#3 ] 667.33: zp[2]:22 [ plot::location#1 ] 400.4: zp[2]:26 [ plot::location#2 ]
|
||||
Uplift Scope [circle] 473.37: zp[2]:24 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] 238.47: zp[2]:30 [ circle::x1#10 circle::x1#1 ] 202: zp[2]:32 [ circle::$5 ] 202: zp[2]:34 [ circle::$6 ] 202: zp[2]:36 [ circle::$7 ] 202: zp[2]:38 [ circle::$9 ] 202: zp[2]:40 [ circle::$10 ] 170.66: zp[2]:42 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplift Scope [fill] 351.33: zp[2]:28 [ fill::addr#2 fill::addr#0 fill::addr#1 ] 22.4: zp[2]:44 [ fill::end#0 ] 16.83: zp[1]:46 [ fill::val#4 ] 11: zp[2]:47 [ fill::size#2 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 6407 combination zp[2]:29 [ plot::$0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$1 ] zp[2]:39 [ plot::$7 ] zp[2]:41 [ plot::$8 ] zp[2]:43 [ plot::$3 ] reg byte a [ plot::$4 ] reg byte a [ plot::$5 ] zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:37 [ plot::$2 ] zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:45 [ plot::location#3 ] zp[2]:31 [ plot::location#1 ] zp[2]:35 [ plot::location#2 ]
|
||||
Uplifting [plot] best 6407 combination zp[2]:2 [ plot::$0 ] reg byte a [ plot::$6 ] reg byte a [ plot::$1 ] zp[2]:6 [ plot::$7 ] zp[2]:8 [ plot::$8 ] zp[2]:10 [ plot::$3 ] reg byte a [ plot::$4 ] reg byte a [ plot::$5 ] zp[2]:14 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] zp[2]:16 [ plot::$2 ] zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] zp[2]:20 [ plot::location#3 ] zp[2]:22 [ plot::location#1 ] zp[2]:26 [ plot::location#2 ]
|
||||
Limited combination testing to 100 combinations of 256 possible.
|
||||
Uplifting [circle] best 6407 combination zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:7 [ circle::x1#10 circle::x1#1 ] zp[2]:19 [ circle::$5 ] zp[2]:21 [ circle::$6 ] zp[2]:23 [ circle::$7 ] zp[2]:25 [ circle::$9 ] zp[2]:27 [ circle::$10 ] zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplifting [fill] best 6391 combination zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:17 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:2 [ fill::size#2 ]
|
||||
Uplifting [circle] best 6407 combination zp[2]:24 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] zp[2]:30 [ circle::x1#10 circle::x1#1 ] zp[2]:32 [ circle::$5 ] zp[2]:34 [ circle::$6 ] zp[2]:36 [ circle::$7 ] zp[2]:38 [ circle::$9 ] zp[2]:40 [ circle::$10 ] zp[2]:42 [ circle::y#13 circle::y#10 circle::y#1 ]
|
||||
Uplifting [fill] best 6391 combination zp[2]:28 [ fill::addr#2 fill::addr#0 fill::addr#1 ] zp[2]:44 [ fill::end#0 ] reg byte x [ fill::val#4 ] zp[2]:47 [ fill::size#2 ]
|
||||
Uplifting [MOS6526_CIA] best 6391 combination
|
||||
Uplifting [MOS6569_VICII] best 6391 combination
|
||||
Uplifting [MOS6581_SID] best 6391 combination
|
||||
Uplifting [main] best 6391 combination
|
||||
Uplifting [] best 6391 combination
|
||||
Coalescing zero page register [ zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:23 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:11 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:27 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:2 [ fill::size#2 ] ] with [ zp[2]:17 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:37 [ plot::$2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:19 [ circle::$5 ] ] with [ zp[2]:21 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ plot::$0 ] ] with [ zp[2]:31 [ plot::location#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:35 [ plot::location#2 ] ] with [ zp[2]:45 [ plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:39 [ plot::$7 ] ] with [ zp[2]:41 [ plot::$8 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ plot::$0 plot::location#1 ] ] with [ zp[2]:35 [ plot::location#2 plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:39 [ plot::$7 plot::$8 ] ] with [ zp[2]:43 [ plot::$3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:7 [ circle::x1#10 circle::x1#1 ] ] with [ zp[2]:2 [ fill::size#2 fill::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:9 [ circle::y#13 circle::y#10 circle::y#1 ] ] with [ zp[2]:5 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:19 [ circle::$5 circle::$6 ] ] with [ zp[2]:13 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:25 [ circle::$9 ] ] with [ zp[2]:15 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ] ]
|
||||
Allocated (was zp[2]:7) zp[2]:2 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
Allocated (was zp[2]:9) zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated (was zp[2]:11) zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
Allocated (was zp[2]:19) zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:25) zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
Allocated (was zp[2]:29) zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
Allocated (was zp[2]:39) zp[2]:14 [ plot::$7 plot::$8 plot::$3 ]
|
||||
Coalescing zero page register [ zp[2]:24 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 ] ] with [ zp[2]:36 [ circle::$7 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:24 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 ] ] with [ zp[2]:40 [ circle::$10 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:47 [ fill::size#2 ] ] with [ zp[2]:44 [ fill::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:14 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 ] ] with [ zp[2]:16 [ plot::$2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:32 [ circle::$5 ] ] with [ zp[2]:34 [ circle::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:2 [ plot::$0 ] ] with [ zp[2]:22 [ plot::location#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:26 [ plot::location#2 ] ] with [ zp[2]:20 [ plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:6 [ plot::$7 ] ] with [ zp[2]:8 [ plot::$8 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:2 [ plot::$0 plot::location#1 ] ] with [ zp[2]:26 [ plot::location#2 plot::location#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:6 [ plot::$7 plot::$8 ] ] with [ zp[2]:10 [ plot::$3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:30 [ circle::x1#10 circle::x1#1 ] ] with [ zp[2]:47 [ fill::size#2 fill::end#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:42 [ circle::y#13 circle::y#10 circle::y#1 ] ] with [ zp[2]:28 [ fill::addr#2 fill::addr#0 fill::addr#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:32 [ circle::$5 circle::$6 ] ] with [ zp[2]:18 [ plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ] ]
|
||||
Coalescing zero page register [ zp[2]:38 [ circle::$9 ] ] with [ zp[2]:14 [ plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ] ]
|
||||
Allocated (was zp[2]:6) zp[2]:2 [ plot::$7 plot::$8 plot::$3 ]
|
||||
Allocated (was zp[2]:2) zp[2]:4 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
Allocated (was zp[2]:38) zp[2]:6 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
Allocated (was zp[2]:32) zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
Allocated (was zp[2]:24) zp[2]:10 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
Allocated (was zp[2]:42) zp[2]:12 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
Allocated (was zp[2]:30) zp[2]:14 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -1245,11 +1245,11 @@ main: {
|
|||
}
|
||||
// fill
|
||||
// Fill some memory with a value
|
||||
// void fill(char *start, __zp(2) int size, __register(X) char val)
|
||||
// void fill(char *start, __zp($e) int size, __register(X) char val)
|
||||
fill: {
|
||||
.label end = 2
|
||||
.label addr = 4
|
||||
.label size = 2
|
||||
.label end = $e
|
||||
.label addr = $c
|
||||
.label size = $e
|
||||
// [10] fill::end#0 = fill::addr#0 + fill::size#2 -- pbuz1=pbuz2_plus_vwsz1
|
||||
clc
|
||||
lda.z end
|
||||
|
@ -1298,12 +1298,12 @@ circle: {
|
|||
.const r = $32
|
||||
.label __5 = 8
|
||||
.label __6 = 8
|
||||
.label __7 = 6
|
||||
.label __9 = $a
|
||||
.label __10 = 6
|
||||
.label p = 6
|
||||
.label y = 4
|
||||
.label x1 = 2
|
||||
.label __7 = $a
|
||||
.label __9 = 6
|
||||
.label __10 = $a
|
||||
.label p = $a
|
||||
.label y = $c
|
||||
.label x1 = $e
|
||||
// [17] phi from circle to circle::@1 [phi:circle->circle::@1]
|
||||
__b1_from_circle:
|
||||
// [17] phi circle::p#3 = 3-circle::r#0<<1 [phi:circle->circle::@1#0] -- vwsz1=vwsc1
|
||||
|
@ -1632,16 +1632,16 @@ circle: {
|
|||
jmp __b4_from___b3
|
||||
}
|
||||
// plot
|
||||
// void plot(__zp(8) int x, __zp($a) int y)
|
||||
// void plot(__zp(8) int x, __zp(6) int y)
|
||||
plot: {
|
||||
.label __0 = $c
|
||||
.label __2 = $a
|
||||
.label __3 = $e
|
||||
.label __0 = 4
|
||||
.label __2 = 6
|
||||
.label __3 = 2
|
||||
.label x = 8
|
||||
.label y = $a
|
||||
.label location = $c
|
||||
.label __7 = $e
|
||||
.label __8 = $e
|
||||
.label y = 6
|
||||
.label location = 4
|
||||
.label __7 = 2
|
||||
.label __8 = 2
|
||||
// [56] plot::$0 = plot::x#8 & $fff8 -- vwsz1=vwsz2_band_vdsc1
|
||||
lda.z x
|
||||
and #<$fff8
|
||||
|
@ -1816,56 +1816,56 @@ __constant char * const VICII_MEMORY = (char *) 53272
|
|||
__constant const char VICII_RSEL = 8
|
||||
__constant char bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
|
||||
void circle(int xc , int yc , int r)
|
||||
int circle::$10 // zp[2]:6 202.0
|
||||
int circle::$10 // zp[2]:10 202.0
|
||||
int circle::$5 // zp[2]:8 202.0
|
||||
int circle::$6 // zp[2]:8 202.0
|
||||
int circle::$7 // zp[2]:6 202.0
|
||||
int circle::$9 // zp[2]:10 202.0
|
||||
int circle::$7 // zp[2]:10 202.0
|
||||
int circle::$9 // zp[2]:6 202.0
|
||||
int circle::p
|
||||
int circle::p#1 // p zp[2]:6 202.0
|
||||
int circle::p#10 // p zp[2]:6 11.653846153846153
|
||||
int circle::p#2 // p zp[2]:6 202.0
|
||||
int circle::p#3 // p zp[2]:6 57.714285714285715
|
||||
int circle::p#1 // p zp[2]:10 202.0
|
||||
int circle::p#10 // p zp[2]:10 11.653846153846153
|
||||
int circle::p#2 // p zp[2]:10 202.0
|
||||
int circle::p#3 // p zp[2]:10 57.714285714285715
|
||||
int circle::r
|
||||
__constant int circle::r#0 = $32 // r
|
||||
int circle::x1
|
||||
int circle::x1#1 // x1 zp[2]:2 202.0
|
||||
int circle::x1#10 // x1 zp[2]:2 36.47222222222223
|
||||
int circle::x1#1 // x1 zp[2]:14 202.0
|
||||
int circle::x1#10 // x1 zp[2]:14 36.47222222222223
|
||||
int circle::xc
|
||||
__constant int circle::xc#0 = $64 // xc
|
||||
int circle::y
|
||||
int circle::y#1 // y zp[2]:4 60.599999999999994
|
||||
int circle::y#10 // y zp[2]:4 42.73076923076923
|
||||
int circle::y#13 // y zp[2]:4 67.33333333333333
|
||||
int circle::y#1 // y zp[2]:12 60.599999999999994
|
||||
int circle::y#10 // y zp[2]:12 42.73076923076923
|
||||
int circle::y#13 // y zp[2]:12 67.33333333333333
|
||||
int circle::yc
|
||||
__constant int circle::yc#0 = $64 // yc
|
||||
void fill(char *start , int size , char val)
|
||||
char *fill::addr
|
||||
char *fill::addr#0 // addr zp[2]:4 11.0
|
||||
char *fill::addr#1 // addr zp[2]:4 202.0
|
||||
char *fill::addr#2 // addr zp[2]:4 138.33333333333331
|
||||
char *fill::addr#0 // addr zp[2]:12 11.0
|
||||
char *fill::addr#1 // addr zp[2]:12 202.0
|
||||
char *fill::addr#2 // addr zp[2]:12 138.33333333333331
|
||||
char *fill::end
|
||||
char *fill::end#0 // end zp[2]:2 22.4
|
||||
char *fill::end#0 // end zp[2]:14 22.4
|
||||
int fill::size
|
||||
int fill::size#2 // size zp[2]:2 11.0
|
||||
int fill::size#2 // size zp[2]:14 11.0
|
||||
char *fill::start
|
||||
char fill::val
|
||||
char fill::val#4 // reg byte x 16.833333333333332
|
||||
void main()
|
||||
void plot(int x , int y)
|
||||
int plot::$0 // zp[2]:12 2002.0
|
||||
int plot::$0 // zp[2]:4 2002.0
|
||||
char plot::$1 // reg byte a 2002.0
|
||||
int plot::$2 // zp[2]:10 1501.5
|
||||
int plot::$3 // zp[2]:14 2002.0
|
||||
int plot::$2 // zp[2]:6 1501.5
|
||||
int plot::$3 // zp[2]:2 2002.0
|
||||
signed char plot::$4 // reg byte a 2002.0
|
||||
char plot::$5 // reg byte a 2002.0
|
||||
char plot::$6 // reg byte a 2002.0
|
||||
int plot::$7 // zp[2]:14 2002.0
|
||||
int plot::$8 // zp[2]:14 2002.0
|
||||
int plot::$7 // zp[2]:2 2002.0
|
||||
int plot::$8 // zp[2]:2 2002.0
|
||||
char *plot::location
|
||||
char *plot::location#1 // location zp[2]:12 667.3333333333334
|
||||
char *plot::location#2 // location zp[2]:12 400.4
|
||||
char *plot::location#3 // location zp[2]:12 1001.0
|
||||
char *plot::location#1 // location zp[2]:4 667.3333333333334
|
||||
char *plot::location#2 // location zp[2]:4 400.4
|
||||
char *plot::location#3 // location zp[2]:4 1001.0
|
||||
int plot::x
|
||||
int plot::x#0 // x zp[2]:8 101.0
|
||||
int plot::x#1 // x zp[2]:8 101.0
|
||||
|
@ -1877,26 +1877,26 @@ int plot::x#6 // x zp[2]:8 101.0
|
|||
int plot::x#7 // x zp[2]:8 101.0
|
||||
int plot::x#8 // x zp[2]:8 255.45454545454544
|
||||
int plot::y
|
||||
int plot::y#0 // y zp[2]:10 202.0
|
||||
int plot::y#1 // y zp[2]:10 202.0
|
||||
int plot::y#2 // y zp[2]:10 202.0
|
||||
int plot::y#3 // y zp[2]:10 202.0
|
||||
int plot::y#4 // y zp[2]:10 202.0
|
||||
int plot::y#5 // y zp[2]:10 202.0
|
||||
int plot::y#6 // y zp[2]:10 202.0
|
||||
int plot::y#7 // y zp[2]:10 202.0
|
||||
int plot::y#8 // y zp[2]:10 301.5
|
||||
int plot::y#0 // y zp[2]:6 202.0
|
||||
int plot::y#1 // y zp[2]:6 202.0
|
||||
int plot::y#2 // y zp[2]:6 202.0
|
||||
int plot::y#3 // y zp[2]:6 202.0
|
||||
int plot::y#4 // y zp[2]:6 202.0
|
||||
int plot::y#5 // y zp[2]:6 202.0
|
||||
int plot::y#6 // y zp[2]:6 202.0
|
||||
int plot::y#7 // y zp[2]:6 202.0
|
||||
int plot::y#8 // y zp[2]:6 301.5
|
||||
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:2 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:14 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:12 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:10 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
zp[2]:6 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
zp[2]:4 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
zp[2]:14 [ plot::$7 plot::$8 plot::$3 ]
|
||||
zp[2]:2 [ plot::$7 plot::$8 plot::$3 ]
|
||||
reg byte a [ plot::$4 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
|
||||
|
@ -2003,11 +2003,11 @@ main: {
|
|||
}
|
||||
// fill
|
||||
// Fill some memory with a value
|
||||
// void fill(char *start, __zp(2) int size, __register(X) char val)
|
||||
// void fill(char *start, __zp($e) int size, __register(X) char val)
|
||||
fill: {
|
||||
.label end = 2
|
||||
.label addr = 4
|
||||
.label size = 2
|
||||
.label end = $e
|
||||
.label addr = $c
|
||||
.label size = $e
|
||||
// byte* end = start + size
|
||||
// [10] fill::end#0 = fill::addr#0 + fill::size#2 -- pbuz1=pbuz2_plus_vwsz1
|
||||
clc
|
||||
|
@ -2056,12 +2056,12 @@ circle: {
|
|||
.const r = $32
|
||||
.label __5 = 8
|
||||
.label __6 = 8
|
||||
.label __7 = 6
|
||||
.label __9 = $a
|
||||
.label __10 = 6
|
||||
.label p = 6
|
||||
.label y = 4
|
||||
.label x1 = 2
|
||||
.label __7 = $a
|
||||
.label __9 = 6
|
||||
.label __10 = $a
|
||||
.label p = $a
|
||||
.label y = $c
|
||||
.label x1 = $e
|
||||
// [17] phi from circle to circle::@1 [phi:circle->circle::@1]
|
||||
// [17] phi circle::p#3 = 3-circle::r#0<<1 [phi:circle->circle::@1#0] -- vwsz1=vwsc1
|
||||
lda #<3-(r<<1)
|
||||
|
@ -2377,16 +2377,16 @@ circle: {
|
|||
jmp __b4
|
||||
}
|
||||
// plot
|
||||
// void plot(__zp(8) int x, __zp($a) int y)
|
||||
// void plot(__zp(8) int x, __zp(6) int y)
|
||||
plot: {
|
||||
.label __0 = $c
|
||||
.label __2 = $a
|
||||
.label __3 = $e
|
||||
.label __0 = 4
|
||||
.label __2 = 6
|
||||
.label __3 = 2
|
||||
.label x = 8
|
||||
.label y = $a
|
||||
.label location = $c
|
||||
.label __7 = $e
|
||||
.label __8 = $e
|
||||
.label y = 6
|
||||
.label location = 4
|
||||
.label __7 = 2
|
||||
.label __8 = 2
|
||||
// x & $fff8
|
||||
// [56] plot::$0 = plot::x#8 & $fff8 -- vwsz1=vwsz2_band_vdsc1
|
||||
lda.z x
|
||||
|
|
|
@ -9,56 +9,56 @@ __constant char * const VICII_MEMORY = (char *) 53272
|
|||
__constant const char VICII_RSEL = 8
|
||||
__constant char bitmask[] = { $80, $40, $20, $10, 8, 4, 2, 1 }
|
||||
void circle(int xc , int yc , int r)
|
||||
int circle::$10 // zp[2]:6 202.0
|
||||
int circle::$10 // zp[2]:10 202.0
|
||||
int circle::$5 // zp[2]:8 202.0
|
||||
int circle::$6 // zp[2]:8 202.0
|
||||
int circle::$7 // zp[2]:6 202.0
|
||||
int circle::$9 // zp[2]:10 202.0
|
||||
int circle::$7 // zp[2]:10 202.0
|
||||
int circle::$9 // zp[2]:6 202.0
|
||||
int circle::p
|
||||
int circle::p#1 // p zp[2]:6 202.0
|
||||
int circle::p#10 // p zp[2]:6 11.653846153846153
|
||||
int circle::p#2 // p zp[2]:6 202.0
|
||||
int circle::p#3 // p zp[2]:6 57.714285714285715
|
||||
int circle::p#1 // p zp[2]:10 202.0
|
||||
int circle::p#10 // p zp[2]:10 11.653846153846153
|
||||
int circle::p#2 // p zp[2]:10 202.0
|
||||
int circle::p#3 // p zp[2]:10 57.714285714285715
|
||||
int circle::r
|
||||
__constant int circle::r#0 = $32 // r
|
||||
int circle::x1
|
||||
int circle::x1#1 // x1 zp[2]:2 202.0
|
||||
int circle::x1#10 // x1 zp[2]:2 36.47222222222223
|
||||
int circle::x1#1 // x1 zp[2]:14 202.0
|
||||
int circle::x1#10 // x1 zp[2]:14 36.47222222222223
|
||||
int circle::xc
|
||||
__constant int circle::xc#0 = $64 // xc
|
||||
int circle::y
|
||||
int circle::y#1 // y zp[2]:4 60.599999999999994
|
||||
int circle::y#10 // y zp[2]:4 42.73076923076923
|
||||
int circle::y#13 // y zp[2]:4 67.33333333333333
|
||||
int circle::y#1 // y zp[2]:12 60.599999999999994
|
||||
int circle::y#10 // y zp[2]:12 42.73076923076923
|
||||
int circle::y#13 // y zp[2]:12 67.33333333333333
|
||||
int circle::yc
|
||||
__constant int circle::yc#0 = $64 // yc
|
||||
void fill(char *start , int size , char val)
|
||||
char *fill::addr
|
||||
char *fill::addr#0 // addr zp[2]:4 11.0
|
||||
char *fill::addr#1 // addr zp[2]:4 202.0
|
||||
char *fill::addr#2 // addr zp[2]:4 138.33333333333331
|
||||
char *fill::addr#0 // addr zp[2]:12 11.0
|
||||
char *fill::addr#1 // addr zp[2]:12 202.0
|
||||
char *fill::addr#2 // addr zp[2]:12 138.33333333333331
|
||||
char *fill::end
|
||||
char *fill::end#0 // end zp[2]:2 22.4
|
||||
char *fill::end#0 // end zp[2]:14 22.4
|
||||
int fill::size
|
||||
int fill::size#2 // size zp[2]:2 11.0
|
||||
int fill::size#2 // size zp[2]:14 11.0
|
||||
char *fill::start
|
||||
char fill::val
|
||||
char fill::val#4 // reg byte x 16.833333333333332
|
||||
void main()
|
||||
void plot(int x , int y)
|
||||
int plot::$0 // zp[2]:12 2002.0
|
||||
int plot::$0 // zp[2]:4 2002.0
|
||||
char plot::$1 // reg byte a 2002.0
|
||||
int plot::$2 // zp[2]:10 1501.5
|
||||
int plot::$3 // zp[2]:14 2002.0
|
||||
int plot::$2 // zp[2]:6 1501.5
|
||||
int plot::$3 // zp[2]:2 2002.0
|
||||
signed char plot::$4 // reg byte a 2002.0
|
||||
char plot::$5 // reg byte a 2002.0
|
||||
char plot::$6 // reg byte a 2002.0
|
||||
int plot::$7 // zp[2]:14 2002.0
|
||||
int plot::$8 // zp[2]:14 2002.0
|
||||
int plot::$7 // zp[2]:2 2002.0
|
||||
int plot::$8 // zp[2]:2 2002.0
|
||||
char *plot::location
|
||||
char *plot::location#1 // location zp[2]:12 667.3333333333334
|
||||
char *plot::location#2 // location zp[2]:12 400.4
|
||||
char *plot::location#3 // location zp[2]:12 1001.0
|
||||
char *plot::location#1 // location zp[2]:4 667.3333333333334
|
||||
char *plot::location#2 // location zp[2]:4 400.4
|
||||
char *plot::location#3 // location zp[2]:4 1001.0
|
||||
int plot::x
|
||||
int plot::x#0 // x zp[2]:8 101.0
|
||||
int plot::x#1 // x zp[2]:8 101.0
|
||||
|
@ -70,25 +70,25 @@ int plot::x#6 // x zp[2]:8 101.0
|
|||
int plot::x#7 // x zp[2]:8 101.0
|
||||
int plot::x#8 // x zp[2]:8 255.45454545454544
|
||||
int plot::y
|
||||
int plot::y#0 // y zp[2]:10 202.0
|
||||
int plot::y#1 // y zp[2]:10 202.0
|
||||
int plot::y#2 // y zp[2]:10 202.0
|
||||
int plot::y#3 // y zp[2]:10 202.0
|
||||
int plot::y#4 // y zp[2]:10 202.0
|
||||
int plot::y#5 // y zp[2]:10 202.0
|
||||
int plot::y#6 // y zp[2]:10 202.0
|
||||
int plot::y#7 // y zp[2]:10 202.0
|
||||
int plot::y#8 // y zp[2]:10 301.5
|
||||
int plot::y#0 // y zp[2]:6 202.0
|
||||
int plot::y#1 // y zp[2]:6 202.0
|
||||
int plot::y#2 // y zp[2]:6 202.0
|
||||
int plot::y#3 // y zp[2]:6 202.0
|
||||
int plot::y#4 // y zp[2]:6 202.0
|
||||
int plot::y#5 // y zp[2]:6 202.0
|
||||
int plot::y#6 // y zp[2]:6 202.0
|
||||
int plot::y#7 // y zp[2]:6 202.0
|
||||
int plot::y#8 // y zp[2]:6 301.5
|
||||
|
||||
reg byte x [ fill::val#4 ]
|
||||
zp[2]:2 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:4 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:6 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:14 [ circle::x1#10 circle::x1#1 fill::size#2 fill::end#0 ]
|
||||
zp[2]:12 [ circle::y#13 circle::y#10 circle::y#1 fill::addr#2 fill::addr#0 fill::addr#1 ]
|
||||
zp[2]:10 [ circle::p#3 circle::p#10 circle::p#1 circle::p#2 circle::$7 circle::$10 ]
|
||||
zp[2]:8 [ circle::$5 circle::$6 plot::x#8 plot::x#5 plot::x#6 plot::x#7 plot::x#0 plot::x#1 plot::x#2 plot::x#3 plot::x#4 ]
|
||||
zp[2]:10 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
zp[2]:12 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
zp[2]:6 [ circle::$9 plot::y#8 plot::y#5 plot::y#6 plot::y#7 plot::y#0 plot::y#1 plot::y#2 plot::y#3 plot::y#4 plot::$2 ]
|
||||
zp[2]:4 [ plot::$0 plot::location#1 plot::location#2 plot::location#3 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
reg byte a [ plot::$1 ]
|
||||
zp[2]:14 [ plot::$7 plot::$8 plot::$3 ]
|
||||
zp[2]:2 [ plot::$7 plot::$8 plot::$3 ]
|
||||
reg byte a [ plot::$4 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
.label VICII_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = $10
|
||||
.label next = $18
|
||||
.segment Code
|
||||
main: {
|
||||
// *BORDER_COLOR = 0
|
||||
|
@ -70,8 +70,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $10
|
||||
.label yoffs = 2
|
||||
.label __7 = $18
|
||||
.label yoffs = 8
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
|
@ -159,7 +159,7 @@ bitmap_clear: {
|
|||
rts
|
||||
}
|
||||
init_screen: {
|
||||
.label c = 2
|
||||
.label c = 8
|
||||
lda #<SCREEN
|
||||
sta.z c
|
||||
lda #>SCREEN
|
||||
|
@ -187,20 +187,20 @@ init_screen: {
|
|||
jmp __b1
|
||||
}
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($e) unsigned int x2, unsigned int y2)
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($16) unsigned int x2, unsigned int y2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $11
|
||||
.label dy = $a
|
||||
.label sx = $13
|
||||
.label sy = $c
|
||||
.label e1 = 4
|
||||
.label e = 6
|
||||
.label y = 2
|
||||
.label x = 8
|
||||
.label x2 = $e
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $14
|
||||
.label sy = $10
|
||||
.label e1 = $c
|
||||
.label e = $a
|
||||
.label y = 8
|
||||
.label x = 6
|
||||
.label x2 = $16
|
||||
// unsigned int dx = abs_u16(x2-x1)
|
||||
lda.z x2
|
||||
sta.z abs_u16.w
|
||||
|
@ -411,12 +411,12 @@ bitmap_line: {
|
|||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(8) void *str, __register(X) char c, __zp(6) unsigned int num)
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 6
|
||||
.label dst = 8
|
||||
.label num = 6
|
||||
.label str = 8
|
||||
.label end = $a
|
||||
.label dst = 6
|
||||
.label num = $a
|
||||
.label str = 6
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -455,10 +455,10 @@ memset: {
|
|||
jmp __b2
|
||||
}
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($a) unsigned int abs_u16(__zp($a) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// BYTE1(w)&0x80
|
||||
|
@ -481,10 +481,10 @@ abs_u16: {
|
|||
}
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($c) unsigned int sgn_u16(__zp($15) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $c
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// BYTE1(w)&0x80
|
||||
|
@ -505,11 +505,11 @@ sgn_u16: {
|
|||
rts
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(8) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $17
|
||||
.label plotter = $15
|
||||
.label x = 8
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
|
|
|
@ -2018,57 +2018,57 @@ Complete equivalence classes
|
|||
[ bitmap_plot::$1 ]
|
||||
[ bitmap_plot::plotter#1 ]
|
||||
[ bitmap_plot::$2 ]
|
||||
Allocated zp[1]:2 [ next#5 next#0 ]
|
||||
Allocated zp[1]:3 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:4 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[2]:8 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Allocated zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
Allocated zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
Allocated zp[2]:3 [ bitmap_plot::$1 ]
|
||||
Allocated zp[1]:5 [ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:6 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
Allocated zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated zp[2]:18 [ memset::num#2 ]
|
||||
Allocated zp[2]:20 [ memset::str#3 ]
|
||||
Allocated zp[1]:22 [ memset::c#4 ]
|
||||
Allocated zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ]
|
||||
Allocated zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated zp[2]:29 [ sgn_u16::return#4 ]
|
||||
Allocated zp[1]:31 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
Allocated zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated zp[2]:34 [ bitmap_line::x2#0 ]
|
||||
Allocated zp[1]:36 [ bitmap_init::$7 ]
|
||||
Allocated zp[1]:37 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:38 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:39 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:40 [ abs_u16::return#0 ]
|
||||
Allocated zp[2]:42 [ bitmap_line::dx#0 ]
|
||||
Allocated zp[2]:44 [ abs_u16::return#1 ]
|
||||
Allocated zp[2]:46 [ bitmap_line::dy#0 ]
|
||||
Allocated zp[2]:48 [ sgn_u16::return#0 ]
|
||||
Allocated zp[2]:50 [ bitmap_line::sx#0 ]
|
||||
Allocated zp[2]:52 [ sgn_u16::return#1 ]
|
||||
Allocated zp[2]:54 [ bitmap_line::sy#0 ]
|
||||
Allocated zp[2]:56 [ memset::end#0 ]
|
||||
Allocated zp[1]:58 [ abs_u16::$0 ]
|
||||
Allocated zp[1]:59 [ abs_u16::$1 ]
|
||||
Allocated zp[1]:60 [ sgn_u16::$0 ]
|
||||
Allocated zp[1]:61 [ sgn_u16::$1 ]
|
||||
Allocated zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:64 [ bitmap_plot::$1 ]
|
||||
Allocated zp[2]:66 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[1]:68 [ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ]
|
||||
Allocated zp[1]:24 [ abs_u16::$0 ]
|
||||
Allocated zp[1]:25 [ abs_u16::$1 ]
|
||||
Allocated zp[1]:26 [ sgn_u16::$0 ]
|
||||
Allocated zp[1]:27 [ sgn_u16::$1 ]
|
||||
Allocated zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated zp[2]:30 [ bitmap_line::dy#0 ]
|
||||
Allocated zp[2]:32 [ bitmap_line::dx#0 ]
|
||||
Allocated zp[2]:34 [ bitmap_line::sy#0 ]
|
||||
Allocated zp[2]:36 [ bitmap_line::sx#0 ]
|
||||
Allocated zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[2]:40 [ bitmap_line::x2#0 ]
|
||||
Allocated zp[2]:42 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Allocated zp[1]:44 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[1]:47 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:48 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:49 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:50 [ abs_u16::return#0 ]
|
||||
Allocated zp[2]:52 [ abs_u16::return#1 ]
|
||||
Allocated zp[2]:54 [ sgn_u16::return#0 ]
|
||||
Allocated zp[2]:56 [ sgn_u16::return#1 ]
|
||||
Allocated zp[2]:58 [ memset::end#0 ]
|
||||
Allocated zp[1]:60 [ memset::c#4 ]
|
||||
Allocated zp[2]:61 [ memset::num#2 ]
|
||||
Allocated zp[2]:63 [ sgn_u16::return#4 ]
|
||||
Allocated zp[1]:65 [ bitmap_init::$7 ]
|
||||
Allocated zp[1]:66 [ next#5 next#0 ]
|
||||
Allocated zp[2]:67 [ memset::str#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:37 [ bitmap_init::$4 ] has ALU potential.
|
||||
Equivalence Class zp[1]:47 [ bitmap_init::$4 ] has ALU potential.
|
||||
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [3] *VICII_MEMORY = (char)(unsigned int)SCREEN&$3fff/$40|(unsigned int)BITMAP&$3fff/$400 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] bitmap_line::x2#0 = next#5 [ next#5 bitmap_line::x2#0 ] ( [ next#5 bitmap_line::x2#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ next#5 next#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:66 [ next#5 next#0 ]
|
||||
Statement [30] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [42] if(init_screen::c#2!=SCREEN+$400) goto init_screen::@2 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a
|
||||
Statement [44] *init_screen::c#2 = $14 [ init_screen::c#2 ] ( init_screen:8 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [46] abs_u16::w#0 = bitmap_line::x2#0 [ bitmap_line::x2#0 abs_u16::w#0 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
|
@ -2102,18 +2102,18 @@ Statement [88] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 [ bitmap
|
|||
Statement [89] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [91] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( bitmap_line:11 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [95] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:6::memset:36 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:6::memset:38 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:22 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:60 [ memset::c#4 ]
|
||||
Statement [96] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:6::memset:36 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:6::memset:38 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
||||
Statement [97] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:6::memset:36 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:6::memset:38 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [99] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:6::memset:36 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:6::memset:38 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [101] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:6::memset:36 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:6::memset:38 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:22 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:60 [ memset::c#4 ]
|
||||
Statement [107] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( bitmap_line:11::abs_u16:47 [ next#5 bitmap_line::x2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#5 } { abs_u16::return#0 = abs_u16::return#4 } } bitmap_line:11::abs_u16:50 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { next#5 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [119] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [120] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ next#5 next#0 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:66 [ next#5 next#0 ]
|
||||
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -2163,113 +2163,113 @@ Statement [118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bi
|
|||
Statement [119] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [120] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [122] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:11::bitmap_plot:67 [ next#5 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:11::bitmap_plot:78 [ next#5 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:11::bitmap_plot:84 [ next#5 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#5 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:11::bitmap_plot:93 [ next#5 ] { { next#5 = bitmap_line::x2#0 } } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ next#5 next#0 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:3 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:8 [ init_screen::c#2 init_screen::c#1 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:14 ,
|
||||
Potential registers zp[1]:66 [ next#5 next#0 ] : zp[1]:66 , reg byte x ,
|
||||
Potential registers zp[1]:44 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:46 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:38 ,
|
||||
Potential registers zp[2]:42 [ init_screen::c#2 init_screen::c#1 ] : zp[2]:42 ,
|
||||
Potential registers zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:14 ,
|
||||
Potential registers zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:18 [ memset::num#2 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:20 [ memset::str#3 ] : zp[2]:20 ,
|
||||
Potential registers zp[1]:22 [ memset::c#4 ] : zp[1]:22 , reg byte x ,
|
||||
Potential registers zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:23 ,
|
||||
Potential registers zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] : zp[2]:25 ,
|
||||
Potential registers zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] : zp[2]:27 ,
|
||||
Potential registers zp[2]:29 [ sgn_u16::return#4 ] : zp[2]:29 ,
|
||||
Potential registers zp[1]:31 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:34 [ bitmap_line::x2#0 ] : zp[2]:34 ,
|
||||
Potential registers zp[1]:36 [ bitmap_init::$7 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:37 [ bitmap_init::$4 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:38 [ bitmap_init::$5 ] : zp[1]:38 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:39 [ bitmap_init::$6 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:40 [ abs_u16::return#0 ] : zp[2]:40 ,
|
||||
Potential registers zp[2]:42 [ bitmap_line::dx#0 ] : zp[2]:42 ,
|
||||
Potential registers zp[2]:44 [ abs_u16::return#1 ] : zp[2]:44 ,
|
||||
Potential registers zp[2]:46 [ bitmap_line::dy#0 ] : zp[2]:46 ,
|
||||
Potential registers zp[2]:48 [ sgn_u16::return#0 ] : zp[2]:48 ,
|
||||
Potential registers zp[2]:50 [ bitmap_line::sx#0 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:52 [ sgn_u16::return#1 ] : zp[2]:52 ,
|
||||
Potential registers zp[2]:54 [ bitmap_line::sy#0 ] : zp[2]:54 ,
|
||||
Potential registers zp[2]:56 [ memset::end#0 ] : zp[2]:56 ,
|
||||
Potential registers zp[1]:58 [ abs_u16::$0 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:59 [ abs_u16::$1 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:60 [ sgn_u16::$0 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:61 [ sgn_u16::$1 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:62 [ bitmap_plot::plotter#0 ] : zp[2]:62 ,
|
||||
Potential registers zp[2]:64 [ bitmap_plot::$1 ] : zp[2]:64 ,
|
||||
Potential registers zp[2]:66 [ bitmap_plot::plotter#1 ] : zp[2]:66 ,
|
||||
Potential registers zp[1]:68 [ bitmap_plot::$2 ] : zp[1]:68 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:61 [ memset::num#2 ] : zp[2]:61 ,
|
||||
Potential registers zp[2]:67 [ memset::str#3 ] : zp[2]:67 ,
|
||||
Potential registers zp[1]:60 [ memset::c#4 ] : zp[1]:60 , reg byte x ,
|
||||
Potential registers zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:20 ,
|
||||
Potential registers zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] : zp[2]:22 ,
|
||||
Potential registers zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:63 [ sgn_u16::return#4 ] : zp[2]:63 ,
|
||||
Potential registers zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:40 [ bitmap_line::x2#0 ] : zp[2]:40 ,
|
||||
Potential registers zp[1]:65 [ bitmap_init::$7 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:47 [ bitmap_init::$4 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:48 [ bitmap_init::$5 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:49 [ bitmap_init::$6 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:50 [ abs_u16::return#0 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:32 [ bitmap_line::dx#0 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:52 [ abs_u16::return#1 ] : zp[2]:52 ,
|
||||
Potential registers zp[2]:30 [ bitmap_line::dy#0 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:54 [ sgn_u16::return#0 ] : zp[2]:54 ,
|
||||
Potential registers zp[2]:36 [ bitmap_line::sx#0 ] : zp[2]:36 ,
|
||||
Potential registers zp[2]:56 [ sgn_u16::return#1 ] : zp[2]:56 ,
|
||||
Potential registers zp[2]:34 [ bitmap_line::sy#0 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:58 [ memset::end#0 ] : zp[2]:58 ,
|
||||
Potential registers zp[1]:24 [ abs_u16::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ abs_u16::$1 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:26 [ sgn_u16::$0 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:27 [ sgn_u16::$1 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:18 [ bitmap_plot::plotter#0 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:3 [ bitmap_plot::$1 ] : zp[2]:3 ,
|
||||
Potential registers zp[2]:6 [ bitmap_plot::plotter#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:5 [ bitmap_plot::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:31 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:64 [ bitmap_plot::$1 ] 200,002: zp[1]:68 [ bitmap_plot::$2 ] 150,001.5: zp[2]:66 [ bitmap_plot::plotter#1 ] 75,129.25: zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,036.46: zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 55,005.5: zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 868.77: zp[2]:46 [ bitmap_line::dy#0 ] 800.18: zp[2]:42 [ bitmap_line::dx#0 ] 773.19: zp[2]:54 [ bitmap_line::sy#0 ] 693.21: zp[2]:50 [ bitmap_line::sx#0 ] 340.47: zp[2]:34 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,531: zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 2,002: zp[1]:58 [ abs_u16::$0 ] 2,002: zp[1]:59 [ abs_u16::$1 ] 202: zp[2]:40 [ abs_u16::return#0 ] 202: zp[2]:44 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:60 [ sgn_u16::$0 ] 2,002: zp[1]:61 [ sgn_u16::$1 ] 1,304: zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] 202: zp[2]:48 [ sgn_u16::return#0 ] 202: zp[2]:52 [ sgn_u16::return#1 ] 50.5: zp[2]:29 [ sgn_u16::return#4 ]
|
||||
Uplift Scope [memset] 3,572.33: zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:56 [ memset::end#0 ] 125.12: zp[1]:22 [ memset::c#4 ] 101: zp[2]:18 [ memset::num#2 ] 0: zp[2]:20 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 366.12: zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:3 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:4 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:5 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:37 [ bitmap_init::$4 ] 202: zp[1]:38 [ bitmap_init::$5 ] 202: zp[1]:39 [ bitmap_init::$6 ] 50.5: zp[1]:36 [ bitmap_init::$7 ]
|
||||
Uplift Scope [init_screen] 336.67: zp[2]:8 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift Scope [] 33: zp[1]:2 [ next#5 next#0 ]
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:3 [ bitmap_plot::$1 ] 200,002: zp[1]:5 [ bitmap_plot::$2 ] 150,001.5: zp[2]:6 [ bitmap_plot::plotter#1 ] 75,129.25: zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,036.46: zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 55,005.5: zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 868.77: zp[2]:30 [ bitmap_line::dy#0 ] 800.18: zp[2]:32 [ bitmap_line::dx#0 ] 773.19: zp[2]:34 [ bitmap_line::sy#0 ] 693.21: zp[2]:36 [ bitmap_line::sx#0 ] 340.47: zp[2]:40 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,531: zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 2,002: zp[1]:24 [ abs_u16::$0 ] 2,002: zp[1]:25 [ abs_u16::$1 ] 202: zp[2]:50 [ abs_u16::return#0 ] 202: zp[2]:52 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:26 [ sgn_u16::$0 ] 2,002: zp[1]:27 [ sgn_u16::$1 ] 1,304: zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] 202: zp[2]:54 [ sgn_u16::return#0 ] 202: zp[2]:56 [ sgn_u16::return#1 ] 50.5: zp[2]:63 [ sgn_u16::return#4 ]
|
||||
Uplift Scope [memset] 3,572.33: zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:58 [ memset::end#0 ] 125.12: zp[1]:60 [ memset::c#4 ] 101: zp[2]:61 [ memset::num#2 ] 0: zp[2]:67 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 366.12: zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:44 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:47 [ bitmap_init::$4 ] 202: zp[1]:48 [ bitmap_init::$5 ] 202: zp[1]:49 [ bitmap_init::$6 ] 50.5: zp[1]:65 [ bitmap_init::$7 ]
|
||||
Uplift Scope [init_screen] 336.67: zp[2]:42 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift Scope [] 33: zp[1]:66 [ next#5 next#0 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [bitmap_clear]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [bitmap_plot] best 36707 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:64 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:66 [ bitmap_plot::plotter#1 ] zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:62 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 36707 combination zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:46 [ bitmap_line::dy#0 ] zp[2]:42 [ bitmap_line::dx#0 ] zp[2]:54 [ bitmap_line::sy#0 ] zp[2]:50 [ bitmap_line::sx#0 ] zp[2]:34 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36697 combination zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:40 [ abs_u16::return#0 ] zp[2]:44 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36687 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:48 [ sgn_u16::return#0 ] zp[2]:52 [ sgn_u16::return#1 ] zp[2]:29 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36671 combination zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:56 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:18 [ memset::num#2 ] zp[2]:20 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36221 combination zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:38 [ bitmap_init::$5 ] zp[1]:39 [ bitmap_init::$6 ] zp[1]:36 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_plot] best 36707 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:3 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:6 [ bitmap_plot::plotter#1 ] zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 36707 combination zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:30 [ bitmap_line::dy#0 ] zp[2]:32 [ bitmap_line::dx#0 ] zp[2]:34 [ bitmap_line::sy#0 ] zp[2]:36 [ bitmap_line::sx#0 ] zp[2]:40 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36697 combination zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:50 [ abs_u16::return#0 ] zp[2]:52 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36687 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:54 [ sgn_u16::return#0 ] zp[2]:56 [ sgn_u16::return#1 ] zp[2]:63 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36671 combination zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:58 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:61 [ memset::num#2 ] zp[2]:67 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36221 combination zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:48 [ bitmap_init::$5 ] zp[1]:49 [ bitmap_init::$6 ] zp[1]:65 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [init_screen] best 36221 combination zp[2]:8 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [] best 36221 combination zp[1]:2 [ next#5 next#0 ]
|
||||
Uplifting [init_screen] best 36221 combination zp[2]:42 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [] best 36221 combination zp[1]:66 [ next#5 next#0 ]
|
||||
Uplifting [MOS6526_CIA] best 36221 combination
|
||||
Uplifting [MOS6569_VICII] best 36221 combination
|
||||
Uplifting [MOS6581_SID] best 36221 combination
|
||||
Uplifting [bitmap_clear] best 36221 combination
|
||||
Uplifting [main] best 36221 combination
|
||||
Attempting to uplift remaining variables inzp[1]:38 [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:48 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 36161 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:39 [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:49 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 36101 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:36 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 36101 combination zp[1]:36 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ next#5 next#0 ]
|
||||
Uplifting [] best 36101 combination zp[1]:2 [ next#5 next#0 ]
|
||||
Coalescing zero page register [ zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:32 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 3
|
||||
Coalescing zero page register [ zp[2]:18 [ memset::num#2 ] ] with [ zp[2]:56 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ memset::str#3 ] ] with [ zp[2]:23 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] ] with [ zp[2]:40 [ abs_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 ] ] with [ zp[2]:44 [ abs_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ sgn_u16::return#4 ] ] with [ zp[2]:48 [ sgn_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:52 [ sgn_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:62 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:66 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:25 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:46 [ bitmap_line::dy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:29 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:54 [ bitmap_line::sy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:8 [ init_screen::c#2 init_screen::c#1 ] ] with [ zp[2]:6 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:18 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:10 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ]
|
||||
Coalescing zero page register [ zp[2]:20 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:12 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ]
|
||||
Coalescing zero page register [ zp[1]:36 [ bitmap_init::$7 ] ] with [ zp[1]:2 [ next#5 next#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:62 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:27 [ sgn_u16::w#2 sgn_u16::w#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:14 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] ] with [ zp[2]:8 [ init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Allocated (was zp[2]:14) zp[2]:2 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated (was zp[2]:16) zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated (was zp[2]:18) zp[2]:6 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated (was zp[2]:20) zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated (was zp[2]:25) zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
Allocated (was zp[2]:29) zp[2]:12 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
Allocated (was zp[2]:34) zp[2]:14 [ bitmap_line::x2#0 ]
|
||||
Allocated (was zp[1]:36) zp[1]:16 [ bitmap_init::$7 next#5 next#0 ]
|
||||
Allocated (was zp[2]:42) zp[2]:17 [ bitmap_line::dx#0 ]
|
||||
Allocated (was zp[2]:50) zp[2]:19 [ bitmap_line::sx#0 ]
|
||||
Allocated (was zp[2]:62) zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated (was zp[2]:64) zp[2]:23 [ bitmap_plot::$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:65 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 36101 combination zp[1]:65 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:66 [ next#5 next#0 ]
|
||||
Uplifting [] best 36101 combination zp[1]:66 [ next#5 next#0 ]
|
||||
Coalescing zero page register [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 3
|
||||
Coalescing zero page register [ zp[2]:61 [ memset::num#2 ] ] with [ zp[2]:58 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:67 [ memset::str#3 ] ] with [ zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] ] with [ zp[2]:50 [ abs_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 ] ] with [ zp[2]:52 [ abs_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 ] ] with [ zp[2]:54 [ sgn_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:56 [ sgn_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:6 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:30 [ bitmap_line::dy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:34 [ bitmap_line::sy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:42 [ init_screen::c#2 init_screen::c#1 ] ] with [ zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:61 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ]
|
||||
Coalescing zero page register [ zp[2]:67 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ]
|
||||
Coalescing zero page register [ zp[1]:65 [ bitmap_init::$7 ] ] with [ zp[1]:66 [ next#5 next#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] ] with [ zp[2]:42 [ init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Allocated (was zp[2]:18) zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated (was zp[2]:3) zp[2]:4 [ bitmap_plot::$1 ]
|
||||
Allocated (was zp[2]:67) zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated (was zp[2]:12) zp[2]:8 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated (was zp[2]:61) zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated (was zp[2]:16) zp[2]:12 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated (was zp[2]:22) zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
Allocated (was zp[2]:63) zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
Allocated (was zp[2]:32) zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
Allocated (was zp[2]:36) zp[2]:20 [ bitmap_line::sx#0 ]
|
||||
Allocated (was zp[2]:40) zp[2]:22 [ bitmap_line::x2#0 ]
|
||||
Allocated (was zp[1]:65) zp[1]:24 [ bitmap_init::$7 next#5 next#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -2311,7 +2311,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.label VICII_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = $10
|
||||
.label next = $18
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
|
@ -2378,8 +2378,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $10
|
||||
.label yoffs = 2
|
||||
.label __7 = $18
|
||||
.label yoffs = 8
|
||||
// [14] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
__b1_from_bitmap_init:
|
||||
// [14] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -2537,7 +2537,7 @@ bitmap_clear: {
|
|||
}
|
||||
// init_screen
|
||||
init_screen: {
|
||||
.label c = 2
|
||||
.label c = 8
|
||||
// [41] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
|
||||
__b1_from_init_screen:
|
||||
// [41] phi init_screen::c#2 = SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1
|
||||
|
@ -2578,20 +2578,20 @@ init_screen: {
|
|||
}
|
||||
// bitmap_line
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($e) unsigned int x2, unsigned int y2)
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($16) unsigned int x2, unsigned int y2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $11
|
||||
.label dy = $a
|
||||
.label sx = $13
|
||||
.label sy = $c
|
||||
.label e1 = 4
|
||||
.label e = 6
|
||||
.label y = 2
|
||||
.label x = 8
|
||||
.label x2 = $e
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $14
|
||||
.label sy = $10
|
||||
.label e1 = $c
|
||||
.label e = $a
|
||||
.label y = 8
|
||||
.label x = 6
|
||||
.label x2 = $16
|
||||
// [46] abs_u16::w#0 = bitmap_line::x2#0 -- vwuz1=vwuz2
|
||||
lda.z x2
|
||||
sta.z abs_u16.w
|
||||
|
@ -2931,12 +2931,12 @@ bitmap_line: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(8) void *str, __register(X) char c, __zp(6) unsigned int num)
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 6
|
||||
.label dst = 8
|
||||
.label num = 6
|
||||
.label str = 8
|
||||
.label end = $a
|
||||
.label dst = 6
|
||||
.label num = $a
|
||||
.label str = 6
|
||||
// [95] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -2989,10 +2989,10 @@ memset: {
|
|||
}
|
||||
// abs_u16
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($a) unsigned int abs_u16(__zp($a) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// [104] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [105] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
|
@ -3024,10 +3024,10 @@ abs_u16: {
|
|||
// sgn_u16
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($c) unsigned int sgn_u16(__zp($15) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $c
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// [111] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [112] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
|
@ -3063,11 +3063,11 @@ sgn_u16: {
|
|||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(8) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $17
|
||||
.label plotter = $15
|
||||
.label x = 8
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// [118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
|
@ -3275,13 +3275,13 @@ unsigned int abs_u16(unsigned int w)
|
|||
char abs_u16::$0 // reg byte a 2002.0
|
||||
char abs_u16::$1 // reg byte a 2002.0
|
||||
unsigned int abs_u16::return
|
||||
unsigned int abs_u16::return#0 // return zp[2]:10 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:10 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:10 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:10 551.0
|
||||
unsigned int abs_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:14 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:14 551.0
|
||||
unsigned int abs_u16::w
|
||||
unsigned int abs_u16::w#0 // w zp[2]:10 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:10 776.0
|
||||
unsigned int abs_u16::w#0 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:14 776.0
|
||||
void bitmap_clear(char bgcol , char fgcol)
|
||||
char bitmap_clear::bgcol
|
||||
char bitmap_clear::col
|
||||
|
@ -3292,7 +3292,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 202.0
|
||||
char bitmap_init::$5 // reg byte a 202.0
|
||||
char bitmap_init::$6 // reg byte a 202.0
|
||||
char bitmap_init::$7 // zp[1]:16 50.5
|
||||
char bitmap_init::$7 // zp[1]:24 50.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 101.0
|
||||
char bitmap_init::bits#3 // reg byte a 151.5
|
||||
|
@ -3306,63 +3306,63 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 151.5
|
||||
char bitmap_init::y#2 // reg byte x 50.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:2 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:2 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:2 101.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:8 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:8 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:8 101.0
|
||||
void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2)
|
||||
unsigned int bitmap_line::dx
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:17 800.1842105263158
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:18 800.1842105263158
|
||||
unsigned int bitmap_line::dy
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:10 868.7714285714285
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:14 868.7714285714285
|
||||
unsigned int bitmap_line::e
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:6 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:6 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:6 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:6 15001.5
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:10 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:10 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:10 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:10 15001.5
|
||||
unsigned int bitmap_line::e1
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:4 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:4 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:4 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:4 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:4 15001.5
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:12 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:12 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:12 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:12 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:12 15001.5
|
||||
unsigned int bitmap_line::sx
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:19 693.2068965517242
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:20 693.2068965517242
|
||||
unsigned int bitmap_line::sy
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:12 773.1923076923076
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076
|
||||
unsigned int bitmap_line::x
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:8 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:8 7500.75
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:6 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:6 7500.75
|
||||
unsigned int bitmap_line::x1
|
||||
__constant unsigned int bitmap_line::x1#0 = 0 // x1
|
||||
unsigned int bitmap_line::x2
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:14 340.4666666666667
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:22 340.4666666666667
|
||||
unsigned int bitmap_line::y
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:2 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:2 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:2 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:2 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:2 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:2 10001.0
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:8 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:8 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y1
|
||||
__constant unsigned int bitmap_line::y1#0 = 0 // y1
|
||||
unsigned int bitmap_line::y2
|
||||
__constant unsigned int bitmap_line::y2#0 = $64 // y2
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:23 200002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 200002.0
|
||||
char bitmap_plot::$2 // reg byte x 200002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:21 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:21 150001.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:8 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:8 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:8 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:8 55026.25
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:6 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:6 55026.25
|
||||
char bitmap_plot::y
|
||||
char bitmap_plot::y#1 // reg byte x 20002.0
|
||||
char bitmap_plot::y#2 // reg byte x 202.0
|
||||
|
@ -3374,61 +3374,61 @@ __constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) }
|
|||
char *bitmap_screen
|
||||
void init_screen()
|
||||
char *init_screen::c
|
||||
char *init_screen::c#1 // c zp[2]:2 202.0
|
||||
char *init_screen::c#2 // c zp[2]:2 134.66666666666666
|
||||
char *init_screen::c#1 // c zp[2]:8 202.0
|
||||
char *init_screen::c#2 // c zp[2]:8 134.66666666666666
|
||||
void main()
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 125.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:8 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:8 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:8 202.0
|
||||
char *memset::dst#1 // dst zp[2]:6 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:6 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:6 202.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:6 183.66666666666669
|
||||
char *memset::end#0 // end zp[2]:10 183.66666666666669
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:6 101.0
|
||||
unsigned int memset::num#2 // num zp[2]:10 101.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:8
|
||||
void *memset::str#3 // str zp[2]:6
|
||||
char next
|
||||
char next#0 // next zp[1]:16 22.0
|
||||
char next#5 // next zp[1]:16 11.0
|
||||
char next#0 // next zp[1]:24 22.0
|
||||
char next#5 // next zp[1]:24 11.0
|
||||
unsigned int sgn_u16(unsigned int w)
|
||||
char sgn_u16::$0 // reg byte a 2002.0
|
||||
char sgn_u16::$1 // reg byte a 2002.0
|
||||
unsigned int sgn_u16::return
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:12 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:12 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:12 50.5
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:16 50.5
|
||||
unsigned int sgn_u16::w
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:21 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:21 1102.0
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:2 1102.0
|
||||
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:2 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:6 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
zp[2]:8 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:12 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:12 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[2]:14 [ bitmap_line::x2#0 ]
|
||||
zp[1]:16 [ bitmap_init::$7 next#5 next#0 ]
|
||||
zp[2]:22 [ bitmap_line::x2#0 ]
|
||||
zp[1]:24 [ bitmap_init::$7 next#5 next#0 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:17 [ bitmap_line::dx#0 ]
|
||||
zp[2]:19 [ bitmap_line::sx#0 ]
|
||||
zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
zp[2]:20 [ bitmap_line::sx#0 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:23 [ bitmap_plot::$1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
||||
|
||||
|
@ -3474,7 +3474,7 @@ Score: 30070
|
|||
.label VICII_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = $10
|
||||
.label next = $18
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
|
@ -3535,8 +3535,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $10
|
||||
.label yoffs = 2
|
||||
.label __7 = $18
|
||||
.label yoffs = 8
|
||||
// [14] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
// [14] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
|
@ -3682,7 +3682,7 @@ bitmap_clear: {
|
|||
}
|
||||
// init_screen
|
||||
init_screen: {
|
||||
.label c = 2
|
||||
.label c = 8
|
||||
// [41] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
|
||||
// [41] phi init_screen::c#2 = SCREEN [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1
|
||||
lda #<SCREEN
|
||||
|
@ -3722,20 +3722,20 @@ init_screen: {
|
|||
}
|
||||
// bitmap_line
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($e) unsigned int x2, unsigned int y2)
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($16) unsigned int x2, unsigned int y2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $11
|
||||
.label dy = $a
|
||||
.label sx = $13
|
||||
.label sy = $c
|
||||
.label e1 = 4
|
||||
.label e = 6
|
||||
.label y = 2
|
||||
.label x = 8
|
||||
.label x2 = $e
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $14
|
||||
.label sy = $10
|
||||
.label e1 = $c
|
||||
.label e = $a
|
||||
.label y = 8
|
||||
.label x = 6
|
||||
.label x2 = $16
|
||||
// unsigned int dx = abs_u16(x2-x1)
|
||||
// [46] abs_u16::w#0 = bitmap_line::x2#0 -- vwuz1=vwuz2
|
||||
lda.z x2
|
||||
|
@ -4054,12 +4054,12 @@ bitmap_line: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(8) void *str, __register(X) char c, __zp(6) unsigned int num)
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 6
|
||||
.label dst = 8
|
||||
.label num = 6
|
||||
.label str = 8
|
||||
.label end = $a
|
||||
.label dst = 6
|
||||
.label num = $a
|
||||
.label str = 6
|
||||
// if(num>0)
|
||||
// [95] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
|
@ -4112,10 +4112,10 @@ memset: {
|
|||
}
|
||||
// abs_u16
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($a) unsigned int abs_u16(__zp($a) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $a
|
||||
.label return = $a
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// BYTE1(w)
|
||||
// [104] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
|
@ -4148,10 +4148,10 @@ abs_u16: {
|
|||
// sgn_u16
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($c) unsigned int sgn_u16(__zp($15) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $c
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// BYTE1(w)
|
||||
// [111] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
|
@ -4184,11 +4184,11 @@ sgn_u16: {
|
|||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(8) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $17
|
||||
.label plotter = $15
|
||||
.label x = 8
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
// [118] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
|
|
|
@ -12,13 +12,13 @@ unsigned int abs_u16(unsigned int w)
|
|||
char abs_u16::$0 // reg byte a 2002.0
|
||||
char abs_u16::$1 // reg byte a 2002.0
|
||||
unsigned int abs_u16::return
|
||||
unsigned int abs_u16::return#0 // return zp[2]:10 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:10 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:10 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:10 551.0
|
||||
unsigned int abs_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:14 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:14 551.0
|
||||
unsigned int abs_u16::w
|
||||
unsigned int abs_u16::w#0 // w zp[2]:10 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:10 776.0
|
||||
unsigned int abs_u16::w#0 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:14 776.0
|
||||
void bitmap_clear(char bgcol , char fgcol)
|
||||
char bitmap_clear::bgcol
|
||||
char bitmap_clear::col
|
||||
|
@ -29,7 +29,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 202.0
|
||||
char bitmap_init::$5 // reg byte a 202.0
|
||||
char bitmap_init::$6 // reg byte a 202.0
|
||||
char bitmap_init::$7 // zp[1]:16 50.5
|
||||
char bitmap_init::$7 // zp[1]:24 50.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 101.0
|
||||
char bitmap_init::bits#3 // reg byte a 151.5
|
||||
|
@ -43,63 +43,63 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 151.5
|
||||
char bitmap_init::y#2 // reg byte x 50.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:2 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:2 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:2 101.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:8 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:8 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:8 101.0
|
||||
void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2)
|
||||
unsigned int bitmap_line::dx
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:17 800.1842105263158
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:18 800.1842105263158
|
||||
unsigned int bitmap_line::dy
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:10 868.7714285714285
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:14 868.7714285714285
|
||||
unsigned int bitmap_line::e
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:6 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:6 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:6 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:6 15001.5
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:10 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:10 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:10 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:10 15001.5
|
||||
unsigned int bitmap_line::e1
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:4 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:4 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:4 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:4 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:4 15001.5
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:12 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:12 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:12 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:12 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:12 15001.5
|
||||
unsigned int bitmap_line::sx
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:19 693.2068965517242
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:20 693.2068965517242
|
||||
unsigned int bitmap_line::sy
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:12 773.1923076923076
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076
|
||||
unsigned int bitmap_line::x
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:8 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:8 7500.75
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:6 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:6 7500.75
|
||||
unsigned int bitmap_line::x1
|
||||
__constant unsigned int bitmap_line::x1#0 = 0 // x1
|
||||
unsigned int bitmap_line::x2
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:14 340.4666666666667
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:22 340.4666666666667
|
||||
unsigned int bitmap_line::y
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:2 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:2 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:2 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:2 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:2 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:2 10001.0
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:8 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:8 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y1
|
||||
__constant unsigned int bitmap_line::y1#0 = 0 // y1
|
||||
unsigned int bitmap_line::y2
|
||||
__constant unsigned int bitmap_line::y2#0 = $64 // y2
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:23 200002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 200002.0
|
||||
char bitmap_plot::$2 // reg byte x 200002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:21 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:21 150001.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:8 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:8 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:8 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:8 55026.25
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:6 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:6 55026.25
|
||||
char bitmap_plot::y
|
||||
char bitmap_plot::y#1 // reg byte x 20002.0
|
||||
char bitmap_plot::y#2 // reg byte x 202.0
|
||||
|
@ -111,59 +111,59 @@ __constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) }
|
|||
char *bitmap_screen
|
||||
void init_screen()
|
||||
char *init_screen::c
|
||||
char *init_screen::c#1 // c zp[2]:2 202.0
|
||||
char *init_screen::c#2 // c zp[2]:2 134.66666666666666
|
||||
char *init_screen::c#1 // c zp[2]:8 202.0
|
||||
char *init_screen::c#2 // c zp[2]:8 134.66666666666666
|
||||
void main()
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 125.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:8 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:8 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:8 202.0
|
||||
char *memset::dst#1 // dst zp[2]:6 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:6 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:6 202.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:6 183.66666666666669
|
||||
char *memset::end#0 // end zp[2]:10 183.66666666666669
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:6 101.0
|
||||
unsigned int memset::num#2 // num zp[2]:10 101.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:8
|
||||
void *memset::str#3 // str zp[2]:6
|
||||
char next
|
||||
char next#0 // next zp[1]:16 22.0
|
||||
char next#5 // next zp[1]:16 11.0
|
||||
char next#0 // next zp[1]:24 22.0
|
||||
char next#5 // next zp[1]:24 11.0
|
||||
unsigned int sgn_u16(unsigned int w)
|
||||
char sgn_u16::$0 // reg byte a 2002.0
|
||||
char sgn_u16::$1 // reg byte a 2002.0
|
||||
unsigned int sgn_u16::return
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:12 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:12 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:12 50.5
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:16 50.5
|
||||
unsigned int sgn_u16::w
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:21 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:21 1102.0
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:2 1102.0
|
||||
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:2 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:4 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:6 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
zp[2]:8 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 init_screen::c#2 init_screen::c#1 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:12 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:10 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:12 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[2]:14 [ bitmap_line::x2#0 ]
|
||||
zp[1]:16 [ bitmap_init::$7 next#5 next#0 ]
|
||||
zp[2]:22 [ bitmap_line::x2#0 ]
|
||||
zp[1]:24 [ bitmap_init::$7 next#5 next#0 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:17 [ bitmap_line::dx#0 ]
|
||||
zp[2]:19 [ bitmap_line::sx#0 ]
|
||||
zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
zp[2]:20 [ bitmap_line::sx#0 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:23 [ bitmap_plot::$1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
.label VICII_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
.label next = $14
|
||||
.segment Code
|
||||
main: {
|
||||
// *BORDER_COLOR = 0
|
||||
|
@ -79,8 +79,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $10
|
||||
.label yoffs = 2
|
||||
.label __7 = $18
|
||||
.label yoffs = $14
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
|
@ -168,20 +168,20 @@ bitmap_clear: {
|
|||
rts
|
||||
}
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp(2) unsigned int x2, unsigned int y2)
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($14) unsigned int x2, unsigned int y2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $11
|
||||
.label dy = $c
|
||||
.label sx = $13
|
||||
.label sy = $e
|
||||
.label e1 = 6
|
||||
.label e = 8
|
||||
.label y = 4
|
||||
.label x = $a
|
||||
.label x2 = 2
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $16
|
||||
.label sy = $10
|
||||
.label e1 = $c
|
||||
.label e = $a
|
||||
.label y = 8
|
||||
.label x = 6
|
||||
.label x2 = $14
|
||||
// unsigned int dx = abs_u16(x2-x1)
|
||||
lda.z x2
|
||||
sta.z abs_u16.w
|
||||
|
@ -392,12 +392,12 @@ bitmap_line: {
|
|||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp(8) unsigned int num)
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = $a
|
||||
.label num = 8
|
||||
.label str = $a
|
||||
.label end = $a
|
||||
.label dst = 6
|
||||
.label num = $a
|
||||
.label str = 6
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -436,10 +436,10 @@ memset: {
|
|||
jmp __b2
|
||||
}
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($c) unsigned int abs_u16(__zp($c) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// BYTE1(w)&0x80
|
||||
|
@ -462,10 +462,10 @@ abs_u16: {
|
|||
}
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($e) unsigned int sgn_u16(__zp($15) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $e
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// BYTE1(w)&0x80
|
||||
|
@ -486,11 +486,11 @@ sgn_u16: {
|
|||
rts
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp($a) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $17
|
||||
.label plotter = $15
|
||||
.label x = $a
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
|
|
|
@ -1994,48 +1994,48 @@ Complete equivalence classes
|
|||
[ bitmap_plot::$1 ]
|
||||
[ bitmap_plot::plotter#1 ]
|
||||
[ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:2 [ next#6 next#11 next#0 ]
|
||||
Allocated zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:5 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
Allocated zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated zp[2]:17 [ memset::num#2 ]
|
||||
Allocated zp[2]:19 [ memset::str#3 ]
|
||||
Allocated zp[1]:21 [ memset::c#4 ]
|
||||
Allocated zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ]
|
||||
Allocated zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Allocated zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
Allocated zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated zp[2]:33 [ bitmap_line::x2#0 ]
|
||||
Allocated zp[1]:35 [ bitmap_init::$7 ]
|
||||
Allocated zp[1]:36 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:37 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:38 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:39 [ abs_u16::return#0 ]
|
||||
Allocated zp[2]:41 [ bitmap_line::dx#0 ]
|
||||
Allocated zp[2]:43 [ abs_u16::return#1 ]
|
||||
Allocated zp[2]:45 [ bitmap_line::dy#0 ]
|
||||
Allocated zp[2]:47 [ sgn_u16::return#0 ]
|
||||
Allocated zp[2]:49 [ bitmap_line::sx#0 ]
|
||||
Allocated zp[2]:51 [ sgn_u16::return#1 ]
|
||||
Allocated zp[2]:53 [ bitmap_line::sy#0 ]
|
||||
Allocated zp[2]:55 [ memset::end#0 ]
|
||||
Allocated zp[1]:57 [ abs_u16::$0 ]
|
||||
Allocated zp[1]:58 [ abs_u16::$1 ]
|
||||
Allocated zp[1]:59 [ sgn_u16::$0 ]
|
||||
Allocated zp[1]:60 [ sgn_u16::$1 ]
|
||||
Allocated zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:63 [ bitmap_plot::$1 ]
|
||||
Allocated zp[2]:65 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[1]:67 [ bitmap_plot::$2 ]
|
||||
Allocated zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
Allocated zp[2]:3 [ bitmap_plot::$1 ]
|
||||
Allocated zp[1]:5 [ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:6 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
Allocated zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ]
|
||||
Allocated zp[1]:24 [ abs_u16::$0 ]
|
||||
Allocated zp[1]:25 [ abs_u16::$1 ]
|
||||
Allocated zp[1]:26 [ sgn_u16::$0 ]
|
||||
Allocated zp[1]:27 [ sgn_u16::$1 ]
|
||||
Allocated zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated zp[2]:30 [ bitmap_line::dy#0 ]
|
||||
Allocated zp[2]:32 [ bitmap_line::dx#0 ]
|
||||
Allocated zp[2]:34 [ bitmap_line::sy#0 ]
|
||||
Allocated zp[2]:36 [ bitmap_line::sx#0 ]
|
||||
Allocated zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[2]:40 [ bitmap_line::x2#0 ]
|
||||
Allocated zp[1]:42 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:43 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:44 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[1]:45 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:46 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:47 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:48 [ abs_u16::return#0 ]
|
||||
Allocated zp[2]:50 [ abs_u16::return#1 ]
|
||||
Allocated zp[2]:52 [ sgn_u16::return#0 ]
|
||||
Allocated zp[2]:54 [ sgn_u16::return#1 ]
|
||||
Allocated zp[2]:56 [ memset::end#0 ]
|
||||
Allocated zp[1]:58 [ memset::c#4 ]
|
||||
Allocated zp[2]:59 [ memset::num#2 ]
|
||||
Allocated zp[2]:61 [ sgn_u16::return#4 ]
|
||||
Allocated zp[1]:63 [ bitmap_init::$7 ]
|
||||
Allocated zp[2]:64 [ next#6 next#11 next#0 ]
|
||||
Allocated zp[2]:66 [ memset::str#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:36 [ bitmap_init::$4 ] has ALU potential.
|
||||
Equivalence Class zp[1]:45 [ bitmap_init::$4 ] has ALU potential.
|
||||
Statement [0] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -2043,7 +2043,7 @@ Statement [3] *VICII_MEMORY = (char)(unsigned int)SCREEN&$3fff/$40|(unsigned int
|
|||
Statement [8] bitmap_line::x2#0 = next#6 [ next#6 bitmap_line::x2#0 ] ( [ next#6 bitmap_line::x2#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [11] if(next#0!=$140) goto main::@5 [ next#0 ] ( [ next#0 ] { } ) always clobbers reg byte a
|
||||
Statement [31] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:4 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:44 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [41] abs_u16::w#0 = bitmap_line::x2#0 [ bitmap_line::x2#0 abs_u16::w#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#6 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [43] abs_u16::return#0 = abs_u16::return#4 [ bitmap_line::x2#0 abs_u16::return#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#6 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [44] bitmap_line::dx#0 = abs_u16::return#0 [ bitmap_line::x2#0 bitmap_line::dx#0 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 ] { { next#6 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
|
@ -2075,12 +2075,12 @@ Statement [83] bitmap_line::y#2 = bitmap_line::y#15 + bitmap_line::sy#0 [ bitmap
|
|||
Statement [84] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#2 bitmap_line::e1#2 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [86] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( bitmap_line:9 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [90] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:6::memset:37 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:6::memset:39 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:21 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:58 [ memset::c#4 ]
|
||||
Statement [91] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:6::memset:37 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:6::memset:39 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
||||
Statement [92] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:6::memset:37 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:6::memset:39 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [94] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:6::memset:37 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:6::memset:39 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [96] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:6::memset:37 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:6::memset:39 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:21 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:58 [ memset::c#4 ]
|
||||
Statement [102] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( bitmap_line:9::abs_u16:42 [ next#6 bitmap_line::x2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 bitmap_line::x2#0 next#6 } { abs_u16::return#0 = abs_u16::return#4 } } bitmap_line:9::abs_u16:45 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { next#6 = bitmap_line::x2#0 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [113] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:9::bitmap_plot:62 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:9::bitmap_plot:73 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:9::bitmap_plot:79 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:9::bitmap_plot:88 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [114] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:9::bitmap_plot:62 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:9::bitmap_plot:73 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:9::bitmap_plot:79 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:9::bitmap_plot:88 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
|
@ -2134,107 +2134,107 @@ Statement [113] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bi
|
|||
Statement [114] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:9::bitmap_plot:62 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:9::bitmap_plot:73 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:9::bitmap_plot:79 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:9::bitmap_plot:88 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [115] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:9::bitmap_plot:62 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:9::bitmap_plot:73 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:9::bitmap_plot:79 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:9::bitmap_plot:88 [ next#6 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a
|
||||
Statement [117] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:9::bitmap_plot:62 [ next#6 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:9::bitmap_plot:73 [ next#6 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:9::bitmap_plot:79 [ next#6 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { next#6 = bitmap_line::x2#0 } { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:9::bitmap_plot:88 [ next#6 ] { { next#6 = bitmap_line::x2#0 } } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ next#6 next#11 next#0 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:15 ,
|
||||
Potential registers zp[2]:17 [ memset::num#2 ] : zp[2]:17 ,
|
||||
Potential registers zp[2]:19 [ memset::str#3 ] : zp[2]:19 ,
|
||||
Potential registers zp[1]:21 [ memset::c#4 ] : zp[1]:21 , reg byte x ,
|
||||
Potential registers zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:22 ,
|
||||
Potential registers zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] : zp[2]:24 ,
|
||||
Potential registers zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] : zp[2]:26 ,
|
||||
Potential registers zp[2]:28 [ sgn_u16::return#4 ] : zp[2]:28 ,
|
||||
Potential registers zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:31 ,
|
||||
Potential registers zp[2]:33 [ bitmap_line::x2#0 ] : zp[2]:33 ,
|
||||
Potential registers zp[1]:35 [ bitmap_init::$7 ] : zp[1]:35 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:36 [ bitmap_init::$4 ] : zp[1]:36 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:37 [ bitmap_init::$5 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:38 [ bitmap_init::$6 ] : zp[1]:38 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:39 [ abs_u16::return#0 ] : zp[2]:39 ,
|
||||
Potential registers zp[2]:41 [ bitmap_line::dx#0 ] : zp[2]:41 ,
|
||||
Potential registers zp[2]:43 [ abs_u16::return#1 ] : zp[2]:43 ,
|
||||
Potential registers zp[2]:45 [ bitmap_line::dy#0 ] : zp[2]:45 ,
|
||||
Potential registers zp[2]:47 [ sgn_u16::return#0 ] : zp[2]:47 ,
|
||||
Potential registers zp[2]:49 [ bitmap_line::sx#0 ] : zp[2]:49 ,
|
||||
Potential registers zp[2]:51 [ sgn_u16::return#1 ] : zp[2]:51 ,
|
||||
Potential registers zp[2]:53 [ bitmap_line::sy#0 ] : zp[2]:53 ,
|
||||
Potential registers zp[2]:55 [ memset::end#0 ] : zp[2]:55 ,
|
||||
Potential registers zp[1]:57 [ abs_u16::$0 ] : zp[1]:57 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:58 [ abs_u16::$1 ] : zp[1]:58 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:59 [ sgn_u16::$0 ] : zp[1]:59 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:60 [ sgn_u16::$1 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:61 [ bitmap_plot::plotter#0 ] : zp[2]:61 ,
|
||||
Potential registers zp[2]:63 [ bitmap_plot::$1 ] : zp[2]:63 ,
|
||||
Potential registers zp[2]:65 [ bitmap_plot::plotter#1 ] : zp[2]:65 ,
|
||||
Potential registers zp[1]:67 [ bitmap_plot::$2 ] : zp[1]:67 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:64 [ next#6 next#11 next#0 ] : zp[2]:64 ,
|
||||
Potential registers zp[1]:42 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:43 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:44 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:44 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:38 ,
|
||||
Potential registers zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:14 ,
|
||||
Potential registers zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:59 [ memset::num#2 ] : zp[2]:59 ,
|
||||
Potential registers zp[2]:66 [ memset::str#3 ] : zp[2]:66 ,
|
||||
Potential registers zp[1]:58 [ memset::c#4 ] : zp[1]:58 , reg byte x ,
|
||||
Potential registers zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:20 ,
|
||||
Potential registers zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] : zp[2]:22 ,
|
||||
Potential registers zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:61 [ sgn_u16::return#4 ] : zp[2]:61 ,
|
||||
Potential registers zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:40 [ bitmap_line::x2#0 ] : zp[2]:40 ,
|
||||
Potential registers zp[1]:63 [ bitmap_init::$7 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:45 [ bitmap_init::$4 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:46 [ bitmap_init::$5 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:47 [ bitmap_init::$6 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:48 [ abs_u16::return#0 ] : zp[2]:48 ,
|
||||
Potential registers zp[2]:32 [ bitmap_line::dx#0 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:50 [ abs_u16::return#1 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:30 [ bitmap_line::dy#0 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:52 [ sgn_u16::return#0 ] : zp[2]:52 ,
|
||||
Potential registers zp[2]:36 [ bitmap_line::sx#0 ] : zp[2]:36 ,
|
||||
Potential registers zp[2]:54 [ sgn_u16::return#1 ] : zp[2]:54 ,
|
||||
Potential registers zp[2]:34 [ bitmap_line::sy#0 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:56 [ memset::end#0 ] : zp[2]:56 ,
|
||||
Potential registers zp[1]:24 [ abs_u16::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ abs_u16::$1 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:26 [ sgn_u16::$0 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:27 [ sgn_u16::$1 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:18 [ bitmap_plot::plotter#0 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:3 [ bitmap_plot::$1 ] : zp[2]:3 ,
|
||||
Potential registers zp[2]:6 [ bitmap_plot::plotter#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:5 [ bitmap_plot::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:63 [ bitmap_plot::$1 ] 200,002: zp[1]:67 [ bitmap_plot::$2 ] 150,001.5: zp[2]:65 [ bitmap_plot::plotter#1 ] 75,129.25: zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,036.46: zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 55,005.5: zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 868.77: zp[2]:45 [ bitmap_line::dy#0 ] 800.18: zp[2]:41 [ bitmap_line::dx#0 ] 773.19: zp[2]:53 [ bitmap_line::sy#0 ] 693.21: zp[2]:49 [ bitmap_line::sx#0 ] 340.47: zp[2]:33 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,531: zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 2,002: zp[1]:57 [ abs_u16::$0 ] 2,002: zp[1]:58 [ abs_u16::$1 ] 202: zp[2]:39 [ abs_u16::return#0 ] 202: zp[2]:43 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:59 [ sgn_u16::$0 ] 2,002: zp[1]:60 [ sgn_u16::$1 ] 1,304: zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] 202: zp[2]:47 [ sgn_u16::return#0 ] 202: zp[2]:51 [ sgn_u16::return#1 ] 50.5: zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Uplift Scope [memset] 3,572.33: zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:55 [ memset::end#0 ] 125.12: zp[1]:21 [ memset::c#4 ] 101: zp[2]:17 [ memset::num#2 ] 0: zp[2]:19 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 366.12: zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:5 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:36 [ bitmap_init::$4 ] 202: zp[1]:37 [ bitmap_init::$5 ] 202: zp[1]:38 [ bitmap_init::$6 ] 50.5: zp[1]:35 [ bitmap_init::$7 ]
|
||||
Uplift Scope [] 44: zp[2]:2 [ next#6 next#11 next#0 ]
|
||||
Uplift Scope [bitmap_plot] 260,311: zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:3 [ bitmap_plot::$1 ] 200,002: zp[1]:5 [ bitmap_plot::$2 ] 150,001.5: zp[2]:6 [ bitmap_plot::plotter#1 ] 75,129.25: zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,036.46: zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] 55,005.5: zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 868.77: zp[2]:30 [ bitmap_line::dy#0 ] 800.18: zp[2]:32 [ bitmap_line::dx#0 ] 773.19: zp[2]:34 [ bitmap_line::sy#0 ] 693.21: zp[2]:36 [ bitmap_line::sx#0 ] 340.47: zp[2]:40 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,531: zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] 2,002: zp[1]:24 [ abs_u16::$0 ] 2,002: zp[1]:25 [ abs_u16::$1 ] 202: zp[2]:48 [ abs_u16::return#0 ] 202: zp[2]:50 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:26 [ sgn_u16::$0 ] 2,002: zp[1]:27 [ sgn_u16::$1 ] 1,304: zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] 202: zp[2]:52 [ sgn_u16::return#0 ] 202: zp[2]:54 [ sgn_u16::return#1 ] 50.5: zp[2]:61 [ sgn_u16::return#4 ]
|
||||
Uplift Scope [memset] 3,572.33: zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:56 [ memset::end#0 ] 125.12: zp[1]:58 [ memset::c#4 ] 101: zp[2]:59 [ memset::num#2 ] 0: zp[2]:66 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 366.12: zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:42 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:43 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:44 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:45 [ bitmap_init::$4 ] 202: zp[1]:46 [ bitmap_init::$5 ] 202: zp[1]:47 [ bitmap_init::$6 ] 50.5: zp[1]:63 [ bitmap_init::$7 ]
|
||||
Uplift Scope [] 44: zp[2]:64 [ next#6 next#11 next#0 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [bitmap_clear]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [bitmap_plot] best 36602 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:63 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:65 [ bitmap_plot::plotter#1 ] zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:61 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 36602 combination zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:45 [ bitmap_line::dy#0 ] zp[2]:41 [ bitmap_line::dx#0 ] zp[2]:53 [ bitmap_line::sy#0 ] zp[2]:49 [ bitmap_line::sx#0 ] zp[2]:33 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36592 combination zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:39 [ abs_u16::return#0 ] zp[2]:43 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36582 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:47 [ sgn_u16::return#0 ] zp[2]:51 [ sgn_u16::return#1 ] zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36566 combination zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:55 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:17 [ memset::num#2 ] zp[2]:19 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36116 combination zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:37 [ bitmap_init::$5 ] zp[1]:38 [ bitmap_init::$6 ] zp[1]:35 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_plot] best 36602 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:3 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:6 [ bitmap_plot::plotter#1 ] zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 36602 combination zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:30 [ bitmap_line::dy#0 ] zp[2]:32 [ bitmap_line::dx#0 ] zp[2]:34 [ bitmap_line::sy#0 ] zp[2]:36 [ bitmap_line::sx#0 ] zp[2]:40 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 36592 combination zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:48 [ abs_u16::return#0 ] zp[2]:50 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 36582 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] zp[2]:52 [ sgn_u16::return#0 ] zp[2]:54 [ sgn_u16::return#1 ] zp[2]:61 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 36566 combination zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:56 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:59 [ memset::num#2 ] zp[2]:66 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 36116 combination zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:46 [ bitmap_init::$5 ] zp[1]:47 [ bitmap_init::$6 ] zp[1]:63 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [] best 36116 combination zp[2]:2 [ next#6 next#11 next#0 ]
|
||||
Uplifting [] best 36116 combination zp[2]:64 [ next#6 next#11 next#0 ]
|
||||
Uplifting [MOS6526_CIA] best 36116 combination
|
||||
Uplifting [MOS6569_VICII] best 36116 combination
|
||||
Uplifting [MOS6581_SID] best 36116 combination
|
||||
Uplifting [bitmap_clear] best 36116 combination
|
||||
Uplifting [main] best 36116 combination
|
||||
Attempting to uplift remaining variables inzp[1]:37 [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:46 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 36056 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:38 [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:47 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 35996 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:35 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 35996 combination zp[1]:35 [ bitmap_init::$7 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 3
|
||||
Coalescing zero page register [ zp[2]:2 [ next#6 next#11 next#0 ] ] with [ zp[2]:33 [ bitmap_line::x2#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:17 [ memset::num#2 ] ] with [ zp[2]:55 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:19 [ memset::str#3 ] ] with [ zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] ] with [ zp[2]:39 [ abs_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 ] ] with [ zp[2]:43 [ abs_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ sgn_u16::return#4 ] ] with [ zp[2]:47 [ sgn_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:51 [ sgn_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:61 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:65 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:45 [ bitmap_line::dy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:53 [ bitmap_line::sy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:2 [ next#6 next#11 next#0 bitmap_line::x2#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:17 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ]
|
||||
Coalescing zero page register [ zp[2]:19 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ]
|
||||
Coalescing zero page register [ zp[2]:61 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 ] ]
|
||||
Allocated (was zp[2]:7) zp[2]:2 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 next#6 next#11 next#0 bitmap_line::x2#0 ]
|
||||
Allocated (was zp[2]:13) zp[2]:4 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated (was zp[2]:15) zp[2]:6 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated (was zp[2]:17) zp[2]:8 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated (was zp[2]:19) zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated (was zp[2]:24) zp[2]:12 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
Allocated (was zp[2]:28) zp[2]:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
Allocated (was zp[1]:35) zp[1]:16 [ bitmap_init::$7 ]
|
||||
Allocated (was zp[2]:41) zp[2]:17 [ bitmap_line::dx#0 ]
|
||||
Allocated (was zp[2]:49) zp[2]:19 [ bitmap_line::sx#0 ]
|
||||
Allocated (was zp[2]:61) zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated (was zp[2]:63) zp[2]:23 [ bitmap_plot::$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:63 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 35996 combination zp[1]:63 [ bitmap_init::$7 ]
|
||||
Coalescing zero page register [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 3
|
||||
Coalescing zero page register [ zp[2]:64 [ next#6 next#11 next#0 ] ] with [ zp[2]:40 [ bitmap_line::x2#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:59 [ memset::num#2 ] ] with [ zp[2]:56 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:66 [ memset::str#3 ] ] with [ zp[2]:20 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 ] ] with [ zp[2]:48 [ abs_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 ] ] with [ zp[2]:50 [ abs_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:61 [ sgn_u16::return#4 ] ] with [ zp[2]:52 [ sgn_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:61 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:54 [ sgn_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:6 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:22 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:30 [ bitmap_line::dy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:61 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:34 [ bitmap_line::sy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ] with [ zp[2]:64 [ next#6 next#11 next#0 bitmap_line::x2#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:59 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ]
|
||||
Coalescing zero page register [ zp[2]:66 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ] ]
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 ] ]
|
||||
Allocated (was zp[2]:18) zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
Allocated (was zp[2]:3) zp[2]:4 [ bitmap_plot::$1 ]
|
||||
Allocated (was zp[2]:66) zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated (was zp[2]:12) zp[2]:8 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated (was zp[2]:59) zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated (was zp[2]:16) zp[2]:12 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated (was zp[2]:22) zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
Allocated (was zp[2]:61) zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
Allocated (was zp[2]:32) zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
Allocated (was zp[2]:38) zp[2]:20 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 next#6 next#11 next#0 bitmap_line::x2#0 ]
|
||||
Allocated (was zp[2]:36) zp[2]:22 [ bitmap_line::sx#0 ]
|
||||
Allocated (was zp[1]:63) zp[1]:24 [ bitmap_init::$7 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -2277,7 +2277,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.label VICII_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
.label next = $14
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
|
@ -2362,8 +2362,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $10
|
||||
.label yoffs = 2
|
||||
.label __7 = $18
|
||||
.label yoffs = $14
|
||||
// [15] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
__b1_from_bitmap_init:
|
||||
// [15] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -2521,20 +2521,20 @@ bitmap_clear: {
|
|||
}
|
||||
// bitmap_line
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp(2) unsigned int x2, unsigned int y2)
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($14) unsigned int x2, unsigned int y2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $11
|
||||
.label dy = $c
|
||||
.label sx = $13
|
||||
.label sy = $e
|
||||
.label e1 = 6
|
||||
.label e = 8
|
||||
.label y = 4
|
||||
.label x = $a
|
||||
.label x2 = 2
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $16
|
||||
.label sy = $10
|
||||
.label e1 = $c
|
||||
.label e = $a
|
||||
.label y = 8
|
||||
.label x = 6
|
||||
.label x2 = $14
|
||||
// [41] abs_u16::w#0 = bitmap_line::x2#0 -- vwuz1=vwuz2
|
||||
lda.z x2
|
||||
sta.z abs_u16.w
|
||||
|
@ -2874,12 +2874,12 @@ bitmap_line: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp(8) unsigned int num)
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = $a
|
||||
.label num = 8
|
||||
.label str = $a
|
||||
.label end = $a
|
||||
.label dst = 6
|
||||
.label num = $a
|
||||
.label str = 6
|
||||
// [90] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -2932,10 +2932,10 @@ memset: {
|
|||
}
|
||||
// abs_u16
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($c) unsigned int abs_u16(__zp($c) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// [99] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [100] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
|
@ -2967,10 +2967,10 @@ abs_u16: {
|
|||
// sgn_u16
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($e) unsigned int sgn_u16(__zp($15) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $e
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// [106] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [107] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
|
@ -3006,11 +3006,11 @@ sgn_u16: {
|
|||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp($a) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $17
|
||||
.label plotter = $15
|
||||
.label x = $a
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// [113] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
|
@ -3226,13 +3226,13 @@ unsigned int abs_u16(unsigned int w)
|
|||
char abs_u16::$0 // reg byte a 2002.0
|
||||
char abs_u16::$1 // reg byte a 2002.0
|
||||
unsigned int abs_u16::return
|
||||
unsigned int abs_u16::return#0 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:12 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:12 551.0
|
||||
unsigned int abs_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:14 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:14 551.0
|
||||
unsigned int abs_u16::w
|
||||
unsigned int abs_u16::w#0 // w zp[2]:12 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:12 776.0
|
||||
unsigned int abs_u16::w#0 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:14 776.0
|
||||
void bitmap_clear(char bgcol , char fgcol)
|
||||
char bitmap_clear::bgcol
|
||||
char bitmap_clear::col
|
||||
|
@ -3243,7 +3243,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 202.0
|
||||
char bitmap_init::$5 // reg byte a 202.0
|
||||
char bitmap_init::$6 // reg byte a 202.0
|
||||
char bitmap_init::$7 // zp[1]:16 50.5
|
||||
char bitmap_init::$7 // zp[1]:24 50.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 101.0
|
||||
char bitmap_init::bits#3 // reg byte a 151.5
|
||||
|
@ -3257,63 +3257,63 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 151.5
|
||||
char bitmap_init::y#2 // reg byte x 50.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:2 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:2 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:2 101.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:20 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:20 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:20 101.0
|
||||
void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2)
|
||||
unsigned int bitmap_line::dx
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:17 800.1842105263158
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:18 800.1842105263158
|
||||
unsigned int bitmap_line::dy
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:12 868.7714285714285
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:14 868.7714285714285
|
||||
unsigned int bitmap_line::e
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:8 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:8 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:8 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:8 15001.5
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:10 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:10 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:10 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:10 15001.5
|
||||
unsigned int bitmap_line::e1
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:6 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:6 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:6 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:6 15001.5
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:12 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:12 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:12 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:12 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:12 15001.5
|
||||
unsigned int bitmap_line::sx
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:19 693.2068965517242
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:22 693.2068965517242
|
||||
unsigned int bitmap_line::sy
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:14 773.1923076923076
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076
|
||||
unsigned int bitmap_line::x
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:10 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:10 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:10 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:10 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:10 7500.75
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:6 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:6 7500.75
|
||||
unsigned int bitmap_line::x1
|
||||
__constant unsigned int bitmap_line::x1#0 = 0 // x1
|
||||
unsigned int bitmap_line::x2
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:2 340.4666666666667
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:20 340.4666666666667
|
||||
unsigned int bitmap_line::y
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:4 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:4 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:4 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:4 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:4 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:4 10001.0
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:8 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:8 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y1
|
||||
__constant unsigned int bitmap_line::y1#0 = 0 // y1
|
||||
unsigned int bitmap_line::y2
|
||||
__constant unsigned int bitmap_line::y2#0 = $64 // y2
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:23 200002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 200002.0
|
||||
char bitmap_plot::$2 // reg byte x 200002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:21 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:21 150001.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:10 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:10 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:10 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:10 55026.25
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:6 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:6 55026.25
|
||||
char bitmap_plot::y
|
||||
char bitmap_plot::y#1 // reg byte x 20002.0
|
||||
char bitmap_plot::y#2 // reg byte x 202.0
|
||||
|
@ -3328,55 +3328,55 @@ void * memset(void *str , char c , unsigned int num)
|
|||
char memset::c
|
||||
char memset::c#4 // reg byte x 125.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:10 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:10 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:10 202.0
|
||||
char *memset::dst#1 // dst zp[2]:6 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:6 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:6 202.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:8 183.66666666666669
|
||||
char *memset::end#0 // end zp[2]:10 183.66666666666669
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:8 101.0
|
||||
unsigned int memset::num#2 // num zp[2]:10 101.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:10
|
||||
void *memset::str#3 // str zp[2]:6
|
||||
unsigned int next
|
||||
unsigned int next#0 // next zp[2]:2 11.0
|
||||
unsigned int next#11 // next zp[2]:2 22.0
|
||||
unsigned int next#6 // next zp[2]:2 11.0
|
||||
unsigned int next#0 // next zp[2]:20 11.0
|
||||
unsigned int next#11 // next zp[2]:20 22.0
|
||||
unsigned int next#6 // next zp[2]:20 11.0
|
||||
unsigned int sgn_u16(unsigned int w)
|
||||
char sgn_u16::$0 // reg byte a 2002.0
|
||||
char sgn_u16::$1 // reg byte a 2002.0
|
||||
unsigned int sgn_u16::return
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:14 50.5
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:16 50.5
|
||||
unsigned int sgn_u16::w
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:21 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:21 1102.0
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:2 1102.0
|
||||
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:2 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 next#6 next#11 next#0 bitmap_line::x2#0 ]
|
||||
zp[2]:4 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:6 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:8 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
zp[2]:20 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 next#6 next#11 next#0 bitmap_line::x2#0 ]
|
||||
zp[2]:8 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:12 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:12 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[1]:16 [ bitmap_init::$7 ]
|
||||
zp[1]:24 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:17 [ bitmap_line::dx#0 ]
|
||||
zp[2]:19 [ bitmap_line::sx#0 ]
|
||||
zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
zp[2]:22 [ bitmap_line::sx#0 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:23 [ bitmap_plot::$1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
||||
|
||||
|
@ -3423,7 +3423,7 @@ Score: 29778
|
|||
.label VICII_MEMORY = $d018
|
||||
.label SCREEN = $400
|
||||
.label BITMAP = $2000
|
||||
.label next = 2
|
||||
.label next = $14
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
|
@ -3496,8 +3496,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $10
|
||||
.label yoffs = 2
|
||||
.label __7 = $18
|
||||
.label yoffs = $14
|
||||
// [15] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
// [15] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
|
@ -3643,20 +3643,20 @@ bitmap_clear: {
|
|||
}
|
||||
// bitmap_line
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp(2) unsigned int x2, unsigned int y2)
|
||||
// void bitmap_line(unsigned int x1, unsigned int y1, __zp($14) unsigned int x2, unsigned int y2)
|
||||
bitmap_line: {
|
||||
.const x1 = 0
|
||||
.const y1 = 0
|
||||
.const y2 = $64
|
||||
.label dx = $11
|
||||
.label dy = $c
|
||||
.label sx = $13
|
||||
.label sy = $e
|
||||
.label e1 = 6
|
||||
.label e = 8
|
||||
.label y = 4
|
||||
.label x = $a
|
||||
.label x2 = 2
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $16
|
||||
.label sy = $10
|
||||
.label e1 = $c
|
||||
.label e = $a
|
||||
.label y = 8
|
||||
.label x = 6
|
||||
.label x2 = $14
|
||||
// unsigned int dx = abs_u16(x2-x1)
|
||||
// [41] abs_u16::w#0 = bitmap_line::x2#0 -- vwuz1=vwuz2
|
||||
lda.z x2
|
||||
|
@ -3975,12 +3975,12 @@ bitmap_line: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp(8) unsigned int num)
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = $a
|
||||
.label num = 8
|
||||
.label str = $a
|
||||
.label end = $a
|
||||
.label dst = 6
|
||||
.label num = $a
|
||||
.label str = 6
|
||||
// if(num>0)
|
||||
// [90] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
|
@ -4033,10 +4033,10 @@ memset: {
|
|||
}
|
||||
// abs_u16
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($c) unsigned int abs_u16(__zp($c) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// BYTE1(w)
|
||||
// [99] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
|
@ -4069,10 +4069,10 @@ abs_u16: {
|
|||
// sgn_u16
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($e) unsigned int sgn_u16(__zp($15) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $15
|
||||
.label return = $e
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// BYTE1(w)
|
||||
// [106] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
|
@ -4105,11 +4105,11 @@ sgn_u16: {
|
|||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp($a) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $17
|
||||
.label plotter = $15
|
||||
.label x = $a
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
// [113] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
|
|
|
@ -13,13 +13,13 @@ unsigned int abs_u16(unsigned int w)
|
|||
char abs_u16::$0 // reg byte a 2002.0
|
||||
char abs_u16::$1 // reg byte a 2002.0
|
||||
unsigned int abs_u16::return
|
||||
unsigned int abs_u16::return#0 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:12 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:12 551.0
|
||||
unsigned int abs_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:14 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:14 551.0
|
||||
unsigned int abs_u16::w
|
||||
unsigned int abs_u16::w#0 // w zp[2]:12 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:12 776.0
|
||||
unsigned int abs_u16::w#0 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:14 776.0
|
||||
void bitmap_clear(char bgcol , char fgcol)
|
||||
char bitmap_clear::bgcol
|
||||
char bitmap_clear::col
|
||||
|
@ -30,7 +30,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 202.0
|
||||
char bitmap_init::$5 // reg byte a 202.0
|
||||
char bitmap_init::$6 // reg byte a 202.0
|
||||
char bitmap_init::$7 // zp[1]:16 50.5
|
||||
char bitmap_init::$7 // zp[1]:24 50.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 101.0
|
||||
char bitmap_init::bits#3 // reg byte a 151.5
|
||||
|
@ -44,63 +44,63 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 151.5
|
||||
char bitmap_init::y#2 // reg byte x 50.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:2 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:2 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:2 101.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:20 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:20 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:20 101.0
|
||||
void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2)
|
||||
unsigned int bitmap_line::dx
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:17 800.1842105263158
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:18 800.1842105263158
|
||||
unsigned int bitmap_line::dy
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:12 868.7714285714285
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:14 868.7714285714285
|
||||
unsigned int bitmap_line::e
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:8 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:8 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:8 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:8 15001.5
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:10 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:10 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:10 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:10 15001.5
|
||||
unsigned int bitmap_line::e1
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:6 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:6 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:6 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:6 15001.5
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:12 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:12 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:12 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:12 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:12 15001.5
|
||||
unsigned int bitmap_line::sx
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:19 693.2068965517242
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:22 693.2068965517242
|
||||
unsigned int bitmap_line::sy
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:14 773.1923076923076
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076
|
||||
unsigned int bitmap_line::x
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:10 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:10 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:10 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:10 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:10 7500.75
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0
|
||||
unsigned int bitmap_line::x#13 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#15 // x zp[2]:6 5714.857142857143
|
||||
unsigned int bitmap_line::x#6 // x zp[2]:6 20103.0
|
||||
unsigned int bitmap_line::x#7 // x zp[2]:6 7500.75
|
||||
unsigned int bitmap_line::x1
|
||||
__constant unsigned int bitmap_line::x1#0 = 0 // x1
|
||||
unsigned int bitmap_line::x2
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:2 340.4666666666667
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:20 340.4666666666667
|
||||
unsigned int bitmap_line::y
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:4 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:4 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:4 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:4 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:4 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:4 10001.0
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:8 4286.142857142857
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:8 5000.5
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y1
|
||||
__constant unsigned int bitmap_line::y1#0 = 0 // y1
|
||||
unsigned int bitmap_line::y2
|
||||
__constant unsigned int bitmap_line::y2#0 = $64 // y2
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:23 200002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 200002.0
|
||||
char bitmap_plot::$2 // reg byte x 200002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:21 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:21 150001.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:10 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:10 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:10 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:10 55026.25
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#2 // x zp[2]:6 101.0
|
||||
unsigned int bitmap_plot::x#3 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_plot::x#4 // x zp[2]:6 55026.25
|
||||
char bitmap_plot::y
|
||||
char bitmap_plot::y#1 // reg byte x 20002.0
|
||||
char bitmap_plot::y#2 // reg byte x 202.0
|
||||
|
@ -115,53 +115,53 @@ void * memset(void *str , char c , unsigned int num)
|
|||
char memset::c
|
||||
char memset::c#4 // reg byte x 125.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:10 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:10 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:10 202.0
|
||||
char *memset::dst#1 // dst zp[2]:6 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:6 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:6 202.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:8 183.66666666666669
|
||||
char *memset::end#0 // end zp[2]:10 183.66666666666669
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:8 101.0
|
||||
unsigned int memset::num#2 // num zp[2]:10 101.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:10
|
||||
void *memset::str#3 // str zp[2]:6
|
||||
unsigned int next
|
||||
unsigned int next#0 // next zp[2]:2 11.0
|
||||
unsigned int next#11 // next zp[2]:2 22.0
|
||||
unsigned int next#6 // next zp[2]:2 11.0
|
||||
unsigned int next#0 // next zp[2]:20 11.0
|
||||
unsigned int next#11 // next zp[2]:20 22.0
|
||||
unsigned int next#6 // next zp[2]:20 11.0
|
||||
unsigned int sgn_u16(unsigned int w)
|
||||
char sgn_u16::$0 // reg byte a 2002.0
|
||||
char sgn_u16::$1 // reg byte a 2002.0
|
||||
unsigned int sgn_u16::return
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:14 50.5
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:16 50.5
|
||||
unsigned int sgn_u16::w
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:21 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:21 1102.0
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:2 1102.0
|
||||
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:2 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 next#6 next#11 next#0 bitmap_line::x2#0 ]
|
||||
zp[2]:4 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:6 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:8 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
zp[2]:20 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 next#6 next#11 next#0 bitmap_line::x2#0 ]
|
||||
zp[2]:8 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:12 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:12 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[1]:16 [ bitmap_init::$7 ]
|
||||
zp[1]:24 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:17 [ bitmap_line::dx#0 ]
|
||||
zp[2]:19 [ bitmap_line::sx#0 ]
|
||||
zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
zp[2]:22 [ bitmap_line::sx#0 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
zp[2]:21 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:23 [ bitmap_plot::$1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
// Counts frames - updated by the IRQ
|
||||
.label frame_cnt = 8
|
||||
.label frame_cnt = $d
|
||||
.segment Code
|
||||
__start: {
|
||||
// volatile byte frame_cnt = 1
|
||||
|
@ -115,10 +115,10 @@ irq: {
|
|||
}
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label x = 2
|
||||
.label y = 4
|
||||
.label vx = 5
|
||||
.label vy = 7
|
||||
.label x = 6
|
||||
.label y = $c
|
||||
.label vx = $a
|
||||
.label vy = 9
|
||||
// bitmap_init(BITMAP, SCREEN)
|
||||
jsr bitmap_init
|
||||
// bitmap_clear(BLACK, WHITE)
|
||||
|
@ -199,8 +199,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = 9
|
||||
.label yoffs = $c
|
||||
.label __7 = 8
|
||||
.label yoffs = 4
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
|
@ -326,11 +326,11 @@ init_irq: {
|
|||
rts
|
||||
}
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(2) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $c
|
||||
.label plotter = $a
|
||||
.label x = 2
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
|
@ -362,12 +362,12 @@ bitmap_plot: {
|
|||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp($c) unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, __zp(4) unsigned int num)
|
||||
memset: {
|
||||
.label end = $c
|
||||
.label dst = $a
|
||||
.label num = $c
|
||||
.label str = $a
|
||||
.label end = 4
|
||||
.label dst = 2
|
||||
.label num = 4
|
||||
.label str = 2
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
|
|
|
@ -1444,32 +1444,32 @@ Complete equivalence classes
|
|||
[ bitmap_plot::plotter#1 ]
|
||||
[ bitmap_plot::$2 ]
|
||||
[ memset::end#0 ]
|
||||
Allocated zp[2]:2 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Allocated zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
Allocated zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Allocated zp[1]:8 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:9 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:10 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[2]:11 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[2]:13 [ memset::num#2 ]
|
||||
Allocated zp[2]:15 [ memset::str#3 ]
|
||||
Allocated zp[1]:17 [ memset::c#4 ]
|
||||
Allocated zp[2]:18 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[1]:20 [ frame_cnt ]
|
||||
Allocated zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Allocated zp[1]:23 [ bitmap_plot::y#0 ]
|
||||
Allocated zp[1]:24 [ bitmap_init::$7 ]
|
||||
Allocated zp[1]:25 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:26 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:27 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:28 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:30 [ bitmap_plot::$1 ]
|
||||
Allocated zp[2]:32 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[1]:34 [ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:35 [ memset::end#0 ]
|
||||
Allocated zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:4 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[1]:6 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:7 [ bitmap_plot::y#0 ]
|
||||
Allocated zp[1]:8 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:9 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[1]:10 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:11 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:12 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:13 [ bitmap_plot::$1 ]
|
||||
Allocated zp[1]:15 [ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:16 [ memset::end#0 ]
|
||||
Allocated zp[2]:18 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[1]:20 [ memset::c#4 ]
|
||||
Allocated zp[2]:21 [ memset::num#2 ]
|
||||
Allocated zp[1]:23 [ bitmap_init::$7 ]
|
||||
Allocated zp[2]:24 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:26 [ bitmap_plot::x#0 ]
|
||||
Allocated zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Allocated zp[2]:29 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
Allocated zp[2]:31 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Allocated zp[1]:34 [ frame_cnt ]
|
||||
Allocated zp[2]:35 [ memset::str#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:25 [ bitmap_init::$4 ] has ALU potential.
|
||||
Equivalence Class zp[1]:10 [ bitmap_init::$4 ] has ALU potential.
|
||||
Statement [1] frame_cnt = 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [5] *BG_COLOR = WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
|
@ -1479,8 +1479,8 @@ Statement [10] return [ ] ( [ ] { } ) always clobbers reg byte a reg byte x r
|
|||
Statement [15] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [17] *D018 = main::toD0181_return#0 [ frame_cnt ] ( main:3 [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [20] bitmap_plot::x#0 = main::x#2 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] ( main:3 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 ] { { bitmap_plot::x#0 = main::x#2 } { bitmap_plot::y#0 = main::y#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Statement [23] main::x#1 = main::x#2 + main::vx#2 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] ( main:3 [ frame_cnt main::y#2 main::vx#2 main::vy#2 main::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement [24] main::y#1 = main::y#2 + main::vy#2 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
Statement [25] if(main::x#1==$13f) goto main::@5 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] ( main:3 [ frame_cnt main::vx#2 main::vy#2 main::x#1 main::y#1 ] { } ) always clobbers reg byte a
|
||||
|
@ -1488,10 +1488,10 @@ Statement [26] if(main::x#1!=0) goto main::@3 [ frame_cnt main::vx#2 main::vy#2
|
|||
Statement [27] main::vx#1 = - main::vx#2 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] ( main:3 [ frame_cnt main::vy#2 main::x#1 main::y#1 main::vx#1 ] { } ) always clobbers reg byte a
|
||||
Statement [31] main::vy#1 = - main::vy#2 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] ( main:3 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#1 ] { } ) always clobbers reg byte a
|
||||
Statement [33] plots_per_frame[frame_cnt] = ++ plots_per_frame[frame_cnt] [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] ( main:3 [ frame_cnt main::x#1 main::y#1 main::vx#6 main::vy#8 ] { } ) always clobbers reg byte x
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Statement [51] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( main:3::bitmap_init:12 [ frame_cnt bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [62] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [63] *PROCPORT = PROCPORT_RAM_IO [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [64] *((char *)CIA1+OFFSET_STRUCT_MOS6526_CIA_INTERRUPT) = CIA_INTERRUPT_CLEAR [ ] ( main:3::init_irq:18 [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
|
@ -1503,15 +1503,15 @@ Statement [71] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bit
|
|||
Statement [72] bitmap_plot::$1 = bitmap_plot::x#0 & $fff8 [ bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( main:3::bitmap_plot:22 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::x#0 = main::x#2 } { bitmap_plot::y#0 = main::y#2 } } ) always clobbers reg byte a
|
||||
Statement [73] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#0 bitmap_plot::plotter#1 ] ( main:3::bitmap_plot:22 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 bitmap_plot::x#0 bitmap_plot::plotter#1 ] { { bitmap_plot::x#0 = main::x#2 } { bitmap_plot::y#0 = main::y#2 } } ) always clobbers reg byte a
|
||||
Statement [75] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( main:3::bitmap_plot:22 [ frame_cnt main::x#2 main::y#2 main::vx#2 main::vy#2 ] { { bitmap_plot::x#0 = main::x#2 } { bitmap_plot::y#0 = main::y#2 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Statement [78] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:17 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ memset::c#4 ]
|
||||
Statement [79] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
||||
Statement [80] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [82] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [84] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:17 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:20 [ memset::c#4 ]
|
||||
Statement [1] frame_cnt = 1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [5] *BG_COLOR = WHITE [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
Statement [6] if(0==frame_cnt) goto irq::@1 [ frame_cnt ] ( [ frame_cnt ] { } ) always clobbers reg byte a
|
||||
|
@ -1548,37 +1548,37 @@ Statement [79] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::s
|
|||
Statement [80] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [82] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [84] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( main:3::bitmap_clear:14::memset:57 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } main:3::bitmap_clear:14::memset:59 [ frame_cnt memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ main::x#2 main::x#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ main::y#2 main::y#1 ] : zp[1]:4 ,
|
||||
Potential registers zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] : zp[1]:7 ,
|
||||
Potential registers zp[1]:8 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:11 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:13 [ memset::num#2 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ memset::str#3 ] : zp[2]:15 ,
|
||||
Potential registers zp[1]:17 [ memset::c#4 ] : zp[1]:17 , reg byte x ,
|
||||
Potential registers zp[2]:18 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:18 ,
|
||||
Potential registers zp[1]:20 [ frame_cnt ] : zp[1]:20 ,
|
||||
Potential registers zp[2]:21 [ bitmap_plot::x#0 ] : zp[2]:21 ,
|
||||
Potential registers zp[1]:23 [ bitmap_plot::y#0 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:24 [ bitmap_init::$7 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ bitmap_init::$4 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:26 [ bitmap_init::$5 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:27 [ bitmap_init::$6 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:28 [ bitmap_plot::plotter#0 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:30 [ bitmap_plot::$1 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:32 [ bitmap_plot::plotter#1 ] : zp[2]:32 ,
|
||||
Potential registers zp[1]:34 [ bitmap_plot::$2 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:35 [ memset::end#0 ] : zp[2]:35 ,
|
||||
Potential registers zp[2]:31 [ main::x#2 main::x#1 ] : zp[2]:31 ,
|
||||
Potential registers zp[1]:33 [ main::y#2 main::y#1 ] : zp[1]:33 ,
|
||||
Potential registers zp[2]:29 [ main::vx#2 main::vx#6 main::vx#1 ] : zp[2]:29 ,
|
||||
Potential registers zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ] : zp[1]:28 ,
|
||||
Potential registers zp[1]:6 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:9 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:4 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:21 [ memset::num#2 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:35 [ memset::str#3 ] : zp[2]:35 ,
|
||||
Potential registers zp[1]:20 [ memset::c#4 ] : zp[1]:20 , reg byte x ,
|
||||
Potential registers zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:34 [ frame_cnt ] : zp[1]:34 ,
|
||||
Potential registers zp[2]:26 [ bitmap_plot::x#0 ] : zp[2]:26 ,
|
||||
Potential registers zp[1]:7 [ bitmap_plot::y#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:23 [ bitmap_init::$7 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ bitmap_init::$4 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:11 [ bitmap_init::$5 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:12 [ bitmap_init::$6 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:24 [ bitmap_plot::plotter#0 ] : zp[2]:24 ,
|
||||
Potential registers zp[2]:13 [ bitmap_plot::$1 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:18 [ bitmap_plot::plotter#1 ] : zp[2]:18 ,
|
||||
Potential registers zp[1]:15 [ bitmap_plot::$2 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:16 [ memset::end#0 ] : zp[2]:16 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [memset] 35,672.33: zp[2]:18 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:35 [ memset::end#0 ] 1,250.12: zp[1]:17 [ memset::c#4 ] 1,001: zp[2]:13 [ memset::num#2 ] 0: zp[2]:15 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 3,628.62: zp[2]:11 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:8 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:9 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:10 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:25 [ bitmap_init::$4 ] 2,002: zp[1]:26 [ bitmap_init::$5 ] 2,002: zp[1]:27 [ bitmap_init::$6 ] 500.5: zp[1]:24 [ bitmap_init::$7 ]
|
||||
Uplift Scope [bitmap_plot] 2,103: zp[1]:23 [ bitmap_plot::y#0 ] 2,002: zp[2]:30 [ bitmap_plot::$1 ] 2,002: zp[1]:34 [ bitmap_plot::$2 ] 1,501.5: zp[2]:32 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:28 [ bitmap_plot::plotter#0 ] 420.6: zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Uplift Scope [main] 387.17: zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] 303: zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] 112.48: zp[2]:2 [ main::x#2 main::x#1 ] 101: zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope [] 7.78: zp[1]:20 [ frame_cnt ]
|
||||
Uplift Scope [memset] 35,672.33: zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 1,833.67: zp[2]:16 [ memset::end#0 ] 1,250.12: zp[1]:20 [ memset::c#4 ] 1,001: zp[2]:21 [ memset::num#2 ] 0: zp[2]:35 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 3,628.62: zp[2]:4 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 3,169.83: zp[1]:6 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 2,002: zp[1]:8 [ bitmap_init::x#2 bitmap_init::x#1 ] 2,002: zp[1]:9 [ bitmap_init::y#2 bitmap_init::y#1 ] 2,002: zp[1]:10 [ bitmap_init::$4 ] 2,002: zp[1]:11 [ bitmap_init::$5 ] 2,002: zp[1]:12 [ bitmap_init::$6 ] 500.5: zp[1]:23 [ bitmap_init::$7 ]
|
||||
Uplift Scope [bitmap_plot] 2,103: zp[1]:7 [ bitmap_plot::y#0 ] 2,002: zp[2]:13 [ bitmap_plot::$1 ] 2,002: zp[1]:15 [ bitmap_plot::$2 ] 1,501.5: zp[2]:18 [ bitmap_plot::plotter#1 ] 500.5: zp[2]:24 [ bitmap_plot::plotter#0 ] 420.6: zp[2]:26 [ bitmap_plot::x#0 ]
|
||||
Uplift Scope [main] 387.17: zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ] 303: zp[2]:29 [ main::vx#2 main::vx#6 main::vx#1 ] 112.48: zp[2]:31 [ main::x#2 main::x#1 ] 101: zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope [] 7.78: zp[1]:34 [ frame_cnt ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
|
@ -1587,12 +1587,12 @@ Uplift Scope [init_irq]
|
|||
Uplift Scope [irq]
|
||||
Uplift Scope [__start]
|
||||
|
||||
Uplifting [memset] best 4870 combination zp[2]:18 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:35 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:13 [ memset::num#2 ] zp[2]:15 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 4420 combination zp[2]:11 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:26 [ bitmap_init::$5 ] zp[1]:27 [ bitmap_init::$6 ] zp[1]:24 [ bitmap_init::$7 ]
|
||||
Uplifting [memset] best 4870 combination zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:16 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:21 [ memset::num#2 ] zp[2]:35 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 4420 combination zp[2]:4 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:11 [ bitmap_init::$5 ] zp[1]:12 [ bitmap_init::$6 ] zp[1]:23 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [bitmap_plot] best 4381 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:30 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:32 [ bitmap_plot::plotter#1 ] zp[2]:28 [ bitmap_plot::plotter#0 ] zp[2]:21 [ bitmap_plot::x#0 ]
|
||||
Uplifting [main] best 4381 combination zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ] zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ] zp[2]:2 [ main::x#2 main::x#1 ] zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [] best 4381 combination zp[1]:20 [ frame_cnt ]
|
||||
Uplifting [bitmap_plot] best 4381 combination reg byte x [ bitmap_plot::y#0 ] zp[2]:13 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:18 [ bitmap_plot::plotter#1 ] zp[2]:24 [ bitmap_plot::plotter#0 ] zp[2]:26 [ bitmap_plot::x#0 ]
|
||||
Uplifting [main] best 4381 combination zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ] zp[2]:29 [ main::vx#2 main::vx#6 main::vx#1 ] zp[2]:31 [ main::x#2 main::x#1 ] zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Uplifting [] best 4381 combination zp[1]:34 [ frame_cnt ]
|
||||
Uplifting [MOS6526_CIA] best 4381 combination
|
||||
Uplifting [MOS6569_VICII] best 4381 combination
|
||||
Uplifting [MOS6581_SID] best 4381 combination
|
||||
|
@ -1600,29 +1600,33 @@ Uplifting [bitmap_clear] best 4381 combination
|
|||
Uplifting [init_irq] best 4381 combination
|
||||
Uplifting [irq] best 4381 combination
|
||||
Uplifting [__start] best 4381 combination
|
||||
Attempting to uplift remaining variables inzp[1]:26 [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:11 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 4321 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:27 [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:12 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 4261 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:24 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 4261 combination zp[1]:24 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Uplifting [main] best 4261 combination zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 4261 combination zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:20 [ frame_cnt ]
|
||||
Uplifting [] best 4261 combination zp[1]:20 [ frame_cnt ]
|
||||
Coalescing zero page register [ zp[2]:2 [ main::x#2 main::x#1 ] ] with [ zp[2]:21 [ bitmap_plot::x#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:13 [ memset::num#2 ] ] with [ zp[2]:35 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:15 [ memset::str#3 ] ] with [ zp[2]:18 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:32 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:13 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:11 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:28 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:15 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:30 [ bitmap_plot::$1 ] ] with [ zp[2]:13 [ memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Allocated (was zp[1]:20) zp[1]:8 [ frame_cnt ]
|
||||
Allocated (was zp[1]:24) zp[1]:9 [ bitmap_init::$7 ]
|
||||
Allocated (was zp[2]:28) zp[2]:10 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated (was zp[2]:30) zp[2]:12 [ bitmap_plot::$1 memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:23 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 4261 combination zp[1]:23 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Uplifting [main] best 4261 combination zp[1]:28 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 4261 combination zp[1]:33 [ main::y#2 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:34 [ frame_cnt ]
|
||||
Uplifting [] best 4261 combination zp[1]:34 [ frame_cnt ]
|
||||
Coalescing zero page register [ zp[2]:31 [ main::x#2 main::x#1 ] ] with [ zp[2]:26 [ bitmap_plot::x#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ memset::num#2 ] ] with [ zp[2]:16 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:35 [ memset::str#3 ] ] with [ zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:18 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:4 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:24 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:35 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:13 [ bitmap_plot::$1 ] ] with [ zp[2]:21 [ memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Allocated (was zp[2]:24) zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated (was zp[2]:13) zp[2]:4 [ bitmap_plot::$1 memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated (was zp[2]:31) zp[2]:6 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
Allocated (was zp[1]:23) zp[1]:8 [ bitmap_init::$7 ]
|
||||
Allocated (was zp[1]:28) zp[1]:9 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
Allocated (was zp[2]:29) zp[2]:10 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
Allocated (was zp[1]:33) zp[1]:12 [ main::y#2 main::y#1 ]
|
||||
Allocated (was zp[1]:34) zp[1]:13 [ frame_cnt ]
|
||||
Interrupt procedure irq clobbers AnzP
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
|
@ -1711,7 +1715,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
// Counts frames - updated by the IRQ
|
||||
.label frame_cnt = 8
|
||||
.label frame_cnt = $d
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -1774,10 +1778,10 @@ irq: {
|
|||
// main
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label x = 2
|
||||
.label y = 4
|
||||
.label vx = 5
|
||||
.label vy = 7
|
||||
.label x = 6
|
||||
.label y = $c
|
||||
.label vx = $a
|
||||
.label vy = 9
|
||||
// [12] call bitmap_init
|
||||
// [34] phi from main to bitmap_init [phi:main->bitmap_init]
|
||||
bitmap_init_from_main:
|
||||
|
@ -1929,8 +1933,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = 9
|
||||
.label yoffs = $c
|
||||
.label __7 = 8
|
||||
.label yoffs = 4
|
||||
// [35] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
__b1_from_bitmap_init:
|
||||
// [35] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -2130,11 +2134,11 @@ init_irq: {
|
|||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(2) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $c
|
||||
.label plotter = $a
|
||||
.label x = 2
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// [71] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
sta.z plotter+1
|
||||
|
@ -2170,12 +2174,12 @@ bitmap_plot: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp($c) unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, __zp(4) unsigned int num)
|
||||
memset: {
|
||||
.label end = $c
|
||||
.label dst = $a
|
||||
.label num = $c
|
||||
.label str = $a
|
||||
.label end = 4
|
||||
.label dst = 2
|
||||
.label num = 4
|
||||
.label str = 2
|
||||
// [78] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -2371,7 +2375,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 2002.0
|
||||
char bitmap_init::$5 // reg byte a 2002.0
|
||||
char bitmap_init::$6 // reg byte a 2002.0
|
||||
char bitmap_init::$7 // zp[1]:9 500.5
|
||||
char bitmap_init::$7 // zp[1]:8 500.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 1001.0
|
||||
char bitmap_init::bits#3 // reg byte a 1501.5
|
||||
|
@ -2385,24 +2389,24 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 1501.5
|
||||
char bitmap_init::y#2 // reg byte x 500.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:12 2002.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:12 625.625
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:12 1001.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:4 2002.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:4 625.625
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:4 1001.0
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:12 2002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 2002.0
|
||||
char bitmap_plot::$2 // reg byte x 2002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:10 500.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:10 1501.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 500.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 1501.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#0 // x zp[2]:2 420.59999999999997
|
||||
unsigned int bitmap_plot::x#0 // x zp[2]:6 420.59999999999997
|
||||
char bitmap_plot::y
|
||||
char bitmap_plot::y#0 // reg byte x 2103.0
|
||||
__constant const char bitmap_plot_bit[$100] = { fill( $100, 0) }
|
||||
__constant const char bitmap_plot_yhi[$100] = { fill( $100, 0) }
|
||||
__constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) }
|
||||
char *bitmap_screen
|
||||
__loadstore volatile char frame_cnt // zp[1]:8 7.777777777777779
|
||||
__loadstore volatile char frame_cnt // zp[1]:13 7.777777777777779
|
||||
void init_irq()
|
||||
__interrupt(hardware_clobber) void irq()
|
||||
void main()
|
||||
|
@ -2411,51 +2415,51 @@ char main::toD0181_return
|
|||
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)BITMAP/4&$f // toD0181_return
|
||||
char *main::toD0181_screen
|
||||
unsigned int main::vx
|
||||
unsigned int main::vx#1 // vx zp[2]:5 202.0
|
||||
unsigned int main::vx#2 // vx zp[2]:5 50.5
|
||||
unsigned int main::vx#6 // vx zp[2]:5 50.5
|
||||
unsigned int main::vx#1 // vx zp[2]:10 202.0
|
||||
unsigned int main::vx#2 // vx zp[2]:10 50.5
|
||||
unsigned int main::vx#6 // vx zp[2]:10 50.5
|
||||
char main::vy
|
||||
char main::vy#1 // vy zp[1]:7 202.0
|
||||
char main::vy#2 // vy zp[1]:7 33.666666666666664
|
||||
char main::vy#8 // vy zp[1]:7 151.5
|
||||
char main::vy#1 // vy zp[1]:9 202.0
|
||||
char main::vy#2 // vy zp[1]:9 33.666666666666664
|
||||
char main::vy#8 // vy zp[1]:9 151.5
|
||||
unsigned int main::x
|
||||
unsigned int main::x#1 // x zp[2]:2 36.72727272727273
|
||||
unsigned int main::x#2 // x zp[2]:2 75.75
|
||||
unsigned int main::x#1 // x zp[2]:6 36.72727272727273
|
||||
unsigned int main::x#2 // x zp[2]:6 75.75
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:4 40.4
|
||||
char main::y#2 // y zp[1]:4 60.599999999999994
|
||||
char main::y#1 // y zp[1]:12 40.4
|
||||
char main::y#2 // y zp[1]:12 60.599999999999994
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 1250.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:10 20002.0
|
||||
char *memset::dst#2 // dst zp[2]:10 13668.333333333332
|
||||
char *memset::dst#4 // dst zp[2]:10 2002.0
|
||||
char *memset::dst#1 // dst zp[2]:2 20002.0
|
||||
char *memset::dst#2 // dst zp[2]:2 13668.333333333332
|
||||
char *memset::dst#4 // dst zp[2]:2 2002.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:12 1833.6666666666665
|
||||
char *memset::end#0 // end zp[2]:4 1833.6666666666665
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:12 1001.0
|
||||
unsigned int memset::num#2 // num zp[2]:4 1001.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:10
|
||||
void *memset::str#3 // str zp[2]:2
|
||||
__constant char plots_per_frame[$100] = { fill( $100, 0) }
|
||||
|
||||
zp[2]:2 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
zp[2]:6 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
zp[1]:12 [ main::y#2 main::y#1 ]
|
||||
zp[2]:10 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
zp[1]:9 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[1]:8 [ frame_cnt ]
|
||||
zp[1]:13 [ frame_cnt ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
zp[1]:9 [ bitmap_init::$7 ]
|
||||
zp[1]:8 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:10 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:12 [ bitmap_plot::$1 memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
||||
|
||||
|
@ -2547,7 +2551,7 @@ Score: 3200
|
|||
.label BITMAP = $2000
|
||||
.label SCREEN = $400
|
||||
// Counts frames - updated by the IRQ
|
||||
.label frame_cnt = 8
|
||||
.label frame_cnt = $d
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -2604,10 +2608,10 @@ irq: {
|
|||
// main
|
||||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label x = 2
|
||||
.label y = 4
|
||||
.label vx = 5
|
||||
.label vy = 7
|
||||
.label x = 6
|
||||
.label y = $c
|
||||
.label vx = $a
|
||||
.label vy = 9
|
||||
// bitmap_init(BITMAP, SCREEN)
|
||||
// [12] call bitmap_init
|
||||
// [34] phi from main to bitmap_init [phi:main->bitmap_init]
|
||||
|
@ -2737,8 +2741,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = 9
|
||||
.label yoffs = $c
|
||||
.label __7 = 8
|
||||
.label yoffs = 4
|
||||
// [35] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
// [35] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
|
@ -2934,11 +2938,11 @@ init_irq: {
|
|||
}
|
||||
// bitmap_plot
|
||||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(2) unsigned int x, __register(X) char y)
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $c
|
||||
.label plotter = $a
|
||||
.label x = 2
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
// [71] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#0] w= bitmap_plot_ylo[bitmap_plot::y#0] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
|
@ -2978,12 +2982,12 @@ bitmap_plot: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp($c) unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, __zp(4) unsigned int num)
|
||||
memset: {
|
||||
.label end = $c
|
||||
.label dst = $a
|
||||
.label num = $c
|
||||
.label str = $a
|
||||
.label end = 4
|
||||
.label dst = 2
|
||||
.label num = 4
|
||||
.label str = 2
|
||||
// if(num>0)
|
||||
// [78] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
|
|
|
@ -32,7 +32,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 2002.0
|
||||
char bitmap_init::$5 // reg byte a 2002.0
|
||||
char bitmap_init::$6 // reg byte a 2002.0
|
||||
char bitmap_init::$7 // zp[1]:9 500.5
|
||||
char bitmap_init::$7 // zp[1]:8 500.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 1001.0
|
||||
char bitmap_init::bits#3 // reg byte a 1501.5
|
||||
|
@ -46,24 +46,24 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 1501.5
|
||||
char bitmap_init::y#2 // reg byte x 500.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:12 2002.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:12 625.625
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:12 1001.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:4 2002.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:4 625.625
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:4 1001.0
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:12 2002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 2002.0
|
||||
char bitmap_plot::$2 // reg byte x 2002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:10 500.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:10 1501.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 500.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 1501.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#0 // x zp[2]:2 420.59999999999997
|
||||
unsigned int bitmap_plot::x#0 // x zp[2]:6 420.59999999999997
|
||||
char bitmap_plot::y
|
||||
char bitmap_plot::y#0 // reg byte x 2103.0
|
||||
__constant const char bitmap_plot_bit[$100] = { fill( $100, 0) }
|
||||
__constant const char bitmap_plot_yhi[$100] = { fill( $100, 0) }
|
||||
__constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) }
|
||||
char *bitmap_screen
|
||||
__loadstore volatile char frame_cnt // zp[1]:8 7.777777777777779
|
||||
__loadstore volatile char frame_cnt // zp[1]:13 7.777777777777779
|
||||
void init_irq()
|
||||
__interrupt(hardware_clobber) void irq()
|
||||
void main()
|
||||
|
@ -72,49 +72,49 @@ char main::toD0181_return
|
|||
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)BITMAP/4&$f // toD0181_return
|
||||
char *main::toD0181_screen
|
||||
unsigned int main::vx
|
||||
unsigned int main::vx#1 // vx zp[2]:5 202.0
|
||||
unsigned int main::vx#2 // vx zp[2]:5 50.5
|
||||
unsigned int main::vx#6 // vx zp[2]:5 50.5
|
||||
unsigned int main::vx#1 // vx zp[2]:10 202.0
|
||||
unsigned int main::vx#2 // vx zp[2]:10 50.5
|
||||
unsigned int main::vx#6 // vx zp[2]:10 50.5
|
||||
char main::vy
|
||||
char main::vy#1 // vy zp[1]:7 202.0
|
||||
char main::vy#2 // vy zp[1]:7 33.666666666666664
|
||||
char main::vy#8 // vy zp[1]:7 151.5
|
||||
char main::vy#1 // vy zp[1]:9 202.0
|
||||
char main::vy#2 // vy zp[1]:9 33.666666666666664
|
||||
char main::vy#8 // vy zp[1]:9 151.5
|
||||
unsigned int main::x
|
||||
unsigned int main::x#1 // x zp[2]:2 36.72727272727273
|
||||
unsigned int main::x#2 // x zp[2]:2 75.75
|
||||
unsigned int main::x#1 // x zp[2]:6 36.72727272727273
|
||||
unsigned int main::x#2 // x zp[2]:6 75.75
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:4 40.4
|
||||
char main::y#2 // y zp[1]:4 60.599999999999994
|
||||
char main::y#1 // y zp[1]:12 40.4
|
||||
char main::y#2 // y zp[1]:12 60.599999999999994
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 1250.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:10 20002.0
|
||||
char *memset::dst#2 // dst zp[2]:10 13668.333333333332
|
||||
char *memset::dst#4 // dst zp[2]:10 2002.0
|
||||
char *memset::dst#1 // dst zp[2]:2 20002.0
|
||||
char *memset::dst#2 // dst zp[2]:2 13668.333333333332
|
||||
char *memset::dst#4 // dst zp[2]:2 2002.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:12 1833.6666666666665
|
||||
char *memset::end#0 // end zp[2]:4 1833.6666666666665
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:12 1001.0
|
||||
unsigned int memset::num#2 // num zp[2]:4 1001.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:10
|
||||
void *memset::str#3 // str zp[2]:2
|
||||
__constant char plots_per_frame[$100] = { fill( $100, 0) }
|
||||
|
||||
zp[2]:2 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
zp[1]:4 [ main::y#2 main::y#1 ]
|
||||
zp[2]:5 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
zp[1]:7 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
zp[2]:6 [ main::x#2 main::x#1 bitmap_plot::x#0 ]
|
||||
zp[1]:12 [ main::y#2 main::y#1 ]
|
||||
zp[2]:10 [ main::vx#2 main::vx#6 main::vx#1 ]
|
||||
zp[1]:9 [ main::vy#2 main::vy#8 main::vy#1 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[1]:8 [ frame_cnt ]
|
||||
zp[1]:13 [ frame_cnt ]
|
||||
reg byte x [ bitmap_plot::y#0 ]
|
||||
zp[1]:9 [ bitmap_init::$7 ]
|
||||
zp[1]:8 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:10 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:12 [ bitmap_plot::$1 memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 memset::num#2 memset::end#0 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
|
|
@ -38,9 +38,9 @@
|
|||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label __13 = 6
|
||||
.label __14 = $10
|
||||
.label a = 3
|
||||
.label i = 2
|
||||
.label __14 = $16
|
||||
.label a = $1c
|
||||
.label i = $1b
|
||||
// bitmap_init(BITMAP, SCREEN)
|
||||
jsr bitmap_init
|
||||
// bitmap_clear(BLACK, WHITE)
|
||||
|
@ -113,8 +113,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $14
|
||||
.label yoffs = 4
|
||||
.label __7 = $1a
|
||||
.label yoffs = $c
|
||||
ldx #0
|
||||
lda #$80
|
||||
__b1:
|
||||
|
@ -202,20 +202,20 @@ bitmap_clear: {
|
|||
rts
|
||||
}
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(__zp(6) unsigned int x1, __zp(8) unsigned int y1, __zp($10) unsigned int x2, __zp($12) unsigned int y2)
|
||||
// void bitmap_line(__zp(6) unsigned int x1, __zp($a) unsigned int y1, __zp($16) unsigned int x2, __zp($18) unsigned int y2)
|
||||
bitmap_line: {
|
||||
.label dx = $15
|
||||
.label dy = $c
|
||||
.label sx = $17
|
||||
.label sy = $e
|
||||
.label e1 = $a
|
||||
.label e = 4
|
||||
.label y = 8
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $14
|
||||
.label sy = $10
|
||||
.label e1 = 8
|
||||
.label e = $c
|
||||
.label y = $a
|
||||
.label x = 6
|
||||
.label x1 = 6
|
||||
.label y1 = 8
|
||||
.label x2 = $10
|
||||
.label y2 = $12
|
||||
.label y1 = $a
|
||||
.label x2 = $16
|
||||
.label y2 = $18
|
||||
// unsigned int dx = abs_u16(x2-x1)
|
||||
lda.z x2
|
||||
sec
|
||||
|
@ -418,12 +418,12 @@ bitmap_line: {
|
|||
rts
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp(8) unsigned int num)
|
||||
// void * memset(__zp(8) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = $a
|
||||
.label num = 8
|
||||
.label str = $a
|
||||
.label end = $a
|
||||
.label dst = 8
|
||||
.label num = $a
|
||||
.label str = 8
|
||||
// if(num>0)
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -462,10 +462,10 @@ memset: {
|
|||
jmp __b2
|
||||
}
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($c) unsigned int abs_u16(__zp($c) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// BYTE1(w)&0x80
|
||||
|
@ -488,10 +488,10 @@ abs_u16: {
|
|||
}
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($e) unsigned int sgn_u16(__zp($19) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $19
|
||||
.label return = $e
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// BYTE1(w)
|
||||
lda.z w+1
|
||||
// BYTE1(w)&0x80
|
||||
|
@ -514,8 +514,8 @@ sgn_u16: {
|
|||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $1b
|
||||
.label plotter = $19
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
lda bitmap_plot_yhi,x
|
||||
|
|
|
@ -2144,57 +2144,57 @@ Complete equivalence classes
|
|||
[ bitmap_plot::$1 ]
|
||||
[ bitmap_plot::plotter#1 ]
|
||||
[ bitmap_plot::$2 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Allocated zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[1]:5 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
Allocated zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated zp[2]:17 [ memset::num#2 ]
|
||||
Allocated zp[2]:19 [ memset::str#3 ]
|
||||
Allocated zp[1]:21 [ memset::c#4 ]
|
||||
Allocated zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
Allocated zp[2]:3 [ bitmap_plot::$1 ]
|
||||
Allocated zp[1]:5 [ bitmap_plot::$2 ]
|
||||
Allocated zp[2]:6 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ]
|
||||
Allocated zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ]
|
||||
Allocated zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ]
|
||||
Allocated zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ]
|
||||
Allocated zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
Allocated zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Allocated zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
Allocated zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ]
|
||||
Allocated zp[2]:33 [ main::$13 ]
|
||||
Allocated zp[2]:35 [ main::$14 ]
|
||||
Allocated zp[2]:37 [ bitmap_line::x2#0 ]
|
||||
Allocated zp[2]:39 [ bitmap_line::y2#0 ]
|
||||
Allocated zp[1]:41 [ bitmap_init::$7 ]
|
||||
Allocated zp[1]:42 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:43 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:44 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:45 [ abs_u16::return#0 ]
|
||||
Allocated zp[2]:47 [ bitmap_line::dx#0 ]
|
||||
Allocated zp[2]:49 [ abs_u16::return#1 ]
|
||||
Allocated zp[2]:51 [ bitmap_line::dy#0 ]
|
||||
Allocated zp[2]:53 [ sgn_u16::return#0 ]
|
||||
Allocated zp[2]:55 [ bitmap_line::sx#0 ]
|
||||
Allocated zp[2]:57 [ sgn_u16::return#1 ]
|
||||
Allocated zp[2]:59 [ bitmap_line::sy#0 ]
|
||||
Allocated zp[2]:61 [ memset::end#0 ]
|
||||
Allocated zp[1]:63 [ abs_u16::$0 ]
|
||||
Allocated zp[1]:64 [ abs_u16::$1 ]
|
||||
Allocated zp[1]:65 [ sgn_u16::$0 ]
|
||||
Allocated zp[1]:66 [ sgn_u16::$1 ]
|
||||
Allocated zp[2]:67 [ bitmap_plot::plotter#0 ]
|
||||
Allocated zp[2]:69 [ bitmap_plot::$1 ]
|
||||
Allocated zp[2]:71 [ bitmap_plot::plotter#1 ]
|
||||
Allocated zp[1]:73 [ bitmap_plot::$2 ]
|
||||
Allocated zp[1]:24 [ abs_u16::$0 ]
|
||||
Allocated zp[1]:25 [ abs_u16::$1 ]
|
||||
Allocated zp[1]:26 [ sgn_u16::$0 ]
|
||||
Allocated zp[1]:27 [ sgn_u16::$1 ]
|
||||
Allocated zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
Allocated zp[2]:30 [ bitmap_line::dy#0 ]
|
||||
Allocated zp[2]:32 [ bitmap_line::sy#0 ]
|
||||
Allocated zp[2]:34 [ bitmap_line::dx#0 ]
|
||||
Allocated zp[2]:36 [ bitmap_line::sx#0 ]
|
||||
Allocated zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated zp[1]:40 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
Allocated zp[2]:41 [ bitmap_line::y2#0 ]
|
||||
Allocated zp[2]:43 [ bitmap_line::x2#0 ]
|
||||
Allocated zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
Allocated zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Allocated zp[1]:47 [ bitmap_init::$4 ]
|
||||
Allocated zp[1]:48 [ bitmap_init::$5 ]
|
||||
Allocated zp[1]:49 [ bitmap_init::$6 ]
|
||||
Allocated zp[2]:50 [ abs_u16::return#0 ]
|
||||
Allocated zp[2]:52 [ abs_u16::return#1 ]
|
||||
Allocated zp[2]:54 [ sgn_u16::return#0 ]
|
||||
Allocated zp[2]:56 [ sgn_u16::return#1 ]
|
||||
Allocated zp[2]:58 [ memset::end#0 ]
|
||||
Allocated zp[1]:60 [ memset::c#4 ]
|
||||
Allocated zp[2]:61 [ memset::num#2 ]
|
||||
Allocated zp[2]:63 [ sgn_u16::return#4 ]
|
||||
Allocated zp[1]:65 [ bitmap_init::$7 ]
|
||||
Allocated zp[1]:66 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:67 [ main::$13 ]
|
||||
Allocated zp[2]:69 [ main::$14 ]
|
||||
Allocated zp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Allocated zp[2]:72 [ memset::str#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:42 [ bitmap_init::$4 ] has ALU potential.
|
||||
Equivalence Class zp[1]:47 [ bitmap_init::$4 ] has ALU potential.
|
||||
Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::$13 = (unsigned int)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:66 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Statement [11] bitmap_line::x1#0 = main::$13 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 ] { } ) always clobbers reg byte a
|
||||
Statement [12] main::$14 = (unsigned int)(COSTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 main::$14 ] { } ) always clobbers reg byte a
|
||||
Statement [13] bitmap_line::x2#0 = main::$14 + $78 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 ] { } ) always clobbers reg byte a
|
||||
|
@ -2202,7 +2202,7 @@ Statement [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] [ main::i#2 m
|
|||
Statement [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [17] main::a#1 = main::a#2 + $20 [ main::i#2 main::a#1 ] ( [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a
|
||||
Statement [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
Statement [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [48] abs_u16::return#0 = abs_u16::return#4 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [49] bitmap_line::dx#0 = abs_u16::return#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
|
@ -2237,19 +2237,19 @@ Statement [91] bitmap_line::e1#2 = bitmap_line::e1#1 - bitmap_line::dx#0 [ bitma
|
|||
Statement [93] if(bitmap_line::x#15!=bitmap_line::x2#0) goto bitmap_line::@9 [ bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#15 bitmap_line::y#13 bitmap_line::e1#6 ] { } ) always clobbers reg byte a
|
||||
Statement [94] bitmap_plot::x#0 = bitmap_line::x1#0 [ bitmap_line::y1#0 bitmap_plot::x#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::y1#0 bitmap_plot::x#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
|
||||
Statement [98] if(memset::num#2<=0) goto memset::@return [ memset::num#2 memset::str#3 memset::c#4 ] ( bitmap_clear:3::memset:42 [ memset::num#2 memset::str#3 memset::c#4 ] { } bitmap_clear:3::memset:44 [ memset::num#2 memset::str#3 memset::c#4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:21 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:60 [ memset::c#4 ]
|
||||
Statement [99] memset::end#0 = (char *)memset::str#3 + memset::num#2 [ memset::str#3 memset::c#4 memset::end#0 ] ( bitmap_clear:3::memset:42 [ memset::str#3 memset::c#4 memset::end#0 ] { } bitmap_clear:3::memset:44 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
||||
Statement [100] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#4 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [102] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [104] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( bitmap_clear:3::memset:42 [ memset::c#4 memset::end#0 memset::dst#2 ] { } bitmap_clear:3::memset:44 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:21 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:60 [ memset::c#4 ]
|
||||
Statement [110] abs_u16::return#2 = - abs_u16::w#2 [ abs_u16::return#2 ] ( bitmap_line:16::abs_u16:47 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::return#2 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } bitmap_line:16::abs_u16:51 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 bitmap_line::dx#0 abs_u16::return#2 ] { { abs_u16::w#1 = abs_u16::w#2 } { abs_u16::return#1 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
Statement [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] [ bitmap_plot::x#4 bitmap_plot::plotter#0 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
|
||||
Statement [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
|
||||
Statement [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
|
||||
Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:66 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Statement [4] *D011 = VICII_BMM|VICII_DEN|VICII_RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::$13 = (unsigned int)COSTAB[main::a#2] [ main::i#2 main::a#2 main::$13 ] ( [ main::i#2 main::a#2 main::$13 ] { } ) always clobbers reg byte a
|
||||
|
@ -2259,7 +2259,7 @@ Statement [13] bitmap_line::x2#0 = main::$14 + $78 [ main::i#2 main::a#2 bitmap_
|
|||
Statement [14] bitmap_line::y1#0 = (unsigned int)SINTAB[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 ] { } ) always clobbers reg byte a
|
||||
Statement [15] bitmap_line::y2#0 = (unsigned int)(SINTAB+$20)[main::a#2] [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] ( [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [17] main::a#1 = main::a#2 + $20 [ main::i#2 main::a#1 ] ( [ main::i#2 main::a#1 ] { } ) always clobbers reg byte a reg byte x
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:66 [ main::i#2 main::i#1 ]
|
||||
Statement [29] bitmap_init::$7 = bitmap_init::y#2 & 7 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#2 bitmap_init::$7 ] { } ) always clobbers reg byte a
|
||||
Statement [36] bitmap_init::yoffs#1 = bitmap_init::yoffs#2 + (unsigned int)$28*8 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] ( bitmap_init:1 [ bitmap_init::y#2 bitmap_init::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Statement [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 [ bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] ( bitmap_line:16 [ main::i#2 main::a#2 bitmap_line::x1#0 bitmap_line::x2#0 bitmap_line::y1#0 bitmap_line::y2#0 abs_u16::w#0 ] { { abs_u16::w#0 = abs_u16::w#2 } { abs_u16::return#0 = abs_u16::return#4 } } ) always clobbers reg byte a
|
||||
|
@ -2360,59 +2360,59 @@ Statement [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bi
|
|||
Statement [122] bitmap_plot::$1 = bitmap_plot::x#4 & $fff8 [ bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#0 bitmap_plot::$1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
|
||||
Statement [123] bitmap_plot::plotter#1 = (char *)bitmap_plot::plotter#0 + bitmap_plot::$1 [ bitmap_plot::x#4 bitmap_plot::plotter#1 ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 bitmap_plot::x#4 bitmap_plot::plotter#1 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a
|
||||
Statement [125] *bitmap_plot::plotter#1 = *bitmap_plot::plotter#1 | bitmap_plot_bit[bitmap_plot::$2] [ ] ( bitmap_line:16::bitmap_plot:69 [ main::i#2 main::a#2 bitmap_line::y2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#13 bitmap_line::y#4 bitmap_line::e#3 ] { { bitmap_plot::y#1 = bitmap_plot::y#4 } { bitmap_plot::x#1 = bitmap_plot::x#4 bitmap_line::x#13 } } bitmap_line:16::bitmap_plot:80 [ main::i#2 main::a#2 ] { { bitmap_plot::y#2 = bitmap_plot::y#4 } { bitmap_plot::x#2 = bitmap_plot::x#4 bitmap_line::x#6 } } bitmap_line:16::bitmap_plot:86 [ main::i#2 main::a#2 bitmap_line::x2#0 bitmap_line::dx#0 bitmap_line::dy#0 bitmap_line::sx#0 bitmap_line::sy#0 bitmap_line::x#7 bitmap_line::y#15 bitmap_line::e1#3 ] { { bitmap_plot::y#3 = bitmap_plot::y#4 } { bitmap_plot::x#3 = bitmap_plot::x#4 bitmap_line::x#7 } } bitmap_line:16::bitmap_plot:96 [ main::i#2 main::a#2 ] { { bitmap_plot::y#0 = bitmap_plot::y#4 } { bitmap_plot::x#0 = bitmap_plot::x#4 bitmap_line::x1#0 } } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 ,
|
||||
Potential registers zp[1]:3 [ main::a#2 main::a#1 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:15 ,
|
||||
Potential registers zp[2]:17 [ memset::num#2 ] : zp[2]:17 ,
|
||||
Potential registers zp[2]:19 [ memset::str#3 ] : zp[2]:19 ,
|
||||
Potential registers zp[1]:21 [ memset::c#4 ] : zp[1]:21 , reg byte x ,
|
||||
Potential registers zp[1]:66 [ main::i#2 main::i#1 ] : zp[1]:66 ,
|
||||
Potential registers zp[1]:71 [ main::a#2 main::a#1 ] : zp[1]:71 , reg byte x ,
|
||||
Potential registers zp[1]:40 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] : zp[1]:40 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] : zp[1]:46 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] : zp[2]:38 ,
|
||||
Potential registers zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] : zp[2]:14 ,
|
||||
Potential registers zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] : zp[2]:12 ,
|
||||
Potential registers zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:61 [ memset::num#2 ] : zp[2]:61 ,
|
||||
Potential registers zp[2]:72 [ memset::str#3 ] : zp[2]:72 ,
|
||||
Potential registers zp[1]:60 [ memset::c#4 ] : zp[1]:60 , reg byte x ,
|
||||
Potential registers zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:22 ,
|
||||
Potential registers zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp[2]:24 ,
|
||||
Potential registers zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp[2]:26 ,
|
||||
Potential registers zp[2]:28 [ sgn_u16::return#4 ] : zp[2]:28 ,
|
||||
Potential registers zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:31 ,
|
||||
Potential registers zp[2]:33 [ main::$13 ] : zp[2]:33 ,
|
||||
Potential registers zp[2]:35 [ main::$14 ] : zp[2]:35 ,
|
||||
Potential registers zp[2]:37 [ bitmap_line::x2#0 ] : zp[2]:37 ,
|
||||
Potential registers zp[2]:39 [ bitmap_line::y2#0 ] : zp[2]:39 ,
|
||||
Potential registers zp[1]:41 [ bitmap_init::$7 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:42 [ bitmap_init::$4 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:43 [ bitmap_init::$5 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:44 [ bitmap_init::$6 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:45 [ abs_u16::return#0 ] : zp[2]:45 ,
|
||||
Potential registers zp[2]:47 [ bitmap_line::dx#0 ] : zp[2]:47 ,
|
||||
Potential registers zp[2]:49 [ abs_u16::return#1 ] : zp[2]:49 ,
|
||||
Potential registers zp[2]:51 [ bitmap_line::dy#0 ] : zp[2]:51 ,
|
||||
Potential registers zp[2]:53 [ sgn_u16::return#0 ] : zp[2]:53 ,
|
||||
Potential registers zp[2]:55 [ bitmap_line::sx#0 ] : zp[2]:55 ,
|
||||
Potential registers zp[2]:57 [ sgn_u16::return#1 ] : zp[2]:57 ,
|
||||
Potential registers zp[2]:59 [ bitmap_line::sy#0 ] : zp[2]:59 ,
|
||||
Potential registers zp[2]:61 [ memset::end#0 ] : zp[2]:61 ,
|
||||
Potential registers zp[1]:63 [ abs_u16::$0 ] : zp[1]:63 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:64 [ abs_u16::$1 ] : zp[1]:64 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:65 [ sgn_u16::$0 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:66 [ sgn_u16::$1 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:67 [ bitmap_plot::plotter#0 ] : zp[2]:67 ,
|
||||
Potential registers zp[2]:69 [ bitmap_plot::$1 ] : zp[2]:69 ,
|
||||
Potential registers zp[2]:71 [ bitmap_plot::plotter#1 ] : zp[2]:71 ,
|
||||
Potential registers zp[1]:73 [ bitmap_plot::$2 ] : zp[1]:73 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] : zp[2]:20 ,
|
||||
Potential registers zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:63 [ sgn_u16::return#4 ] : zp[2]:63 ,
|
||||
Potential registers zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:67 [ main::$13 ] : zp[2]:67 ,
|
||||
Potential registers zp[2]:69 [ main::$14 ] : zp[2]:69 ,
|
||||
Potential registers zp[2]:43 [ bitmap_line::x2#0 ] : zp[2]:43 ,
|
||||
Potential registers zp[2]:41 [ bitmap_line::y2#0 ] : zp[2]:41 ,
|
||||
Potential registers zp[1]:65 [ bitmap_init::$7 ] : zp[1]:65 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:47 [ bitmap_init::$4 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:48 [ bitmap_init::$5 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:49 [ bitmap_init::$6 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:50 [ abs_u16::return#0 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:34 [ bitmap_line::dx#0 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:52 [ abs_u16::return#1 ] : zp[2]:52 ,
|
||||
Potential registers zp[2]:30 [ bitmap_line::dy#0 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:54 [ sgn_u16::return#0 ] : zp[2]:54 ,
|
||||
Potential registers zp[2]:36 [ bitmap_line::sx#0 ] : zp[2]:36 ,
|
||||
Potential registers zp[2]:56 [ sgn_u16::return#1 ] : zp[2]:56 ,
|
||||
Potential registers zp[2]:32 [ bitmap_line::sy#0 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:58 [ memset::end#0 ] : zp[2]:58 ,
|
||||
Potential registers zp[1]:24 [ abs_u16::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ abs_u16::$1 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:26 [ sgn_u16::$0 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:27 [ sgn_u16::$1 ] : zp[1]:27 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:18 [ bitmap_plot::plotter#0 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:3 [ bitmap_plot::$1 ] : zp[2]:3 ,
|
||||
Potential registers zp[2]:6 [ bitmap_plot::plotter#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:5 [ bitmap_plot::$2 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bitmap_plot] 260,614: zp[1]:30 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:69 [ bitmap_plot::$1 ] 200,002: zp[1]:73 [ bitmap_plot::$2 ] 150,001.5: zp[2]:71 [ bitmap_plot::plotter#1 ] 75,255.5: zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:67 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,095.99: zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 55,062.47: zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 844.64: zp[2]:51 [ bitmap_line::dy#0 ] 773.19: zp[2]:59 [ bitmap_line::sy#0 ] 760.17: zp[2]:47 [ bitmap_line::dx#0 ] 670.1: zp[2]:55 [ bitmap_line::sx#0 ] 319.19: zp[2]:39 [ bitmap_line::y2#0 ] 300.41: zp[2]:37 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,758.25: zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 2,002: zp[1]:63 [ abs_u16::$0 ] 2,002: zp[1]:64 [ abs_u16::$1 ] 202: zp[2]:45 [ abs_u16::return#0 ] 202: zp[2]:49 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:65 [ sgn_u16::$0 ] 2,002: zp[1]:66 [ sgn_u16::$1 ] 1,607: zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 202: zp[2]:53 [ sgn_u16::return#0 ] 202: zp[2]:57 [ sgn_u16::return#1 ] 50.5: zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Uplift Scope [memset] 3,572.33: zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:61 [ memset::end#0 ] 125.12: zp[1]:21 [ memset::c#4 ] 101: zp[2]:17 [ memset::num#2 ] 0: zp[2]:19 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 366.12: zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:4 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:5 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:6 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:42 [ bitmap_init::$4 ] 202: zp[1]:43 [ bitmap_init::$5 ] 202: zp[1]:44 [ bitmap_init::$6 ] 50.5: zp[1]:41 [ bitmap_init::$7 ]
|
||||
Uplift Scope [main] 25.3: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[2]:33 [ main::$13 ] 22: zp[2]:35 [ main::$14 ] 13.44: zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Uplift Scope [bitmap_plot] 260,614: zp[1]:2 [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] 200,002: zp[2]:3 [ bitmap_plot::$1 ] 200,002: zp[1]:5 [ bitmap_plot::$2 ] 150,001.5: zp[2]:6 [ bitmap_plot::plotter#1 ] 75,255.5: zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] 50,000.5: zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Uplift Scope [bitmap_line] 69,095.99: zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] 55,062.47: zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] 52,560.77: zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] 52,560.77: zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] 844.64: zp[2]:30 [ bitmap_line::dy#0 ] 773.19: zp[2]:32 [ bitmap_line::sy#0 ] 760.17: zp[2]:34 [ bitmap_line::dx#0 ] 670.1: zp[2]:36 [ bitmap_line::sx#0 ] 319.19: zp[2]:41 [ bitmap_line::y2#0 ] 300.41: zp[2]:43 [ bitmap_line::x2#0 ]
|
||||
Uplift Scope [abs_u16] 3,758.25: zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] 2,002: zp[1]:24 [ abs_u16::$0 ] 2,002: zp[1]:25 [ abs_u16::$1 ] 202: zp[2]:50 [ abs_u16::return#0 ] 202: zp[2]:52 [ abs_u16::return#1 ]
|
||||
Uplift Scope [sgn_u16] 2,002: zp[1]:26 [ sgn_u16::$0 ] 2,002: zp[1]:27 [ sgn_u16::$1 ] 1,607: zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] 202: zp[2]:54 [ sgn_u16::return#0 ] 202: zp[2]:56 [ sgn_u16::return#1 ] 50.5: zp[2]:63 [ sgn_u16::return#4 ]
|
||||
Uplift Scope [memset] 3,572.33: zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 183.67: zp[2]:58 [ memset::end#0 ] 125.12: zp[1]:60 [ memset::c#4 ] 101: zp[2]:61 [ memset::num#2 ] 0: zp[2]:72 [ memset::str#3 ]
|
||||
Uplift Scope [bitmap_init] 366.12: zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] 319.83: zp[1]:40 [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] 202: zp[1]:45 [ bitmap_init::x#2 bitmap_init::x#1 ] 202: zp[1]:46 [ bitmap_init::y#2 bitmap_init::y#1 ] 202: zp[1]:47 [ bitmap_init::$4 ] 202: zp[1]:48 [ bitmap_init::$5 ] 202: zp[1]:49 [ bitmap_init::$6 ] 50.5: zp[1]:65 [ bitmap_init::$7 ]
|
||||
Uplift Scope [main] 25.3: zp[1]:66 [ main::i#2 main::i#1 ] 22: zp[2]:67 [ main::$13 ] 22: zp[2]:69 [ main::$14 ] 13.44: zp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
|
@ -2420,59 +2420,61 @@ Uplift Scope [bitmap_clear]
|
|||
Uplift Scope [RADIX]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [bitmap_plot] best 32982 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:69 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:71 [ bitmap_plot::plotter#1 ] zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:67 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 32982 combination zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:51 [ bitmap_line::dy#0 ] zp[2]:59 [ bitmap_line::sy#0 ] zp[2]:47 [ bitmap_line::dx#0 ] zp[2]:55 [ bitmap_line::sx#0 ] zp[2]:39 [ bitmap_line::y2#0 ] zp[2]:37 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 32972 combination zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:45 [ abs_u16::return#0 ] zp[2]:49 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 32962 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:53 [ sgn_u16::return#0 ] zp[2]:57 [ sgn_u16::return#1 ] zp[2]:28 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 32946 combination zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:61 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:17 [ memset::num#2 ] zp[2]:19 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 32496 combination zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:43 [ bitmap_init::$5 ] zp[1]:44 [ bitmap_init::$6 ] zp[1]:41 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_plot] best 32982 combination reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ] zp[2]:3 [ bitmap_plot::$1 ] reg byte x [ bitmap_plot::$2 ] zp[2]:6 [ bitmap_plot::plotter#1 ] zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] zp[2]:18 [ bitmap_plot::plotter#0 ]
|
||||
Uplifting [bitmap_line] best 32982 combination zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] zp[2]:30 [ bitmap_line::dy#0 ] zp[2]:32 [ bitmap_line::sy#0 ] zp[2]:34 [ bitmap_line::dx#0 ] zp[2]:36 [ bitmap_line::sx#0 ] zp[2]:41 [ bitmap_line::y2#0 ] zp[2]:43 [ bitmap_line::x2#0 ]
|
||||
Uplifting [abs_u16] best 32972 combination zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] reg byte a [ abs_u16::$0 ] reg byte a [ abs_u16::$1 ] zp[2]:50 [ abs_u16::return#0 ] zp[2]:52 [ abs_u16::return#1 ]
|
||||
Uplifting [sgn_u16] best 32962 combination reg byte a [ sgn_u16::$0 ] reg byte a [ sgn_u16::$1 ] zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] zp[2]:54 [ sgn_u16::return#0 ] zp[2]:56 [ sgn_u16::return#1 ] zp[2]:63 [ sgn_u16::return#4 ]
|
||||
Uplifting [memset] best 32946 combination zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:58 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:61 [ memset::num#2 ] zp[2]:72 [ memset::str#3 ]
|
||||
Uplifting [bitmap_init] best 32496 combination zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ] reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ] reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ] reg byte a [ bitmap_init::$4 ] zp[1]:48 [ bitmap_init::$5 ] zp[1]:49 [ bitmap_init::$6 ] zp[1]:65 [ bitmap_init::$7 ]
|
||||
Limited combination testing to 100 combinations of 15360 possible.
|
||||
Uplifting [main] best 32496 combination zp[1]:2 [ main::i#2 main::i#1 ] zp[2]:33 [ main::$13 ] zp[2]:35 [ main::$14 ] zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Uplifting [main] best 32496 combination zp[1]:66 [ main::i#2 main::i#1 ] zp[2]:67 [ main::$13 ] zp[2]:69 [ main::$14 ] zp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Uplifting [MOS6526_CIA] best 32496 combination
|
||||
Uplifting [MOS6569_VICII] best 32496 combination
|
||||
Uplifting [MOS6581_SID] best 32496 combination
|
||||
Uplifting [bitmap_clear] best 32496 combination
|
||||
Uplifting [RADIX] best 32496 combination
|
||||
Uplifting [] best 32496 combination
|
||||
Attempting to uplift remaining variables inzp[1]:43 [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:48 [ bitmap_init::$5 ]
|
||||
Uplifting [bitmap_init] best 32436 combination reg byte a [ bitmap_init::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:44 [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:49 [ bitmap_init::$6 ]
|
||||
Uplifting [bitmap_init] best 32376 combination reg byte a [ bitmap_init::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:41 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 32376 combination zp[1]:41 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 32376 combination zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Uplifting [main] best 32376 combination zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:31 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 4
|
||||
Coalescing zero page register [ zp[2]:11 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] with [ zp[2]:33 [ main::$13 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:17 [ memset::num#2 ] ] with [ zp[2]:61 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:19 [ memset::str#3 ] ] with [ zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp[2]:45 [ abs_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp[2]:49 [ abs_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ sgn_u16::return#4 ] ] with [ zp[2]:53 [ sgn_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:57 [ sgn_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:35 [ main::$14 ] ] with [ zp[2]:37 [ bitmap_line::x2#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:67 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:71 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:24 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:51 [ bitmap_line::dy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:28 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:59 [ bitmap_line::sy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:9 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ] with [ zp[2]:7 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:17 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:13 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ]
|
||||
Coalescing zero page register [ zp[2]:19 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:15 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:67 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:26 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ]
|
||||
Allocated (was zp[2]:9) zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated (was zp[2]:11) zp[2]:6 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ]
|
||||
Allocated (was zp[2]:17) zp[2]:8 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated (was zp[2]:19) zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated (was zp[2]:24) zp[2]:12 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
Allocated (was zp[2]:28) zp[2]:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
Allocated (was zp[2]:35) zp[2]:16 [ main::$14 bitmap_line::x2#0 ]
|
||||
Allocated (was zp[2]:39) zp[2]:18 [ bitmap_line::y2#0 ]
|
||||
Allocated (was zp[1]:41) zp[1]:20 [ bitmap_init::$7 ]
|
||||
Allocated (was zp[2]:47) zp[2]:21 [ bitmap_line::dx#0 ]
|
||||
Allocated (was zp[2]:55) zp[2]:23 [ bitmap_line::sx#0 ]
|
||||
Allocated (was zp[2]:67) zp[2]:25 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
Allocated (was zp[2]:69) zp[2]:27 [ bitmap_plot::$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:65 [ bitmap_init::$7 ]
|
||||
Uplifting [bitmap_init] best 32376 combination zp[1]:65 [ bitmap_init::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:66 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 32376 combination zp[1]:66 [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Uplifting [main] best 32376 combination zp[1]:71 [ main::a#2 main::a#1 ]
|
||||
Coalescing zero page register [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 ] ] with [ zp[2]:8 [ bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] - score: 4
|
||||
Coalescing zero page register [ zp[2]:10 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 ] ] with [ zp[2]:67 [ main::$13 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:61 [ memset::num#2 ] ] with [ zp[2]:58 [ memset::end#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:72 [ memset::str#3 ] ] with [ zp[2]:22 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 ] ] with [ zp[2]:50 [ abs_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 ] ] with [ zp[2]:52 [ abs_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 ] ] with [ zp[2]:54 [ sgn_u16::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 sgn_u16::return#0 ] ] with [ zp[2]:56 [ sgn_u16::return#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:69 [ main::$14 ] ] with [ zp[2]:43 [ bitmap_line::x2#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 ] ] with [ zp[2]:6 [ bitmap_plot::plotter#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 ] ] with [ zp[2]:30 [ bitmap_line::dy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:63 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 ] ] with [ zp[2]:32 [ bitmap_line::sy#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:14 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 ] ] with [ zp[2]:38 [ bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:61 [ memset::num#2 memset::end#0 ] ] with [ zp[2]:12 [ bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ] ]
|
||||
Coalescing zero page register [ zp[2]:72 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:16 [ bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:18 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 ] ] with [ zp[2]:28 [ sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ] ]
|
||||
Allocated (was zp[2]:18) zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
Allocated (was zp[2]:3) zp[2]:4 [ bitmap_plot::$1 ]
|
||||
Allocated (was zp[2]:10) zp[2]:6 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ]
|
||||
Allocated (was zp[2]:72) zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
Allocated (was zp[2]:61) zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
Allocated (was zp[2]:14) zp[2]:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
Allocated (was zp[2]:20) zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
Allocated (was zp[2]:63) zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
Allocated (was zp[2]:34) zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
Allocated (was zp[2]:36) zp[2]:20 [ bitmap_line::sx#0 ]
|
||||
Allocated (was zp[2]:69) zp[2]:22 [ main::$14 bitmap_line::x2#0 ]
|
||||
Allocated (was zp[2]:41) zp[2]:24 [ bitmap_line::y2#0 ]
|
||||
Allocated (was zp[1]:65) zp[1]:26 [ bitmap_init::$7 ]
|
||||
Allocated (was zp[1]:66) zp[1]:27 [ main::i#2 main::i#1 ]
|
||||
Allocated (was zp[1]:71) zp[1]:28 [ main::a#2 main::a#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -2519,9 +2521,9 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label __13 = 6
|
||||
.label __14 = $10
|
||||
.label a = 3
|
||||
.label i = 2
|
||||
.label __14 = $16
|
||||
.label a = $1c
|
||||
.label i = $1b
|
||||
// [1] call bitmap_init
|
||||
// [19] phi from main to bitmap_init [phi:main->bitmap_init]
|
||||
bitmap_init_from_main:
|
||||
|
@ -2636,8 +2638,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $14
|
||||
.label yoffs = 4
|
||||
.label __7 = $1a
|
||||
.label yoffs = $c
|
||||
// [20] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
__b1_from_bitmap_init:
|
||||
// [20] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -2795,20 +2797,20 @@ bitmap_clear: {
|
|||
}
|
||||
// bitmap_line
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(__zp(6) unsigned int x1, __zp(8) unsigned int y1, __zp($10) unsigned int x2, __zp($12) unsigned int y2)
|
||||
// void bitmap_line(__zp(6) unsigned int x1, __zp($a) unsigned int y1, __zp($16) unsigned int x2, __zp($18) unsigned int y2)
|
||||
bitmap_line: {
|
||||
.label dx = $15
|
||||
.label dy = $c
|
||||
.label sx = $17
|
||||
.label sy = $e
|
||||
.label e1 = $a
|
||||
.label e = 4
|
||||
.label y = 8
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $14
|
||||
.label sy = $10
|
||||
.label e1 = 8
|
||||
.label e = $c
|
||||
.label y = $a
|
||||
.label x = 6
|
||||
.label x1 = 6
|
||||
.label y1 = 8
|
||||
.label x2 = $10
|
||||
.label y2 = $12
|
||||
.label y1 = $a
|
||||
.label x2 = $16
|
||||
.label y2 = $18
|
||||
// [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3
|
||||
lda.z x2
|
||||
sec
|
||||
|
@ -3131,12 +3133,12 @@ bitmap_line: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp(8) unsigned int num)
|
||||
// void * memset(__zp(8) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = $a
|
||||
.label num = 8
|
||||
.label str = $a
|
||||
.label end = $a
|
||||
.label dst = 8
|
||||
.label num = $a
|
||||
.label str = 8
|
||||
// [98] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
bne !+
|
||||
|
@ -3189,10 +3191,10 @@ memset: {
|
|||
}
|
||||
// abs_u16
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($c) unsigned int abs_u16(__zp($c) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// [107] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [108] abs_u16::$1 = abs_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
|
@ -3224,10 +3226,10 @@ abs_u16: {
|
|||
// sgn_u16
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($e) unsigned int sgn_u16(__zp($19) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $19
|
||||
.label return = $e
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// [114] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
// [115] sgn_u16::$1 = sgn_u16::$0 & $80 -- vbuaa=vbuaa_band_vbuc1
|
||||
|
@ -3265,8 +3267,8 @@ sgn_u16: {
|
|||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $1b
|
||||
.label plotter = $19
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
lda bitmap_plot_yhi,x
|
||||
|
@ -3477,14 +3479,14 @@ unsigned int abs_u16(unsigned int w)
|
|||
char abs_u16::$0 // reg byte a 2002.0
|
||||
char abs_u16::$1 // reg byte a 2002.0
|
||||
unsigned int abs_u16::return
|
||||
unsigned int abs_u16::return#0 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:12 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:12 551.0
|
||||
unsigned int abs_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:14 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:14 551.0
|
||||
unsigned int abs_u16::w
|
||||
unsigned int abs_u16::w#0 // w zp[2]:12 202.0
|
||||
unsigned int abs_u16::w#1 // w zp[2]:12 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:12 801.25
|
||||
unsigned int abs_u16::w#0 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#1 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:14 801.25
|
||||
void bitmap_clear(char bgcol , char fgcol)
|
||||
char bitmap_clear::bgcol
|
||||
char bitmap_clear::col
|
||||
|
@ -3495,7 +3497,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 202.0
|
||||
char bitmap_init::$5 // reg byte a 202.0
|
||||
char bitmap_init::$6 // reg byte a 202.0
|
||||
char bitmap_init::$7 // zp[1]:20 50.5
|
||||
char bitmap_init::$7 // zp[1]:26 50.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 101.0
|
||||
char bitmap_init::bits#3 // reg byte a 151.5
|
||||
|
@ -3509,30 +3511,30 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 151.5
|
||||
char bitmap_init::y#2 // reg byte x 50.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:4 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:4 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:4 101.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:12 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:12 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:12 101.0
|
||||
void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2)
|
||||
unsigned int bitmap_line::dx
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:21 760.175
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:18 760.175
|
||||
unsigned int bitmap_line::dy
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:12 844.6388888888889
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:14 844.6388888888889
|
||||
unsigned int bitmap_line::e
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:4 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:4 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:4 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:4 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:4 15001.5
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:12 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:12 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:12 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:12 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:12 15001.5
|
||||
unsigned int bitmap_line::e1
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:10 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:10 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:10 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:10 15001.5
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:8 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:8 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:8 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:8 15001.5
|
||||
unsigned int bitmap_line::sx
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:23 670.1
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:20 670.1
|
||||
unsigned int bitmap_line::sy
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:14 773.1923076923076
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076
|
||||
unsigned int bitmap_line::x
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0
|
||||
|
@ -3543,24 +3545,24 @@ unsigned int bitmap_line::x#7 // x zp[2]:6 7526.0
|
|||
unsigned int bitmap_line::x1
|
||||
unsigned int bitmap_line::x1#0 // x1 zp[2]:6 19.846153846153847
|
||||
unsigned int bitmap_line::x2
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:16 300.4117647058823
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:22 300.4117647058823
|
||||
unsigned int bitmap_line::y
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:8 4300.571428571429
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:8 5025.75
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:10 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:10 4300.571428571429
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:10 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:10 5025.75
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:10 10001.0
|
||||
unsigned int bitmap_line::y1
|
||||
unsigned int bitmap_line::y1#0 // y1 zp[2]:8 17.291666666666664
|
||||
unsigned int bitmap_line::y1#0 // y1 zp[2]:10 17.291666666666664
|
||||
unsigned int bitmap_line::y2
|
||||
unsigned int bitmap_line::y2#0 // y2 zp[2]:18 319.1875
|
||||
unsigned int bitmap_line::y2#0 // y2 zp[2]:24 319.1875
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:27 200002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 200002.0
|
||||
char bitmap_plot::$2 // reg byte x 200002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:25 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:25 150001.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#0 // x zp[2]:6 101.0
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0
|
||||
|
@ -3579,13 +3581,13 @@ __constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) }
|
|||
char *bitmap_screen
|
||||
void main()
|
||||
unsigned int main::$13 // zp[2]:6 22.0
|
||||
unsigned int main::$14 // zp[2]:16 22.0
|
||||
unsigned int main::$14 // zp[2]:22 22.0
|
||||
char main::a
|
||||
char main::a#1 // a zp[1]:3 11.0
|
||||
char main::a#2 // a zp[1]:3 2.4444444444444446
|
||||
char main::a#1 // a zp[1]:28 11.0
|
||||
char main::a#2 // a zp[1]:28 2.4444444444444446
|
||||
char main::i
|
||||
char main::i#1 // i zp[1]:2 22.0
|
||||
char main::i#2 // i zp[1]:2 3.3000000000000003
|
||||
char main::i#1 // i zp[1]:27 22.0
|
||||
char main::i#2 // i zp[1]:27 3.3000000000000003
|
||||
char *main::toD0181_gfx
|
||||
char main::toD0181_return
|
||||
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)BITMAP/4&$f // toD0181_return
|
||||
|
@ -3594,55 +3596,55 @@ void * memset(void *str , char c , unsigned int num)
|
|||
char memset::c
|
||||
char memset::c#4 // reg byte x 125.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:10 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:10 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:10 202.0
|
||||
char *memset::dst#1 // dst zp[2]:8 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:8 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:8 202.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:8 183.66666666666669
|
||||
char *memset::end#0 // end zp[2]:10 183.66666666666669
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:8 101.0
|
||||
unsigned int memset::num#2 // num zp[2]:10 101.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:10
|
||||
void *memset::str#3 // str zp[2]:8
|
||||
unsigned int sgn_u16(unsigned int w)
|
||||
char sgn_u16::$0 // reg byte a 2002.0
|
||||
char sgn_u16::$1 // reg byte a 2002.0
|
||||
unsigned int sgn_u16::return
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:14 50.5
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:16 50.5
|
||||
unsigned int sgn_u16::w
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:25 202.0
|
||||
unsigned int sgn_u16::w#1 // w zp[2]:25 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:25 1203.0
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#1 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:2 1203.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
zp[1]:27 [ main::i#2 main::i#1 ]
|
||||
zp[1]:28 [ main::a#2 main::a#1 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:6 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ]
|
||||
zp[2]:8 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:12 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[2]:16 [ main::$14 bitmap_line::x2#0 ]
|
||||
zp[2]:18 [ bitmap_line::y2#0 ]
|
||||
zp[1]:20 [ bitmap_init::$7 ]
|
||||
zp[2]:22 [ main::$14 bitmap_line::x2#0 ]
|
||||
zp[2]:24 [ bitmap_line::y2#0 ]
|
||||
zp[1]:26 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:21 [ bitmap_line::dx#0 ]
|
||||
zp[2]:23 [ bitmap_line::sx#0 ]
|
||||
zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
zp[2]:20 [ bitmap_line::sx#0 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
zp[2]:25 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
zp[2]:27 [ bitmap_plot::$1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
||||
|
||||
|
@ -3693,9 +3695,9 @@ Score: 26875
|
|||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>BITMAP)/4&$f
|
||||
.label __13 = 6
|
||||
.label __14 = $10
|
||||
.label a = 3
|
||||
.label i = 2
|
||||
.label __14 = $16
|
||||
.label a = $1c
|
||||
.label i = $1b
|
||||
// bitmap_init(BITMAP, SCREEN)
|
||||
// [1] call bitmap_init
|
||||
// [19] phi from main to bitmap_init [phi:main->bitmap_init]
|
||||
|
@ -3802,8 +3804,8 @@ main: {
|
|||
// Initialize bitmap plotting tables
|
||||
// void bitmap_init(char *gfx, char *screen)
|
||||
bitmap_init: {
|
||||
.label __7 = $14
|
||||
.label yoffs = 4
|
||||
.label __7 = $1a
|
||||
.label yoffs = $c
|
||||
// [20] phi from bitmap_init to bitmap_init::@1 [phi:bitmap_init->bitmap_init::@1]
|
||||
// [20] phi bitmap_init::x#2 = 0 [phi:bitmap_init->bitmap_init::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
|
@ -3949,20 +3951,20 @@ bitmap_clear: {
|
|||
}
|
||||
// bitmap_line
|
||||
// Draw a line on the bitmap using bresenhams algorithm
|
||||
// void bitmap_line(__zp(6) unsigned int x1, __zp(8) unsigned int y1, __zp($10) unsigned int x2, __zp($12) unsigned int y2)
|
||||
// void bitmap_line(__zp(6) unsigned int x1, __zp($a) unsigned int y1, __zp($16) unsigned int x2, __zp($18) unsigned int y2)
|
||||
bitmap_line: {
|
||||
.label dx = $15
|
||||
.label dy = $c
|
||||
.label sx = $17
|
||||
.label sy = $e
|
||||
.label e1 = $a
|
||||
.label e = 4
|
||||
.label y = 8
|
||||
.label dx = $12
|
||||
.label dy = $e
|
||||
.label sx = $14
|
||||
.label sy = $10
|
||||
.label e1 = 8
|
||||
.label e = $c
|
||||
.label y = $a
|
||||
.label x = 6
|
||||
.label x1 = 6
|
||||
.label y1 = 8
|
||||
.label x2 = $10
|
||||
.label y2 = $12
|
||||
.label y1 = $a
|
||||
.label x2 = $16
|
||||
.label y2 = $18
|
||||
// unsigned int dx = abs_u16(x2-x1)
|
||||
// [46] abs_u16::w#0 = bitmap_line::x2#0 - bitmap_line::x1#0 -- vwuz1=vwuz2_minus_vwuz3
|
||||
lda.z x2
|
||||
|
@ -4268,12 +4270,12 @@ bitmap_line: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp($a) void *str, __register(X) char c, __zp(8) unsigned int num)
|
||||
// void * memset(__zp(8) void *str, __register(X) char c, __zp($a) unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = $a
|
||||
.label num = 8
|
||||
.label str = $a
|
||||
.label end = $a
|
||||
.label dst = 8
|
||||
.label num = $a
|
||||
.label str = 8
|
||||
// if(num>0)
|
||||
// [98] if(memset::num#2<=0) goto memset::@return -- vwuz1_le_0_then_la1
|
||||
lda.z num
|
||||
|
@ -4326,10 +4328,10 @@ memset: {
|
|||
}
|
||||
// abs_u16
|
||||
// Get the absolute value of a 16-bit unsigned number treated as a signed number.
|
||||
// __zp($c) unsigned int abs_u16(__zp($c) unsigned int w)
|
||||
// __zp($e) unsigned int abs_u16(__zp($e) unsigned int w)
|
||||
abs_u16: {
|
||||
.label w = $c
|
||||
.label return = $c
|
||||
.label w = $e
|
||||
.label return = $e
|
||||
// BYTE1(w)
|
||||
// [107] abs_u16::$0 = byte1 abs_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
|
@ -4362,10 +4364,10 @@ abs_u16: {
|
|||
// sgn_u16
|
||||
// Get the sign of a 16-bit unsigned number treated as a signed number.
|
||||
// Returns unsigned -1 if the number is
|
||||
// __zp($e) unsigned int sgn_u16(__zp($19) unsigned int w)
|
||||
// __zp($10) unsigned int sgn_u16(__zp(2) unsigned int w)
|
||||
sgn_u16: {
|
||||
.label w = $19
|
||||
.label return = $e
|
||||
.label w = 2
|
||||
.label return = $10
|
||||
// BYTE1(w)
|
||||
// [114] sgn_u16::$0 = byte1 sgn_u16::w#2 -- vbuaa=_byte1_vwuz1
|
||||
lda.z w+1
|
||||
|
@ -4400,8 +4402,8 @@ sgn_u16: {
|
|||
// Plot a single dot in the bitmap
|
||||
// void bitmap_plot(__zp(6) unsigned int x, __register(X) char y)
|
||||
bitmap_plot: {
|
||||
.label __1 = $1b
|
||||
.label plotter = $19
|
||||
.label __1 = 4
|
||||
.label plotter = 2
|
||||
.label x = 6
|
||||
// MAKEWORD( bitmap_plot_yhi[y], bitmap_plot_ylo[y] )
|
||||
// [121] bitmap_plot::plotter#0 = bitmap_plot_yhi[bitmap_plot::y#4] w= bitmap_plot_ylo[bitmap_plot::y#4] -- vwuz1=pbuc1_derefidx_vbuxx_word_pbuc2_derefidx_vbuxx
|
||||
|
|
|
@ -16,14 +16,14 @@ unsigned int abs_u16(unsigned int w)
|
|||
char abs_u16::$0 // reg byte a 2002.0
|
||||
char abs_u16::$1 // reg byte a 2002.0
|
||||
unsigned int abs_u16::return
|
||||
unsigned int abs_u16::return#0 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:12 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:12 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:12 551.0
|
||||
unsigned int abs_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int abs_u16::return#2 // return zp[2]:14 2002.0
|
||||
unsigned int abs_u16::return#4 // return zp[2]:14 551.0
|
||||
unsigned int abs_u16::w
|
||||
unsigned int abs_u16::w#0 // w zp[2]:12 202.0
|
||||
unsigned int abs_u16::w#1 // w zp[2]:12 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:12 801.25
|
||||
unsigned int abs_u16::w#0 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#1 // w zp[2]:14 202.0
|
||||
unsigned int abs_u16::w#2 // w zp[2]:14 801.25
|
||||
void bitmap_clear(char bgcol , char fgcol)
|
||||
char bitmap_clear::bgcol
|
||||
char bitmap_clear::col
|
||||
|
@ -34,7 +34,7 @@ void bitmap_init(char *gfx , char *screen)
|
|||
char bitmap_init::$4 // reg byte a 202.0
|
||||
char bitmap_init::$5 // reg byte a 202.0
|
||||
char bitmap_init::$6 // reg byte a 202.0
|
||||
char bitmap_init::$7 // zp[1]:20 50.5
|
||||
char bitmap_init::$7 // zp[1]:26 50.5
|
||||
char bitmap_init::bits
|
||||
char bitmap_init::bits#1 // reg byte a 101.0
|
||||
char bitmap_init::bits#3 // reg byte a 151.5
|
||||
|
@ -48,30 +48,30 @@ char bitmap_init::y
|
|||
char bitmap_init::y#1 // reg byte x 151.5
|
||||
char bitmap_init::y#2 // reg byte x 50.5
|
||||
char *bitmap_init::yoffs
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:4 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:4 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:4 101.0
|
||||
char *bitmap_init::yoffs#1 // yoffs zp[2]:12 202.0
|
||||
char *bitmap_init::yoffs#2 // yoffs zp[2]:12 63.125
|
||||
char *bitmap_init::yoffs#4 // yoffs zp[2]:12 101.0
|
||||
void bitmap_line(unsigned int x1 , unsigned int y1 , unsigned int x2 , unsigned int y2)
|
||||
unsigned int bitmap_line::dx
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:21 760.175
|
||||
unsigned int bitmap_line::dx#0 // dx zp[2]:18 760.175
|
||||
unsigned int bitmap_line::dy
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:12 844.6388888888889
|
||||
unsigned int bitmap_line::dy#0 // dy zp[2]:14 844.6388888888889
|
||||
unsigned int bitmap_line::e
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:4 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:4 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:4 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:4 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:4 15001.5
|
||||
unsigned int bitmap_line::e#0 // e zp[2]:12 202.0
|
||||
unsigned int bitmap_line::e#1 // e zp[2]:12 13334.666666666666
|
||||
unsigned int bitmap_line::e#2 // e zp[2]:12 20002.0
|
||||
unsigned int bitmap_line::e#3 // e zp[2]:12 4020.6000000000004
|
||||
unsigned int bitmap_line::e#6 // e zp[2]:12 15001.5
|
||||
unsigned int bitmap_line::e1
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:10 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:10 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:10 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:10 15001.5
|
||||
unsigned int bitmap_line::e1#0 // e1 zp[2]:8 202.0
|
||||
unsigned int bitmap_line::e1#1 // e1 zp[2]:8 13334.666666666666
|
||||
unsigned int bitmap_line::e1#2 // e1 zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::e1#3 // e1 zp[2]:8 4020.6000000000004
|
||||
unsigned int bitmap_line::e1#6 // e1 zp[2]:8 15001.5
|
||||
unsigned int bitmap_line::sx
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:23 670.1
|
||||
unsigned int bitmap_line::sx#0 // sx zp[2]:20 670.1
|
||||
unsigned int bitmap_line::sy
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:14 773.1923076923076
|
||||
unsigned int bitmap_line::sy#0 // sy zp[2]:16 773.1923076923076
|
||||
unsigned int bitmap_line::x
|
||||
unsigned int bitmap_line::x#1 // x zp[2]:6 10001.0
|
||||
unsigned int bitmap_line::x#12 // x zp[2]:6 20002.0
|
||||
|
@ -82,24 +82,24 @@ unsigned int bitmap_line::x#7 // x zp[2]:6 7526.0
|
|||
unsigned int bitmap_line::x1
|
||||
unsigned int bitmap_line::x1#0 // x1 zp[2]:6 19.846153846153847
|
||||
unsigned int bitmap_line::x2
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:16 300.4117647058823
|
||||
unsigned int bitmap_line::x2#0 // x2 zp[2]:22 300.4117647058823
|
||||
unsigned int bitmap_line::y
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:8 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:8 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:8 4300.571428571429
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:8 5025.75
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:8 10001.0
|
||||
unsigned int bitmap_line::y#1 // y zp[2]:10 5714.857142857143
|
||||
unsigned int bitmap_line::y#13 // y zp[2]:10 20002.0
|
||||
unsigned int bitmap_line::y#15 // y zp[2]:10 4300.571428571429
|
||||
unsigned int bitmap_line::y#2 // y zp[2]:10 10001.0
|
||||
unsigned int bitmap_line::y#4 // y zp[2]:10 5025.75
|
||||
unsigned int bitmap_line::y#7 // y zp[2]:10 10001.0
|
||||
unsigned int bitmap_line::y1
|
||||
unsigned int bitmap_line::y1#0 // y1 zp[2]:8 17.291666666666664
|
||||
unsigned int bitmap_line::y1#0 // y1 zp[2]:10 17.291666666666664
|
||||
unsigned int bitmap_line::y2
|
||||
unsigned int bitmap_line::y2#0 // y2 zp[2]:18 319.1875
|
||||
unsigned int bitmap_line::y2#0 // y2 zp[2]:24 319.1875
|
||||
void bitmap_plot(unsigned int x , char y)
|
||||
unsigned int bitmap_plot::$1 // zp[2]:27 200002.0
|
||||
unsigned int bitmap_plot::$1 // zp[2]:4 200002.0
|
||||
char bitmap_plot::$2 // reg byte x 200002.0
|
||||
char *bitmap_plot::plotter
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:25 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:25 150001.5
|
||||
unsigned int bitmap_plot::plotter#0 // plotter zp[2]:2 50000.5
|
||||
char *bitmap_plot::plotter#1 // plotter zp[2]:2 150001.5
|
||||
unsigned int bitmap_plot::x
|
||||
unsigned int bitmap_plot::x#0 // x zp[2]:6 101.0
|
||||
unsigned int bitmap_plot::x#1 // x zp[2]:6 10001.0
|
||||
|
@ -118,13 +118,13 @@ __constant const char bitmap_plot_ylo[$100] = { fill( $100, 0) }
|
|||
char *bitmap_screen
|
||||
void main()
|
||||
unsigned int main::$13 // zp[2]:6 22.0
|
||||
unsigned int main::$14 // zp[2]:16 22.0
|
||||
unsigned int main::$14 // zp[2]:22 22.0
|
||||
char main::a
|
||||
char main::a#1 // a zp[1]:3 11.0
|
||||
char main::a#2 // a zp[1]:3 2.4444444444444446
|
||||
char main::a#1 // a zp[1]:28 11.0
|
||||
char main::a#2 // a zp[1]:28 2.4444444444444446
|
||||
char main::i
|
||||
char main::i#1 // i zp[1]:2 22.0
|
||||
char main::i#2 // i zp[1]:2 3.3000000000000003
|
||||
char main::i#1 // i zp[1]:27 22.0
|
||||
char main::i#2 // i zp[1]:27 3.3000000000000003
|
||||
char *main::toD0181_gfx
|
||||
char main::toD0181_return
|
||||
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)BITMAP/4&$f // toD0181_return
|
||||
|
@ -133,53 +133,53 @@ void * memset(void *str , char c , unsigned int num)
|
|||
char memset::c
|
||||
char memset::c#4 // reg byte x 125.125
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:10 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:10 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:10 202.0
|
||||
char *memset::dst#1 // dst zp[2]:8 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:8 1368.3333333333335
|
||||
char *memset::dst#4 // dst zp[2]:8 202.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:8 183.66666666666669
|
||||
char *memset::end#0 // end zp[2]:10 183.66666666666669
|
||||
unsigned int memset::num
|
||||
unsigned int memset::num#2 // num zp[2]:8 101.0
|
||||
unsigned int memset::num#2 // num zp[2]:10 101.0
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:10
|
||||
void *memset::str#3 // str zp[2]:8
|
||||
unsigned int sgn_u16(unsigned int w)
|
||||
char sgn_u16::$0 // reg byte a 2002.0
|
||||
char sgn_u16::$1 // reg byte a 2002.0
|
||||
unsigned int sgn_u16::return
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:14 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:14 50.5
|
||||
unsigned int sgn_u16::return#0 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#1 // return zp[2]:16 202.0
|
||||
unsigned int sgn_u16::return#4 // return zp[2]:16 50.5
|
||||
unsigned int sgn_u16::w
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:25 202.0
|
||||
unsigned int sgn_u16::w#1 // w zp[2]:25 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:25 1203.0
|
||||
unsigned int sgn_u16::w#0 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#1 // w zp[2]:2 202.0
|
||||
unsigned int sgn_u16::w#2 // w zp[2]:2 1203.0
|
||||
|
||||
zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
zp[1]:3 [ main::a#2 main::a#1 ]
|
||||
zp[1]:27 [ main::i#2 main::i#1 ]
|
||||
zp[1]:28 [ main::a#2 main::a#1 ]
|
||||
reg byte a [ bitmap_init::bits#3 bitmap_init::bits#4 bitmap_init::bits#1 ]
|
||||
reg byte x [ bitmap_init::x#2 bitmap_init::x#1 ]
|
||||
reg byte x [ bitmap_init::y#2 bitmap_init::y#1 ]
|
||||
zp[2]:4 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:12 [ bitmap_line::e#3 bitmap_line::e#0 bitmap_line::e#6 bitmap_line::e#1 bitmap_line::e#2 bitmap_init::yoffs#2 bitmap_init::yoffs#4 bitmap_init::yoffs#1 ]
|
||||
zp[2]:6 [ bitmap_line::x#7 bitmap_line::x#6 bitmap_line::x#15 bitmap_line::x#13 bitmap_line::x1#0 bitmap_line::x#12 bitmap_line::x#1 bitmap_plot::x#4 bitmap_plot::x#2 bitmap_plot::x#0 bitmap_plot::x#1 bitmap_plot::x#3 main::$13 ]
|
||||
zp[2]:8 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:10 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
zp[2]:10 [ memset::num#2 memset::end#0 bitmap_line::y#15 bitmap_line::y#7 bitmap_line::y#13 bitmap_line::y#4 bitmap_line::y1#0 bitmap_line::y#1 bitmap_line::y#2 ]
|
||||
zp[2]:8 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 bitmap_line::e1#3 bitmap_line::e1#6 bitmap_line::e1#0 bitmap_line::e1#2 bitmap_line::e1#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:12 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:14 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
zp[2]:14 [ abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||
zp[2]:16 [ sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||
reg byte x [ bitmap_plot::y#4 bitmap_plot::y#2 bitmap_plot::y#0 bitmap_plot::y#1 bitmap_plot::y#3 ]
|
||||
zp[2]:16 [ main::$14 bitmap_line::x2#0 ]
|
||||
zp[2]:18 [ bitmap_line::y2#0 ]
|
||||
zp[1]:20 [ bitmap_init::$7 ]
|
||||
zp[2]:22 [ main::$14 bitmap_line::x2#0 ]
|
||||
zp[2]:24 [ bitmap_line::y2#0 ]
|
||||
zp[1]:26 [ bitmap_init::$7 ]
|
||||
reg byte a [ bitmap_init::$4 ]
|
||||
reg byte a [ bitmap_init::$5 ]
|
||||
reg byte a [ bitmap_init::$6 ]
|
||||
zp[2]:21 [ bitmap_line::dx#0 ]
|
||||
zp[2]:23 [ bitmap_line::sx#0 ]
|
||||
zp[2]:18 [ bitmap_line::dx#0 ]
|
||||
zp[2]:20 [ bitmap_line::sx#0 ]
|
||||
reg byte a [ abs_u16::$0 ]
|
||||
reg byte a [ abs_u16::$1 ]
|
||||
reg byte a [ sgn_u16::$0 ]
|
||||
reg byte a [ sgn_u16::$1 ]
|
||||
zp[2]:25 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
zp[2]:27 [ bitmap_plot::$1 ]
|
||||
zp[2]:2 [ bitmap_plot::plotter#0 bitmap_plot::plotter#1 sgn_u16::w#2 sgn_u16::w#0 sgn_u16::w#1 ]
|
||||
zp[2]:4 [ bitmap_plot::$1 ]
|
||||
reg byte x [ bitmap_plot::$2 ]
|
||||
|
|
|
@ -48,7 +48,7 @@ main: {
|
|||
jmp __b1
|
||||
}
|
||||
init_screen: {
|
||||
.label b = 6
|
||||
.label b = 2
|
||||
.label c = 4
|
||||
lda #<BITMAP
|
||||
sta.z b
|
||||
|
@ -100,8 +100,8 @@ init_screen: {
|
|||
jmp __b1
|
||||
}
|
||||
init_plot_tables: {
|
||||
.label __9 = 2
|
||||
.label yoffs = 6
|
||||
.label __9 = 7
|
||||
.label yoffs = 2
|
||||
ldy #$80
|
||||
ldx #0
|
||||
__b1:
|
||||
|
@ -186,12 +186,12 @@ plots: {
|
|||
inx
|
||||
jmp __b1
|
||||
}
|
||||
// void plot(__zp(2) char x, __zp(3) char y)
|
||||
// void plot(__zp(7) char x, __zp(6) char y)
|
||||
plot: {
|
||||
.label x = 2
|
||||
.label y = 3
|
||||
.label x = 7
|
||||
.label y = 6
|
||||
.label plotter_x = 4
|
||||
.label plotter_y = 6
|
||||
.label plotter_y = 2
|
||||
.label plotter = 4
|
||||
// BYTE1(plotter_x) = plot_xhi[x]
|
||||
ldy.z x
|
||||
|
|
|
@ -806,32 +806,32 @@ Complete equivalence classes
|
|||
[ plot::plotter_y#2 ]
|
||||
[ plot::plotter#0 ]
|
||||
[ plot::$5 ]
|
||||
Allocated zp[2]:2 [ init_screen::b#2 init_screen::b#1 ]
|
||||
Allocated zp[2]:4 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Allocated zp[1]:6 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
Allocated zp[1]:7 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
Allocated zp[1]:8 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Allocated zp[2]:9 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
|
||||
Allocated zp[1]:11 [ plots::i#2 plots::i#1 ]
|
||||
Allocated zp[1]:12 [ init_plot_tables::$0 ]
|
||||
Allocated zp[1]:13 [ init_plot_tables::$9 ]
|
||||
Allocated zp[1]:14 [ init_plot_tables::$6 ]
|
||||
Allocated zp[1]:15 [ init_plot_tables::$7 ]
|
||||
Allocated zp[1]:16 [ init_plot_tables::$8 ]
|
||||
Allocated zp[1]:17 [ plot::x#0 ]
|
||||
Allocated zp[1]:2 [ plot::$6 ]
|
||||
Allocated zp[1]:3 [ plot::$7 ]
|
||||
Allocated zp[1]:4 [ plot::$8 ]
|
||||
Allocated zp[1]:5 [ plot::$9 ]
|
||||
Allocated zp[2]:6 [ plot::plotter_y#2 ]
|
||||
Allocated zp[1]:8 [ plot::$5 ]
|
||||
Allocated zp[2]:9 [ plot::plotter#0 ]
|
||||
Allocated zp[2]:11 [ plot::plotter_x#1 ]
|
||||
Allocated zp[2]:13 [ plot::plotter_y#1 ]
|
||||
Allocated zp[2]:15 [ plot::plotter_x#2 ]
|
||||
Allocated zp[1]:17 [ plots::i#2 plots::i#1 ]
|
||||
Allocated zp[1]:18 [ plot::y#0 ]
|
||||
Allocated zp[1]:19 [ plot::$6 ]
|
||||
Allocated zp[2]:20 [ plot::plotter_x#1 ]
|
||||
Allocated zp[1]:22 [ plot::$7 ]
|
||||
Allocated zp[2]:23 [ plot::plotter_x#2 ]
|
||||
Allocated zp[1]:25 [ plot::$8 ]
|
||||
Allocated zp[2]:26 [ plot::plotter_y#1 ]
|
||||
Allocated zp[1]:28 [ plot::$9 ]
|
||||
Allocated zp[2]:29 [ plot::plotter_y#2 ]
|
||||
Allocated zp[2]:31 [ plot::plotter#0 ]
|
||||
Allocated zp[1]:33 [ plot::$5 ]
|
||||
Allocated zp[1]:19 [ plot::x#0 ]
|
||||
Allocated zp[2]:20 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ]
|
||||
Allocated zp[2]:22 [ init_screen::b#2 init_screen::b#1 ]
|
||||
Allocated zp[2]:24 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Allocated zp[1]:26 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
Allocated zp[1]:27 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
Allocated zp[1]:28 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Allocated zp[1]:29 [ init_plot_tables::$0 ]
|
||||
Allocated zp[1]:30 [ init_plot_tables::$6 ]
|
||||
Allocated zp[1]:31 [ init_plot_tables::$7 ]
|
||||
Allocated zp[1]:32 [ init_plot_tables::$8 ]
|
||||
Allocated zp[1]:33 [ init_plot_tables::$9 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Equivalence Class zp[1]:14 [ init_plot_tables::$6 ] has ALU potential.
|
||||
Equivalence Class zp[1]:30 [ init_plot_tables::$6 ] has ALU potential.
|
||||
Statement [0] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *FGCOL = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *D011 = BMM|DEN|RSEL|3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -842,20 +842,20 @@ Statement [15] if(init_screen::c#2!=SCREEN+$400) goto init_screen::@4 [ init_scr
|
|||
Statement [17] *init_screen::c#2 = $14 [ init_screen::c#2 ] ( init_screen:4 [ init_screen::c#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [19] *init_screen::b#2 = 0 [ init_screen::b#2 ] ( init_screen:4 [ init_screen::b#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [25] plot_xhi[init_plot_tables::x#2] = byte1 BITMAP [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:27 [ init_plot_tables::x#2 init_plot_tables::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:26 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ]
|
||||
Statement [26] plot_bit[init_plot_tables::x#2] = init_plot_tables::bits#3 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] ( init_plot_tables:6 [ init_plot_tables::x#2 init_plot_tables::bits#3 ] { } ) always clobbers reg byte a
|
||||
Statement [41] init_plot_tables::yoffs#1 = init_plot_tables::yoffs#2 + (unsigned int)$28*8 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] ( init_plot_tables:6 [ init_plot_tables::y#2 init_plot_tables::yoffs#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:28 [ init_plot_tables::y#2 init_plot_tables::y#1 ]
|
||||
Statement [55] plot::plotter_x#1 = (char *) 0 byte1= plot::$6 [ plot::x#0 plot::y#0 plot::plotter_x#1 ] ( plots:9::plot:52 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:11 [ plots::i#2 plots::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:17 [ plot::x#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:17 [ plots::i#2 plots::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:19 [ plot::x#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:18 [ plot::y#0 ]
|
||||
Statement [57] plot::plotter_x#2 = plot::plotter_x#1 byte0= plot::$7 [ plot::x#0 plot::y#0 plot::plotter_x#2 ] ( plots:9::plot:52 [ plots::i#2 plot::x#0 plot::y#0 plot::plotter_x#2 ] { } ) always clobbers reg byte a
|
||||
Statement [61] plot::plotter_y#2 = plot::plotter_y#1 byte0= plot::$9 [ plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] ( plots:9::plot:52 [ plots::i#2 plot::x#0 plot::plotter_x#2 plot::plotter_y#2 ] { } ) always clobbers reg byte a
|
||||
Statement [62] plot::plotter#0 = plot::plotter_x#2 + plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( plots:9::plot:52 [ plots::i#2 plot::x#0 plot::plotter#0 ] { } ) always clobbers reg byte a
|
||||
Statement [63] plot::$5 = *plot::plotter#0 | plot_bit[plot::x#0] [ plot::plotter#0 plot::$5 ] ( plots:9::plot:52 [ plots::i#2 plot::plotter#0 plot::$5 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:11 [ plots::i#2 plots::i#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:17 [ plots::i#2 plots::i#1 ]
|
||||
Statement [64] *plot::plotter#0 = plot::$5 [ ] ( plots:9::plot:52 [ plots::i#2 ] { } ) always clobbers reg byte y
|
||||
Statement [0] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *FGCOL = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -877,72 +877,72 @@ Statement [61] plot::plotter_y#2 = plot::plotter_y#1 byte0= plot::$9 [ plot::x#0
|
|||
Statement [62] plot::plotter#0 = plot::plotter_x#2 + plot::plotter_y#2 [ plot::x#0 plot::plotter#0 ] ( plots:9::plot:52 [ plots::i#2 plot::x#0 plot::plotter#0 ] { } ) always clobbers reg byte a
|
||||
Statement [63] plot::$5 = *plot::plotter#0 | plot_bit[plot::x#0] [ plot::plotter#0 plot::$5 ] ( plots:9::plot:52 [ plots::i#2 plot::plotter#0 plot::$5 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [64] *plot::plotter#0 = plot::$5 [ ] ( plots:9::plot:52 [ plots::i#2 ] { } ) always clobbers reg byte y
|
||||
Potential registers zp[2]:2 [ init_screen::b#2 init_screen::b#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ init_screen::c#2 init_screen::c#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp[1]:7 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ init_plot_tables::y#2 init_plot_tables::y#1 ] : zp[1]:8 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:9 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] : zp[2]:9 ,
|
||||
Potential registers zp[1]:11 [ plots::i#2 plots::i#1 ] : zp[1]:11 , reg byte x ,
|
||||
Potential registers zp[1]:12 [ init_plot_tables::$0 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ init_plot_tables::$9 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:14 [ init_plot_tables::$6 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:15 [ init_plot_tables::$7 ] : zp[1]:15 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:16 [ init_plot_tables::$8 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:17 [ plot::x#0 ] : zp[1]:17 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:22 [ init_screen::b#2 init_screen::b#1 ] : zp[2]:22 ,
|
||||
Potential registers zp[2]:24 [ init_screen::c#2 init_screen::c#1 ] : zp[2]:24 ,
|
||||
Potential registers zp[1]:27 [ init_plot_tables::x#2 init_plot_tables::x#1 ] : zp[1]:27 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:26 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] : zp[1]:26 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:28 [ init_plot_tables::y#2 init_plot_tables::y#1 ] : zp[1]:28 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:20 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] : zp[2]:20 ,
|
||||
Potential registers zp[1]:17 [ plots::i#2 plots::i#1 ] : zp[1]:17 , reg byte x ,
|
||||
Potential registers zp[1]:29 [ init_plot_tables::$0 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:33 [ init_plot_tables::$9 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:30 [ init_plot_tables::$6 ] : zp[1]:30 , reg byte a , reg byte x , reg byte y , reg byte alu ,
|
||||
Potential registers zp[1]:31 [ init_plot_tables::$7 ] : zp[1]:31 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:32 [ init_plot_tables::$8 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:19 [ plot::x#0 ] : zp[1]:19 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:18 [ plot::y#0 ] : zp[1]:18 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:19 [ plot::$6 ] : zp[1]:19 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:20 [ plot::plotter_x#1 ] : zp[2]:20 ,
|
||||
Potential registers zp[1]:22 [ plot::$7 ] : zp[1]:22 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:23 [ plot::plotter_x#2 ] : zp[2]:23 ,
|
||||
Potential registers zp[1]:25 [ plot::$8 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:26 [ plot::plotter_y#1 ] : zp[2]:26 ,
|
||||
Potential registers zp[1]:28 [ plot::$9 ] : zp[1]:28 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:29 [ plot::plotter_y#2 ] : zp[2]:29 ,
|
||||
Potential registers zp[2]:31 [ plot::plotter#0 ] : zp[2]:31 ,
|
||||
Potential registers zp[1]:33 [ plot::$5 ] : zp[1]:33 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ plot::$6 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:11 [ plot::plotter_x#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[1]:3 [ plot::$7 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:15 [ plot::plotter_x#2 ] : zp[2]:15 ,
|
||||
Potential registers zp[1]:4 [ plot::$8 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:13 [ plot::plotter_y#1 ] : zp[2]:13 ,
|
||||
Potential registers zp[1]:5 [ plot::$9 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:6 [ plot::plotter_y#2 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:9 [ plot::plotter#0 ] : zp[2]:9 ,
|
||||
Potential registers zp[1]:8 [ plot::$5 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 200,002: zp[1]:19 [ plot::$6 ] 200,002: zp[1]:22 [ plot::$7 ] 200,002: zp[1]:25 [ plot::$8 ] 200,002: zp[1]:28 [ plot::$9 ] 200,002: zp[2]:29 [ plot::plotter_y#2 ] 200,002: zp[1]:33 [ plot::$5 ] 150,001.5: zp[2]:31 [ plot::plotter#0 ] 100,001: zp[2]:20 [ plot::plotter_x#1 ] 100,001: zp[2]:26 [ plot::plotter_y#1 ] 40,000.4: zp[2]:23 [ plot::plotter_x#2 ] 30,000.43: zp[1]:18 [ plot::y#0 ] 28,182.18: zp[1]:17 [ plot::x#0 ]
|
||||
Uplift Scope [plots] 30,003: zp[1]:11 [ plots::i#2 plots::i#1 ]
|
||||
Uplift Scope [init_plot_tables] 366.12: zp[2]:9 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 228.93: zp[1]:7 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 218.83: zp[1]:6 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 202: zp[1]:8 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 202: zp[1]:12 [ init_plot_tables::$0 ] 202: zp[1]:14 [ init_plot_tables::$6 ] 202: zp[1]:15 [ init_plot_tables::$7 ] 202: zp[1]:16 [ init_plot_tables::$8 ] 50.5: zp[1]:13 [ init_plot_tables::$9 ]
|
||||
Uplift Scope [init_screen] 336.67: zp[2]:2 [ init_screen::b#2 init_screen::b#1 ] 336.67: zp[2]:4 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift Scope [plot] 200,002: zp[1]:2 [ plot::$6 ] 200,002: zp[1]:3 [ plot::$7 ] 200,002: zp[1]:4 [ plot::$8 ] 200,002: zp[1]:5 [ plot::$9 ] 200,002: zp[2]:6 [ plot::plotter_y#2 ] 200,002: zp[1]:8 [ plot::$5 ] 150,001.5: zp[2]:9 [ plot::plotter#0 ] 100,001: zp[2]:11 [ plot::plotter_x#1 ] 100,001: zp[2]:13 [ plot::plotter_y#1 ] 40,000.4: zp[2]:15 [ plot::plotter_x#2 ] 30,000.43: zp[1]:18 [ plot::y#0 ] 28,182.18: zp[1]:19 [ plot::x#0 ]
|
||||
Uplift Scope [plots] 30,003: zp[1]:17 [ plots::i#2 plots::i#1 ]
|
||||
Uplift Scope [init_plot_tables] 366.12: zp[2]:20 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] 228.93: zp[1]:26 [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] 218.83: zp[1]:27 [ init_plot_tables::x#2 init_plot_tables::x#1 ] 202: zp[1]:28 [ init_plot_tables::y#2 init_plot_tables::y#1 ] 202: zp[1]:29 [ init_plot_tables::$0 ] 202: zp[1]:30 [ init_plot_tables::$6 ] 202: zp[1]:31 [ init_plot_tables::$7 ] 202: zp[1]:32 [ init_plot_tables::$8 ] 50.5: zp[1]:33 [ init_plot_tables::$9 ]
|
||||
Uplift Scope [init_screen] 336.67: zp[2]:22 [ init_screen::b#2 init_screen::b#1 ] 336.67: zp[2]:24 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 10319 combination reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp[2]:29 [ plot::plotter_y#2 ] zp[1]:33 [ plot::$5 ] zp[2]:31 [ plot::plotter#0 ] zp[2]:20 [ plot::plotter_x#1 ] zp[2]:26 [ plot::plotter_y#1 ] zp[2]:23 [ plot::plotter_x#2 ] zp[1]:18 [ plot::y#0 ] zp[1]:17 [ plot::x#0 ]
|
||||
Uplifting [plot] best 10319 combination reg byte a [ plot::$6 ] reg byte a [ plot::$7 ] reg byte a [ plot::$8 ] reg byte a [ plot::$9 ] zp[2]:6 [ plot::plotter_y#2 ] zp[1]:8 [ plot::$5 ] zp[2]:9 [ plot::plotter#0 ] zp[2]:11 [ plot::plotter_x#1 ] zp[2]:13 [ plot::plotter_y#1 ] zp[2]:15 [ plot::plotter_x#2 ] zp[1]:18 [ plot::y#0 ] zp[1]:19 [ plot::x#0 ]
|
||||
Limited combination testing to 100 combinations of 9216 possible.
|
||||
Uplifting [plots] best 8819 combination reg byte x [ plots::i#2 plots::i#1 ]
|
||||
Uplifting [init_plot_tables] best 8359 combination zp[2]:9 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp[1]:14 [ init_plot_tables::$6 ] zp[1]:15 [ init_plot_tables::$7 ] zp[1]:16 [ init_plot_tables::$8 ] zp[1]:13 [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8359 combination zp[2]:20 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] reg byte y [ init_plot_tables::bits#3 init_plot_tables::bits#4 init_plot_tables::bits#1 ] reg byte x [ init_plot_tables::x#2 init_plot_tables::x#1 ] reg byte x [ init_plot_tables::y#2 init_plot_tables::y#1 ] reg byte a [ init_plot_tables::$0 ] zp[1]:30 [ init_plot_tables::$6 ] zp[1]:31 [ init_plot_tables::$7 ] zp[1]:32 [ init_plot_tables::$8 ] zp[1]:33 [ init_plot_tables::$9 ]
|
||||
Limited combination testing to 100 combinations of 34560 possible.
|
||||
Uplifting [init_screen] best 8359 combination zp[2]:2 [ init_screen::b#2 init_screen::b#1 ] zp[2]:4 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [init_screen] best 8359 combination zp[2]:22 [ init_screen::b#2 init_screen::b#1 ] zp[2]:24 [ init_screen::c#2 init_screen::c#1 ]
|
||||
Uplifting [main] best 8359 combination
|
||||
Uplifting [] best 8359 combination
|
||||
Attempting to uplift remaining variables inzp[1]:33 [ plot::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ plot::$5 ]
|
||||
Uplifting [plot] best 8353 combination reg byte a [ plot::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:18 [ plot::y#0 ]
|
||||
Uplifting [plot] best 8353 combination zp[1]:18 [ plot::y#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:17 [ plot::x#0 ]
|
||||
Uplifting [plot] best 8353 combination zp[1]:17 [ plot::x#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:14 [ init_plot_tables::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:19 [ plot::x#0 ]
|
||||
Uplifting [plot] best 8353 combination zp[1]:19 [ plot::x#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:30 [ init_plot_tables::$6 ]
|
||||
Uplifting [init_plot_tables] best 8293 combination reg byte a [ init_plot_tables::$6 ]
|
||||
Attempting to uplift remaining variables inzp[1]:15 [ init_plot_tables::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:31 [ init_plot_tables::$7 ]
|
||||
Uplifting [init_plot_tables] best 8233 combination reg byte a [ init_plot_tables::$7 ]
|
||||
Attempting to uplift remaining variables inzp[1]:16 [ init_plot_tables::$8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:32 [ init_plot_tables::$8 ]
|
||||
Uplifting [init_plot_tables] best 8173 combination reg byte a [ init_plot_tables::$8 ]
|
||||
Attempting to uplift remaining variables inzp[1]:13 [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8173 combination zp[1]:13 [ init_plot_tables::$9 ]
|
||||
Coalescing zero page register [ zp[2]:20 [ plot::plotter_x#1 ] ] with [ zp[2]:23 [ plot::plotter_x#2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:26 [ plot::plotter_y#1 ] ] with [ zp[2]:29 [ plot::plotter_y#2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp[2]:31 [ plot::plotter#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:9 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp[2]:2 [ init_screen::b#2 init_screen::b#1 ] ]
|
||||
Coalescing zero page register [ zp[1]:17 [ plot::x#0 ] ] with [ zp[1]:13 [ init_plot_tables::$9 ] ]
|
||||
Coalescing zero page register [ zp[2]:20 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] ] with [ zp[2]:4 [ init_screen::c#2 init_screen::c#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:26 [ plot::plotter_y#1 plot::plotter_y#2 ] ] with [ zp[2]:9 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ]
|
||||
Allocated (was zp[1]:17) zp[1]:2 [ plot::x#0 init_plot_tables::$9 ]
|
||||
Allocated (was zp[1]:18) zp[1]:3 [ plot::y#0 ]
|
||||
Allocated (was zp[2]:20) zp[2]:4 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 init_screen::c#2 init_screen::c#1 ]
|
||||
Allocated (was zp[2]:26) zp[2]:6 [ plot::plotter_y#1 plot::plotter_y#2 init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:33 [ init_plot_tables::$9 ]
|
||||
Uplifting [init_plot_tables] best 8173 combination zp[1]:33 [ init_plot_tables::$9 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ plot::plotter_x#1 ] ] with [ zp[2]:15 [ plot::plotter_x#2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:13 [ plot::plotter_y#1 ] ] with [ zp[2]:6 [ plot::plotter_y#2 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:11 [ plot::plotter_x#1 plot::plotter_x#2 ] ] with [ zp[2]:9 [ plot::plotter#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:20 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 ] ] with [ zp[2]:22 [ init_screen::b#2 init_screen::b#1 ] ]
|
||||
Coalescing zero page register [ zp[1]:19 [ plot::x#0 ] ] with [ zp[1]:33 [ init_plot_tables::$9 ] ]
|
||||
Coalescing zero page register [ zp[2]:11 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 ] ] with [ zp[2]:24 [ init_screen::c#2 init_screen::c#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:13 [ plot::plotter_y#1 plot::plotter_y#2 ] ] with [ zp[2]:20 [ init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ] ]
|
||||
Allocated (was zp[2]:13) zp[2]:2 [ plot::plotter_y#1 plot::plotter_y#2 init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ]
|
||||
Allocated (was zp[2]:11) zp[2]:4 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 init_screen::c#2 init_screen::c#1 ]
|
||||
Allocated (was zp[1]:18) zp[1]:6 [ plot::y#0 ]
|
||||
Allocated (was zp[1]:19) zp[1]:7 [ plot::x#0 init_plot_tables::$9 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -1020,7 +1020,7 @@ main: {
|
|||
}
|
||||
// init_screen
|
||||
init_screen: {
|
||||
.label b = 6
|
||||
.label b = 2
|
||||
.label c = 4
|
||||
// [12] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
|
||||
__b1_from_init_screen:
|
||||
|
@ -1094,8 +1094,8 @@ init_screen: {
|
|||
}
|
||||
// init_plot_tables
|
||||
init_plot_tables: {
|
||||
.label __9 = 2
|
||||
.label yoffs = 6
|
||||
.label __9 = 7
|
||||
.label yoffs = 2
|
||||
// [22] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1]
|
||||
__b1_from_init_plot_tables:
|
||||
// [22] phi init_plot_tables::bits#3 = $80 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1
|
||||
|
@ -1250,12 +1250,12 @@ plots: {
|
|||
jmp __b1
|
||||
}
|
||||
// plot
|
||||
// void plot(__zp(2) char x, __zp(3) char y)
|
||||
// void plot(__zp(7) char x, __zp(6) char y)
|
||||
plot: {
|
||||
.label x = 2
|
||||
.label y = 3
|
||||
.label x = 7
|
||||
.label y = 6
|
||||
.label plotter_x = 4
|
||||
.label plotter_y = 6
|
||||
.label plotter_y = 2
|
||||
.label plotter = 4
|
||||
// [54] plot::$6 = plot_xhi[plot::x#0] -- vbuaa=pbuc1_derefidx_vbuz1
|
||||
ldy.z x
|
||||
|
@ -1396,7 +1396,7 @@ char init_plot_tables::$0 // reg byte a 202.0
|
|||
char init_plot_tables::$6 // reg byte a 202.0
|
||||
char init_plot_tables::$7 // reg byte a 202.0
|
||||
char init_plot_tables::$8 // reg byte a 202.0
|
||||
char init_plot_tables::$9 // zp[1]:2 50.5
|
||||
char init_plot_tables::$9 // zp[1]:7 50.5
|
||||
char init_plot_tables::bits
|
||||
char init_plot_tables::bits#1 // reg byte y 101.0
|
||||
char init_plot_tables::bits#3 // reg byte y 60.599999999999994
|
||||
|
@ -1408,13 +1408,13 @@ char init_plot_tables::y
|
|||
char init_plot_tables::y#1 // reg byte x 151.5
|
||||
char init_plot_tables::y#2 // reg byte x 50.5
|
||||
char *init_plot_tables::yoffs
|
||||
char *init_plot_tables::yoffs#1 // yoffs zp[2]:6 202.0
|
||||
char *init_plot_tables::yoffs#2 // yoffs zp[2]:6 63.125
|
||||
char *init_plot_tables::yoffs#4 // yoffs zp[2]:6 101.0
|
||||
char *init_plot_tables::yoffs#1 // yoffs zp[2]:2 202.0
|
||||
char *init_plot_tables::yoffs#2 // yoffs zp[2]:2 63.125
|
||||
char *init_plot_tables::yoffs#4 // yoffs zp[2]:2 101.0
|
||||
void init_screen()
|
||||
char *init_screen::b
|
||||
char *init_screen::b#1 // b zp[2]:6 202.0
|
||||
char *init_screen::b#2 // b zp[2]:6 134.66666666666666
|
||||
char *init_screen::b#1 // b zp[2]:2 202.0
|
||||
char *init_screen::b#2 // b zp[2]:2 134.66666666666666
|
||||
char *init_screen::c
|
||||
char *init_screen::c#1 // c zp[2]:4 202.0
|
||||
char *init_screen::c#2 // c zp[2]:4 134.66666666666666
|
||||
|
@ -1431,12 +1431,12 @@ char *plot::plotter_x
|
|||
char *plot::plotter_x#1 // plotter_x zp[2]:4 100001.0
|
||||
char *plot::plotter_x#2 // plotter_x zp[2]:4 40000.4
|
||||
unsigned int plot::plotter_y
|
||||
unsigned int plot::plotter_y#1 // plotter_y zp[2]:6 100001.0
|
||||
unsigned int plot::plotter_y#2 // plotter_y zp[2]:6 200002.0
|
||||
unsigned int plot::plotter_y#1 // plotter_y zp[2]:2 100001.0
|
||||
unsigned int plot::plotter_y#2 // plotter_y zp[2]:2 200002.0
|
||||
char plot::x
|
||||
char plot::x#0 // x zp[1]:2 28182.181818181816
|
||||
char plot::x#0 // x zp[1]:7 28182.181818181816
|
||||
char plot::y
|
||||
char plot::y#0 // y zp[1]:3 30000.428571428572
|
||||
char plot::y#0 // y zp[1]:6 30000.428571428572
|
||||
__constant const char plot_bit[$100] = { fill( $100, 0) }
|
||||
__constant const char plot_xhi[$100] = { fill( $100, 0) }
|
||||
__constant const char plot_xlo[$100] = { fill( $100, 0) }
|
||||
|
@ -1458,13 +1458,13 @@ reg byte a [ init_plot_tables::$0 ]
|
|||
reg byte a [ init_plot_tables::$6 ]
|
||||
reg byte a [ init_plot_tables::$7 ]
|
||||
reg byte a [ init_plot_tables::$8 ]
|
||||
zp[1]:2 [ plot::x#0 init_plot_tables::$9 ]
|
||||
zp[1]:3 [ plot::y#0 ]
|
||||
zp[1]:7 [ plot::x#0 init_plot_tables::$9 ]
|
||||
zp[1]:6 [ plot::y#0 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
zp[2]:4 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 init_screen::c#2 init_screen::c#1 ]
|
||||
reg byte a [ plot::$7 ]
|
||||
reg byte a [ plot::$8 ]
|
||||
zp[2]:6 [ plot::plotter_y#1 plot::plotter_y#2 init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ]
|
||||
zp[2]:2 [ plot::plotter_y#1 plot::plotter_y#2 init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
|
||||
|
@ -1545,7 +1545,7 @@ main: {
|
|||
}
|
||||
// init_screen
|
||||
init_screen: {
|
||||
.label b = 6
|
||||
.label b = 2
|
||||
.label c = 4
|
||||
// [12] phi from init_screen to init_screen::@1 [phi:init_screen->init_screen::@1]
|
||||
// [12] phi init_screen::b#2 = BITMAP [phi:init_screen->init_screen::@1#0] -- pbuz1=pbuc1
|
||||
|
@ -1618,8 +1618,8 @@ init_screen: {
|
|||
}
|
||||
// init_plot_tables
|
||||
init_plot_tables: {
|
||||
.label __9 = 2
|
||||
.label yoffs = 6
|
||||
.label __9 = 7
|
||||
.label yoffs = 2
|
||||
// [22] phi from init_plot_tables to init_plot_tables::@1 [phi:init_plot_tables->init_plot_tables::@1]
|
||||
// [22] phi init_plot_tables::bits#3 = $80 [phi:init_plot_tables->init_plot_tables::@1#0] -- vbuyy=vbuc1
|
||||
ldy #$80
|
||||
|
@ -1765,12 +1765,12 @@ plots: {
|
|||
jmp __b1
|
||||
}
|
||||
// plot
|
||||
// void plot(__zp(2) char x, __zp(3) char y)
|
||||
// void plot(__zp(7) char x, __zp(6) char y)
|
||||
plot: {
|
||||
.label x = 2
|
||||
.label y = 3
|
||||
.label x = 7
|
||||
.label y = 6
|
||||
.label plotter_x = 4
|
||||
.label plotter_y = 6
|
||||
.label plotter_y = 2
|
||||
.label plotter = 4
|
||||
// BYTE1(plotter_x) = plot_xhi[x]
|
||||
// [54] plot::$6 = plot_xhi[plot::x#0] -- vbuaa=pbuc1_derefidx_vbuz1
|
||||
|
|
|
@ -13,7 +13,7 @@ char init_plot_tables::$0 // reg byte a 202.0
|
|||
char init_plot_tables::$6 // reg byte a 202.0
|
||||
char init_plot_tables::$7 // reg byte a 202.0
|
||||
char init_plot_tables::$8 // reg byte a 202.0
|
||||
char init_plot_tables::$9 // zp[1]:2 50.5
|
||||
char init_plot_tables::$9 // zp[1]:7 50.5
|
||||
char init_plot_tables::bits
|
||||
char init_plot_tables::bits#1 // reg byte y 101.0
|
||||
char init_plot_tables::bits#3 // reg byte y 60.599999999999994
|
||||
|
@ -25,13 +25,13 @@ char init_plot_tables::y
|
|||
char init_plot_tables::y#1 // reg byte x 151.5
|
||||
char init_plot_tables::y#2 // reg byte x 50.5
|
||||
char *init_plot_tables::yoffs
|
||||
char *init_plot_tables::yoffs#1 // yoffs zp[2]:6 202.0
|
||||
char *init_plot_tables::yoffs#2 // yoffs zp[2]:6 63.125
|
||||
char *init_plot_tables::yoffs#4 // yoffs zp[2]:6 101.0
|
||||
char *init_plot_tables::yoffs#1 // yoffs zp[2]:2 202.0
|
||||
char *init_plot_tables::yoffs#2 // yoffs zp[2]:2 63.125
|
||||
char *init_plot_tables::yoffs#4 // yoffs zp[2]:2 101.0
|
||||
void init_screen()
|
||||
char *init_screen::b
|
||||
char *init_screen::b#1 // b zp[2]:6 202.0
|
||||
char *init_screen::b#2 // b zp[2]:6 134.66666666666666
|
||||
char *init_screen::b#1 // b zp[2]:2 202.0
|
||||
char *init_screen::b#2 // b zp[2]:2 134.66666666666666
|
||||
char *init_screen::c
|
||||
char *init_screen::c#1 // c zp[2]:4 202.0
|
||||
char *init_screen::c#2 // c zp[2]:4 134.66666666666666
|
||||
|
@ -48,12 +48,12 @@ char *plot::plotter_x
|
|||
char *plot::plotter_x#1 // plotter_x zp[2]:4 100001.0
|
||||
char *plot::plotter_x#2 // plotter_x zp[2]:4 40000.4
|
||||
unsigned int plot::plotter_y
|
||||
unsigned int plot::plotter_y#1 // plotter_y zp[2]:6 100001.0
|
||||
unsigned int plot::plotter_y#2 // plotter_y zp[2]:6 200002.0
|
||||
unsigned int plot::plotter_y#1 // plotter_y zp[2]:2 100001.0
|
||||
unsigned int plot::plotter_y#2 // plotter_y zp[2]:2 200002.0
|
||||
char plot::x
|
||||
char plot::x#0 // x zp[1]:2 28182.181818181816
|
||||
char plot::x#0 // x zp[1]:7 28182.181818181816
|
||||
char plot::y
|
||||
char plot::y#0 // y zp[1]:3 30000.428571428572
|
||||
char plot::y#0 // y zp[1]:6 30000.428571428572
|
||||
__constant const char plot_bit[$100] = { fill( $100, 0) }
|
||||
__constant const char plot_xhi[$100] = { fill( $100, 0) }
|
||||
__constant const char plot_xlo[$100] = { fill( $100, 0) }
|
||||
|
@ -75,12 +75,12 @@ reg byte a [ init_plot_tables::$0 ]
|
|||
reg byte a [ init_plot_tables::$6 ]
|
||||
reg byte a [ init_plot_tables::$7 ]
|
||||
reg byte a [ init_plot_tables::$8 ]
|
||||
zp[1]:2 [ plot::x#0 init_plot_tables::$9 ]
|
||||
zp[1]:3 [ plot::y#0 ]
|
||||
zp[1]:7 [ plot::x#0 init_plot_tables::$9 ]
|
||||
zp[1]:6 [ plot::y#0 ]
|
||||
reg byte a [ plot::$6 ]
|
||||
zp[2]:4 [ plot::plotter_x#1 plot::plotter_x#2 plot::plotter#0 init_screen::c#2 init_screen::c#1 ]
|
||||
reg byte a [ plot::$7 ]
|
||||
reg byte a [ plot::$8 ]
|
||||
zp[2]:6 [ plot::plotter_y#1 plot::plotter_y#2 init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ]
|
||||
zp[2]:2 [ plot::plotter_y#1 plot::plotter_y#2 init_plot_tables::yoffs#2 init_plot_tables::yoffs#4 init_plot_tables::yoffs#1 init_screen::b#2 init_screen::b#1 ]
|
||||
reg byte a [ plot::$9 ]
|
||||
reg byte a [ plot::$5 ]
|
||||
|
|
|
@ -195,17 +195,17 @@ Initial phi equivalence classes
|
|||
Complete equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
[ main::pos#2 main::pos#1 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::pos#2 main::pos#1 ]
|
||||
Allocated zp[1]:2 [ main::pos#2 main::pos#1 ]
|
||||
Allocated zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [5] main::pos#1 = main::pos#2 + main::move [ main::i#2 main::pos#1 ] ( [ main::i#2 main::pos#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Statement [5] main::pos#1 = main::pos#2 + main::move [ main::i#2 main::pos#1 ] ( [ main::i#2 main::pos#1 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::pos#2 main::pos#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::pos#2 main::pos#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 303: zp[1]:3 [ main::pos#2 main::pos#1 ] 26.71: zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [main] 303: zp[1]:2 [ main::pos#2 main::pos#1 ] 26.71: zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 2911 combination reg byte a [ main::pos#2 main::pos#1 ] reg byte x [ main::i#2 main::i#1 ]
|
||||
|
|
|
@ -238,22 +238,22 @@ Complete equivalence classes
|
|||
[ isSet::$0 ]
|
||||
[ isSet::$1 ]
|
||||
[ isSet::return#1 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::$0 ]
|
||||
Allocated zp[1]:4 [ isSet::b#0 ]
|
||||
Allocated zp[1]:5 [ isSet::i#0 ]
|
||||
Allocated zp[1]:6 [ isSet::return#0 ]
|
||||
Allocated zp[1]:7 [ main::$2 ]
|
||||
Allocated zp[1]:8 [ isSet::$0 ]
|
||||
Allocated zp[1]:9 [ isSet::$1 ]
|
||||
Allocated zp[1]:10 [ isSet::return#1 ]
|
||||
Allocated zp[1]:2 [ isSet::$0 ]
|
||||
Allocated zp[1]:3 [ isSet::$1 ]
|
||||
Allocated zp[1]:4 [ isSet::i#0 ]
|
||||
Allocated zp[1]:5 [ isSet::return#1 ]
|
||||
Allocated zp[1]:6 [ isSet::b#0 ]
|
||||
Allocated zp[1]:7 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:8 [ main::$0 ]
|
||||
Allocated zp[1]:9 [ isSet::return#0 ]
|
||||
Allocated zp[1]:10 [ main::$2 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] isSet::b#0 = main::$0 == 0 [ main::i#2 isSet::b#0 ] ( [ main::i#2 isSet::b#0 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::i#2 main::i#1 ]
|
||||
Statement [9] main::screen[main::i#2] = ' ' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [13] main::screen[main::i#2] = '*' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [15] isSet::$1 = isSet::$0 != 0 [ isSet::b#0 isSet::$1 ] ( isSet:5 [ main::i#2 isSet::b#0 isSet::$1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ isSet::b#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ isSet::b#0 ]
|
||||
Statement [16] isSet::return#1 = isSet::b#0 || isSet::$1 [ isSet::return#1 ] ( isSet:5 [ main::i#2 isSet::return#1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
Statement [2] main::$0 = main::i#2 & 1 [ main::i#2 main::$0 ] ( [ main::i#2 main::$0 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
Statement [3] isSet::b#0 = main::$0 == 0 [ main::i#2 isSet::b#0 ] ( [ main::i#2 isSet::b#0 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
|
@ -261,28 +261,28 @@ Statement [9] main::screen[main::i#2] = ' ' [ main::i#2 ] ( [ main::i#2 ] { }
|
|||
Statement [13] main::screen[main::i#2] = '*' [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [15] isSet::$1 = isSet::$0 != 0 [ isSet::b#0 isSet::$1 ] ( isSet:5 [ main::i#2 isSet::b#0 isSet::$1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
Statement [16] isSet::return#1 = isSet::b#0 || isSet::$1 [ isSet::return#1 ] ( isSet:5 [ main::i#2 isSet::return#1 ] { { isSet::i#0 = main::i#2 } { isSet::return#0 = isSet::return#1 } } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ isSet::b#0 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ isSet::i#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ isSet::return#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ main::$2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ isSet::$0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ isSet::$1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ isSet::return#1 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ main::i#2 main::i#1 ] : zp[1]:7 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ main::$0 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ isSet::b#0 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ isSet::i#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ isSet::return#0 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ main::$2 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ isSet::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ isSet::$1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ isSet::return#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [isSet] 202: zp[1]:8 [ isSet::$0 ] 202: zp[1]:9 [ isSet::$1 ] 112: zp[1]:5 [ isSet::i#0 ] 37.33: zp[1]:10 [ isSet::return#1 ] 28: zp[1]:4 [ isSet::b#0 ] 22: zp[1]:6 [ isSet::return#0 ]
|
||||
Uplift Scope [main] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] 22: zp[1]:7 [ main::$2 ]
|
||||
Uplift Scope [isSet] 202: zp[1]:2 [ isSet::$0 ] 202: zp[1]:3 [ isSet::$1 ] 112: zp[1]:4 [ isSet::i#0 ] 37.33: zp[1]:5 [ isSet::return#1 ] 28: zp[1]:6 [ isSet::b#0 ] 22: zp[1]:9 [ isSet::return#0 ]
|
||||
Uplift Scope [main] 23.1: zp[1]:7 [ main::i#2 main::i#1 ] 22: zp[1]:8 [ main::$0 ] 22: zp[1]:10 [ main::$2 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [isSet] best 1091 combination reg byte a [ isSet::$0 ] reg byte a [ isSet::$1 ] reg byte a [ isSet::i#0 ] reg byte a [ isSet::return#1 ] zp[1]:4 [ isSet::b#0 ] zp[1]:6 [ isSet::return#0 ]
|
||||
Uplifting [isSet] best 1091 combination reg byte a [ isSet::$0 ] reg byte a [ isSet::$1 ] reg byte a [ isSet::i#0 ] reg byte a [ isSet::return#1 ] zp[1]:6 [ isSet::b#0 ] zp[1]:9 [ isSet::return#0 ]
|
||||
Limited combination testing to 100 combinations of 3072 possible.
|
||||
Uplifting [main] best 801 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::$2 ]
|
||||
Uplifting [] best 801 combination
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ isSet::b#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ isSet::b#0 ]
|
||||
Uplifting [isSet] best 794 combination reg byte y [ isSet::b#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ isSet::return#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ isSet::return#0 ]
|
||||
Uplifting [isSet] best 734 combination reg byte a [ isSet::return#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
|
|
|
@ -181,15 +181,15 @@ Complete equivalence classes
|
|||
[ main::c#0 ]
|
||||
[ main::$0 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::c#0 ]
|
||||
Allocated zp[1]:4 [ main::$0 ]
|
||||
Allocated zp[1]:3 [ main::$0 ]
|
||||
Allocated zp[1]:4 [ main::c#0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::c#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::$0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::c#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::$0 ] 11: zp[1]:3 [ main::c#0 ]
|
||||
Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::$0 ] 11: zp[1]:4 [ main::c#0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 446 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$0 ] reg byte a [ main::c#0 ]
|
||||
|
|
|
@ -179,15 +179,15 @@ Complete equivalence classes
|
|||
[ main::c#0 ]
|
||||
[ main::b#0 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::c#0 ]
|
||||
Allocated zp[1]:4 [ main::b#0 ]
|
||||
Allocated zp[1]:3 [ main::b#0 ]
|
||||
Allocated zp[1]:4 [ main::c#0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::c#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::b#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::c#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::b#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::b#0 ] 11: zp[1]:3 [ main::c#0 ]
|
||||
Uplift Scope [main] 23.83: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:3 [ main::b#0 ] 11: zp[1]:4 [ main::c#0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 446 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::b#0 ] reg byte a [ main::c#0 ]
|
||||
|
|
|
@ -608,12 +608,12 @@ Allocated zp[1]:2 [ bool_and::i#2 bool_and::i#1 ]
|
|||
Allocated zp[1]:3 [ bool_or::i#2 bool_or::i#1 ]
|
||||
Allocated zp[1]:4 [ bool_not::i#2 bool_not::i#1 ]
|
||||
Allocated zp[1]:5 [ bool_complex::i#2 bool_complex::i#1 ]
|
||||
Allocated zp[1]:6 [ bool_and::$1 ]
|
||||
Allocated zp[1]:7 [ bool_or::$1 ]
|
||||
Allocated zp[1]:8 [ bool_not::$1 ]
|
||||
Allocated zp[1]:9 [ bool_complex::o1#0 ]
|
||||
Allocated zp[1]:10 [ bool_complex::$1 ]
|
||||
Allocated zp[1]:11 [ bool_complex::o2#0 ]
|
||||
Allocated zp[1]:6 [ bool_complex::$1 ]
|
||||
Allocated zp[1]:7 [ bool_and::$1 ]
|
||||
Allocated zp[1]:8 [ bool_or::$1 ]
|
||||
Allocated zp[1]:9 [ bool_not::$1 ]
|
||||
Allocated zp[1]:10 [ bool_complex::o2#0 ]
|
||||
Allocated zp[1]:11 [ bool_complex::o1#0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [14] bool_and::screen[bool_and::i#2] = ' ' [ bool_and::i#2 ] ( bool_and:1 [ bool_and::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ bool_and::i#2 bool_and::i#1 ]
|
||||
|
@ -627,7 +627,7 @@ Statement [38] bool_not::screen[bool_not::i#2] = ' ' [ bool_not::i#2 ] ( bool_no
|
|||
Statement [41] bool_complex::o1#0 = bool_complex::i#2 < $a [ bool_complex::i#2 bool_complex::o1#0 ] ( bool_complex:7 [ bool_complex::i#2 bool_complex::o1#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ bool_complex::i#2 bool_complex::i#1 ]
|
||||
Statement [42] bool_complex::$1 = bool_complex::i#2 & 1 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] ( bool_complex:7 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::$1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ bool_complex::o1#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:11 [ bool_complex::o1#0 ]
|
||||
Statement [43] bool_complex::o2#0 = bool_complex::$1 == 0 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] ( bool_complex:7 [ bool_complex::i#2 bool_complex::o1#0 bool_complex::o2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [48] bool_complex::screen[bool_complex::i#2] = '*' [ bool_complex::i#2 ] ( bool_complex:7 [ bool_complex::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [52] bool_complex::screen[bool_complex::i#2] = ' ' [ bool_complex::i#2 ] ( bool_complex:7 [ bool_complex::i#2 ] { } ) always clobbers reg byte a
|
||||
|
@ -649,18 +649,18 @@ Potential registers zp[1]:2 [ bool_and::i#2 bool_and::i#1 ] : zp[1]:2 , reg byte
|
|||
Potential registers zp[1]:3 [ bool_or::i#2 bool_or::i#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ bool_not::i#2 bool_not::i#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ bool_complex::i#2 bool_complex::i#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ bool_and::$1 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ bool_or::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ bool_not::$1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ bool_complex::o1#0 ] : zp[1]:9 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ bool_complex::$1 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ bool_complex::o2#0 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ bool_and::$1 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ bool_or::$1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ bool_not::$1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ bool_complex::o1#0 ] : zp[1]:11 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ bool_complex::$1 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ bool_complex::o2#0 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [bool_complex] 212.1: zp[1]:5 [ bool_complex::i#2 bool_complex::i#1 ] 202: zp[1]:10 [ bool_complex::$1 ] 75.75: zp[1]:11 [ bool_complex::o2#0 ] 60.6: zp[1]:9 [ bool_complex::o1#0 ]
|
||||
Uplift Scope [bool_and] 252.5: zp[1]:2 [ bool_and::i#2 bool_and::i#1 ] 101: zp[1]:6 [ bool_and::$1 ]
|
||||
Uplift Scope [bool_or] 252.5: zp[1]:3 [ bool_or::i#2 bool_or::i#1 ] 101: zp[1]:7 [ bool_or::$1 ]
|
||||
Uplift Scope [bool_not] 252.5: zp[1]:4 [ bool_not::i#2 bool_not::i#1 ] 101: zp[1]:8 [ bool_not::$1 ]
|
||||
Uplift Scope [bool_complex] 212.1: zp[1]:5 [ bool_complex::i#2 bool_complex::i#1 ] 202: zp[1]:6 [ bool_complex::$1 ] 75.75: zp[1]:10 [ bool_complex::o2#0 ] 60.6: zp[1]:11 [ bool_complex::o1#0 ]
|
||||
Uplift Scope [bool_and] 252.5: zp[1]:2 [ bool_and::i#2 bool_and::i#1 ] 101: zp[1]:7 [ bool_and::$1 ]
|
||||
Uplift Scope [bool_or] 252.5: zp[1]:3 [ bool_or::i#2 bool_or::i#1 ] 101: zp[1]:8 [ bool_or::$1 ]
|
||||
Uplift Scope [bool_not] 252.5: zp[1]:4 [ bool_not::i#2 bool_not::i#1 ] 101: zp[1]:9 [ bool_not::$1 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
|
|
|
@ -16,9 +16,9 @@ main: {
|
|||
.const y1 = $18
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label x = 5
|
||||
.label cursor = 2
|
||||
.label y = 5
|
||||
.label y = 4
|
||||
lda #y0
|
||||
sta.z y
|
||||
ldx #yd/2
|
||||
|
|
|
@ -323,21 +323,21 @@ Complete equivalence classes
|
|||
[ main::x#2 main::x#1 ]
|
||||
[ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
[ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
Allocated zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Allocated zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Allocated zp[2]:3 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
Allocated zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [2] *main::cursor#3 = STAR [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] ( [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Statement [5] main::e#1 = main::e#3 + main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] ( [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] { } ) always clobbers reg byte a reg byte x
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Statement [8] main::cursor#2 = main::cursor#1 + $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] { } ) always clobbers reg byte a
|
||||
Statement [9] main::e#2 = main::e#1 - main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x
|
||||
Statement [11] if(main::x#1<main::x1+1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a
|
||||
|
@ -346,22 +346,24 @@ Statement [5] main::e#1 = main::e#3 + main::yd#0 [ main::y#2 main::x#1 main::cur
|
|||
Statement [8] main::cursor#2 = main::cursor#1 + $28 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] ( [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] { } ) always clobbers reg byte a
|
||||
Statement [9] main::e#2 = main::e#1 - main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] ( [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x
|
||||
Statement [11] if(main::x#1<main::x1+1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] ( [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ main::x#2 main::x#1 ] : zp[1]:4 ,
|
||||
Potential registers zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp[1]:5 , reg byte x ,
|
||||
Potential registers zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] : zp[1]:6 ,
|
||||
Potential registers zp[2]:3 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:6 [ main::x#2 main::x#1 ] : zp[1]:6 ,
|
||||
Potential registers zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:5 [ main::y#2 main::y#4 main::y#1 ] : zp[1]:5 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 55: zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Uplift Scope [main] 55: zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp[2]:3 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp[1]:5 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1076 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1076 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp[2]:3 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp[1]:5 [ main::y#2 main::y#4 main::y#1 ] zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Uplifting [] best 1076 combination
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1076 combination zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1076 combination zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Allocated (was zp[1]:6) zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1076 combination zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1076 combination zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
Allocated (was zp[1]:5) zp[1]:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated (was zp[1]:6) zp[1]:5 [ main::x#2 main::x#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -386,9 +388,9 @@ main: {
|
|||
.const y1 = $18
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label x = 5
|
||||
.label cursor = 2
|
||||
.label y = 5
|
||||
.label y = 4
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
// [1] phi main::y#2 = main::y0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
|
@ -502,25 +504,25 @@ char main::e#2 // reg byte x 22.0
|
|||
char main::e#3 // reg byte x 5.5
|
||||
char main::e#5 // reg byte x 16.5
|
||||
char main::x
|
||||
char main::x#1 // x zp[1]:4 3.666666666666667
|
||||
char main::x#2 // x zp[1]:4 11.0
|
||||
char main::x#1 // x zp[1]:5 3.666666666666667
|
||||
char main::x#2 // x zp[1]:5 11.0
|
||||
__constant char main::x0 = 4
|
||||
__constant char main::x1 = $27
|
||||
char main::xd
|
||||
__constant char main::xd#0 = main::x1-main::x0 // xd
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:5 7.333333333333333
|
||||
char main::y#2 // y zp[1]:5 5.5
|
||||
char main::y#4 // y zp[1]:5 16.5
|
||||
char main::y#1 // y zp[1]:4 7.333333333333333
|
||||
char main::y#2 // y zp[1]:4 5.5
|
||||
char main::y#4 // y zp[1]:4 16.5
|
||||
__constant char main::y0 = 4
|
||||
__constant char main::y1 = $18
|
||||
char main::yd
|
||||
__constant char main::yd#0 = main::y1-main::y0 // yd
|
||||
|
||||
zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
zp[1]:5 [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
zp[1]:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
|
@ -548,9 +550,9 @@ main: {
|
|||
.const y1 = $18
|
||||
.const xd = x1-x0
|
||||
.const yd = y1-y0
|
||||
.label x = 4
|
||||
.label x = 5
|
||||
.label cursor = 2
|
||||
.label y = 5
|
||||
.label y = 4
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
// [1] phi main::y#2 = main::y0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
|
|
|
@ -12,22 +12,22 @@ char main::e#2 // reg byte x 22.0
|
|||
char main::e#3 // reg byte x 5.5
|
||||
char main::e#5 // reg byte x 16.5
|
||||
char main::x
|
||||
char main::x#1 // x zp[1]:4 3.666666666666667
|
||||
char main::x#2 // x zp[1]:4 11.0
|
||||
char main::x#1 // x zp[1]:5 3.666666666666667
|
||||
char main::x#2 // x zp[1]:5 11.0
|
||||
__constant char main::x0 = 4
|
||||
__constant char main::x1 = $27
|
||||
char main::xd
|
||||
__constant char main::xd#0 = main::x1-main::x0 // xd
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:5 7.333333333333333
|
||||
char main::y#2 // y zp[1]:5 5.5
|
||||
char main::y#4 // y zp[1]:5 16.5
|
||||
char main::y#1 // y zp[1]:4 7.333333333333333
|
||||
char main::y#2 // y zp[1]:4 5.5
|
||||
char main::y#4 // y zp[1]:4 16.5
|
||||
__constant char main::y0 = 4
|
||||
__constant char main::y1 = $18
|
||||
char main::yd
|
||||
__constant char main::yd#0 = main::y1-main::y0 // yd
|
||||
|
||||
zp[2]:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
|
||||
zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
zp[1]:5 [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
zp[1]:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
|
|
|
@ -14,10 +14,10 @@ main: {
|
|||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label x = 7
|
||||
.label idx = 2
|
||||
.label y = 5
|
||||
.label __15 = 6
|
||||
.label y = 4
|
||||
.label __15 = 5
|
||||
lda #y0
|
||||
sta.z y
|
||||
ldx #y1/2
|
||||
|
|
|
@ -324,23 +324,23 @@ Complete equivalence classes
|
|||
[ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
[ main::y#2 main::y#4 main::y#1 ]
|
||||
[ main::$15 ]
|
||||
Allocated zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
Allocated zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Allocated zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated zp[2]:7 [ main::$15 ]
|
||||
Allocated zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Allocated zp[2]:3 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
Allocated zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated zp[2]:6 [ main::$15 ]
|
||||
Allocated zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [2] main::$15 = main::screen + main::idx#3 [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] ( [ main::idx#3 main::x#2 main::e#3 main::y#2 main::$15 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Statement [3] *main::$15 = main::STAR [ main::idx#3 main::x#2 main::e#3 main::y#2 ] ( [ main::idx#3 main::x#2 main::e#3 main::y#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Statement [6] main::e#1 = main::e#3 + main::y1 [ main::y#2 main::x#1 main::idx#1 main::e#1 ] ( [ main::y#2 main::x#1 main::idx#1 main::e#1 ] { } ) always clobbers reg byte a reg byte x
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Statement [9] main::idx#2 = main::idx#1 + $28 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( [ main::x#1 main::e#1 main::y#1 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::e#2 = main::e#1 - main::x1 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( [ main::x#1 main::y#1 main::idx#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x
|
||||
Statement [12] if(main::x#1<main::x1+1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( [ main::idx#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a
|
||||
|
@ -350,24 +350,26 @@ Statement [6] main::e#1 = main::e#3 + main::y1 [ main::y#2 main::x#1 main::idx#1
|
|||
Statement [9] main::idx#2 = main::idx#1 + $28 [ main::x#1 main::e#1 main::y#1 main::idx#2 ] ( [ main::x#1 main::e#1 main::y#1 main::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::e#2 = main::e#1 - main::x1 [ main::x#1 main::y#1 main::idx#2 main::e#2 ] ( [ main::x#1 main::y#1 main::idx#2 main::e#2 ] { } ) always clobbers reg byte a reg byte x
|
||||
Statement [12] if(main::x#1<main::x1+1) goto main::@1 [ main::idx#5 main::x#1 main::e#5 main::y#4 ] ( [ main::idx#5 main::x#1 main::e#5 main::y#4 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ main::x#2 main::x#1 ] : zp[1]:4 ,
|
||||
Potential registers zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp[1]:5 , reg byte x ,
|
||||
Potential registers zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] : zp[1]:6 ,
|
||||
Potential registers zp[2]:7 [ main::$15 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:3 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:8 [ main::x#2 main::x#1 ] : zp[1]:8 ,
|
||||
Potential registers zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:5 [ main::y#2 main::y#4 main::y#1 ] : zp[1]:5 ,
|
||||
Potential registers zp[2]:6 [ main::$15 ] : zp[2]:6 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 53.9: zp[1]:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 44: zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 28.55: zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] 22: zp[2]:7 [ main::$15 ] 11: zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Uplift Scope [main] 53.9: zp[1]:2 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 44: zp[2]:3 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] 28.55: zp[1]:5 [ main::y#2 main::y#4 main::y#1 ] 22: zp[2]:6 [ main::$15 ] 11: zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1281 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp[1]:6 [ main::y#2 main::y#4 main::y#1 ] zp[2]:7 [ main::$15 ] zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1281 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp[2]:3 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ] zp[1]:5 [ main::y#2 main::y#4 main::y#1 ] zp[2]:6 [ main::$15 ] zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Uplifting [] best 1281 combination
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1281 combination zp[1]:6 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1281 combination zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
Allocated (was zp[1]:6) zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated (was zp[2]:7) zp[2]:6 [ main::$15 ]
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1281 combination zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1281 combination zp[1]:8 [ main::x#2 main::x#1 ]
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
Allocated (was zp[1]:5) zp[1]:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
Allocated (was zp[2]:6) zp[2]:5 [ main::$15 ]
|
||||
Allocated (was zp[1]:8) zp[1]:7 [ main::x#2 main::x#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -390,10 +392,10 @@ main: {
|
|||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label x = 7
|
||||
.label idx = 2
|
||||
.label y = 5
|
||||
.label __15 = 6
|
||||
.label y = 4
|
||||
.label __15 = 5
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
// [1] phi main::y#2 = main::y0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
|
@ -506,7 +508,7 @@ Succesful ASM optimization Pass5NextJumpElimination
|
|||
|
||||
FINAL SYMBOL TABLE
|
||||
void main()
|
||||
char *main::$15 // zp[2]:6 22.0
|
||||
char *main::$15 // zp[2]:5 22.0
|
||||
__constant char main::STAR = $51
|
||||
char main::e
|
||||
char main::e#1 // reg byte x 11.0
|
||||
|
@ -520,24 +522,24 @@ unsigned int main::idx#3 // idx zp[2]:2 8.25
|
|||
unsigned int main::idx#5 // idx zp[2]:2 16.5
|
||||
__constant char main::screen[$28*$19] = (char *) 1024
|
||||
char main::x
|
||||
char main::x#1 // x zp[1]:4 3.666666666666667
|
||||
char main::x#2 // x zp[1]:4 7.333333333333333
|
||||
char main::x#1 // x zp[1]:7 3.666666666666667
|
||||
char main::x#2 // x zp[1]:7 7.333333333333333
|
||||
__constant char main::x0 = 0
|
||||
__constant char main::x1 = $27
|
||||
char main::xd
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:5 7.333333333333333
|
||||
char main::y#2 // y zp[1]:5 4.714285714285714
|
||||
char main::y#4 // y zp[1]:5 16.5
|
||||
char main::y#1 // y zp[1]:4 7.333333333333333
|
||||
char main::y#2 // y zp[1]:4 4.714285714285714
|
||||
char main::y#4 // y zp[1]:4 16.5
|
||||
__constant char main::y0 = 0
|
||||
__constant char main::y1 = $18
|
||||
char main::yd
|
||||
|
||||
zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
zp[1]:7 [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
zp[2]:6 [ main::$15 ]
|
||||
zp[1]:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
zp[2]:5 [ main::$15 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
|
@ -563,10 +565,10 @@ main: {
|
|||
.const x1 = $27
|
||||
.const y1 = $18
|
||||
.label screen = $400
|
||||
.label x = 4
|
||||
.label x = 7
|
||||
.label idx = 2
|
||||
.label y = 5
|
||||
.label __15 = 6
|
||||
.label y = 4
|
||||
.label __15 = 5
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
// [1] phi main::y#2 = main::y0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
lda #y0
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
void main()
|
||||
char *main::$15 // zp[2]:6 22.0
|
||||
char *main::$15 // zp[2]:5 22.0
|
||||
__constant char main::STAR = $51
|
||||
char main::e
|
||||
char main::e#1 // reg byte x 11.0
|
||||
|
@ -13,21 +13,21 @@ unsigned int main::idx#3 // idx zp[2]:2 8.25
|
|||
unsigned int main::idx#5 // idx zp[2]:2 16.5
|
||||
__constant char main::screen[$28*$19] = (char *) 1024
|
||||
char main::x
|
||||
char main::x#1 // x zp[1]:4 3.666666666666667
|
||||
char main::x#2 // x zp[1]:4 7.333333333333333
|
||||
char main::x#1 // x zp[1]:7 3.666666666666667
|
||||
char main::x#2 // x zp[1]:7 7.333333333333333
|
||||
__constant char main::x0 = 0
|
||||
__constant char main::x1 = $27
|
||||
char main::xd
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:5 7.333333333333333
|
||||
char main::y#2 // y zp[1]:5 4.714285714285714
|
||||
char main::y#4 // y zp[1]:5 16.5
|
||||
char main::y#1 // y zp[1]:4 7.333333333333333
|
||||
char main::y#2 // y zp[1]:4 4.714285714285714
|
||||
char main::y#4 // y zp[1]:4 16.5
|
||||
__constant char main::y0 = 0
|
||||
__constant char main::y1 = $18
|
||||
char main::yd
|
||||
|
||||
zp[2]:2 [ main::idx#3 main::idx#5 main::idx#1 main::idx#2 ]
|
||||
zp[1]:4 [ main::x#2 main::x#1 ]
|
||||
zp[1]:7 [ main::x#2 main::x#1 ]
|
||||
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
|
||||
zp[1]:5 [ main::y#2 main::y#4 main::y#1 ]
|
||||
zp[2]:6 [ main::$15 ]
|
||||
zp[1]:4 [ main::y#2 main::y#4 main::y#1 ]
|
||||
zp[2]:5 [ main::$15 ]
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
:BasicUpstart(main)
|
||||
.label print_screen = $400
|
||||
.label print_char_cursor = 2
|
||||
.label print_line_cursor = 4
|
||||
.label print_line_cursor = 6
|
||||
.segment Code
|
||||
main: {
|
||||
// print_cls()
|
||||
|
@ -233,7 +233,7 @@ memset: {
|
|||
.const num = $3e8
|
||||
.label str = print_screen
|
||||
.label end = str+num
|
||||
.label dst = 6
|
||||
.label dst = 4
|
||||
lda #<str
|
||||
sta.z dst
|
||||
lda #>str
|
||||
|
@ -261,9 +261,9 @@ memset: {
|
|||
jmp __b1
|
||||
}
|
||||
// Print a zero-terminated string
|
||||
// void print_str(__zp(6) char *str)
|
||||
// void print_str(__zp(4) char *str)
|
||||
print_str: {
|
||||
.label str = 6
|
||||
.label str = 4
|
||||
__b1:
|
||||
// while(*str)
|
||||
ldy #0
|
||||
|
@ -358,9 +358,9 @@ print_ln: {
|
|||
rts
|
||||
}
|
||||
// Print a unsigned int as HEX
|
||||
// void print_uint(__zp(6) unsigned int w)
|
||||
// void print_uint(__zp(4) unsigned int w)
|
||||
print_uint: {
|
||||
.label w = 6
|
||||
.label w = 4
|
||||
// print_uchar(BYTE1(w))
|
||||
ldx.z w+1
|
||||
jsr print_uchar
|
||||
|
@ -371,9 +371,9 @@ print_uint: {
|
|||
rts
|
||||
}
|
||||
// Print a signed int as HEX
|
||||
// void print_sint(__zp(6) int w)
|
||||
// void print_sint(__zp(4) int w)
|
||||
print_sint: {
|
||||
.label w = 6
|
||||
.label w = 4
|
||||
// if(w<0)
|
||||
lda.z w+1
|
||||
bmi __b1
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -7,8 +7,8 @@ void * memset(void *str , char c , unsigned int num)
|
|||
char memset::c
|
||||
__constant char memset::c#0 = ' ' // c
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:6 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:6 1334.6666666666667
|
||||
char *memset::dst#1 // dst zp[2]:4 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:4 1334.6666666666667
|
||||
char *memset::end
|
||||
__constant char *memset::end#0 = (char *)memset::str#0+memset::num#0 // end
|
||||
unsigned int memset::num
|
||||
|
@ -36,9 +36,9 @@ char *print_char_cursor#95 // print_char_cursor zp[2]:2 1100799.0
|
|||
void print_cls()
|
||||
__constant const char print_hextab[] = "0123456789abcdef"z
|
||||
char *print_line_cursor
|
||||
char *print_line_cursor#0 // print_line_cursor zp[2]:4 56.833333333333336
|
||||
char *print_line_cursor#21 // print_line_cursor zp[2]:4 2103.0
|
||||
char *print_line_cursor#41 // print_line_cursor zp[2]:4 134.0
|
||||
char *print_line_cursor#0 // print_line_cursor zp[2]:6 56.833333333333336
|
||||
char *print_line_cursor#21 // print_line_cursor zp[2]:6 2103.0
|
||||
char *print_line_cursor#41 // print_line_cursor zp[2]:6 134.0
|
||||
void print_ln()
|
||||
void print_schar(signed char b)
|
||||
signed char print_schar::b
|
||||
|
@ -47,9 +47,9 @@ char *print_screen
|
|||
__constant char *print_screen#0 = (char *) 1024 // print_screen
|
||||
void print_sint(int w)
|
||||
int print_sint::w
|
||||
int print_sint::w#0 // w zp[2]:6 202.0
|
||||
int print_sint::w#10 // w zp[2]:6 50.5
|
||||
int print_sint::w#7 // w zp[2]:6 202.0
|
||||
int print_sint::w#0 // w zp[2]:4 202.0
|
||||
int print_sint::w#10 // w zp[2]:4 50.5
|
||||
int print_sint::w#7 // w zp[2]:4 202.0
|
||||
void print_slong(long dw)
|
||||
long print_slong::dw
|
||||
long print_slong::dw#0 // dw zp[4]:8 202.0
|
||||
|
@ -57,9 +57,9 @@ long print_slong::dw#3 // dw zp[4]:8 50.5
|
|||
long print_slong::dw#5 // dw zp[4]:8 202.0
|
||||
void print_str(char *str)
|
||||
char *print_str::str
|
||||
char *print_str::str#0 // str zp[2]:6 2002.0
|
||||
char *print_str::str#5 // str zp[2]:6 1026.25
|
||||
char *print_str::str#8 // str zp[2]:6 101.0
|
||||
char *print_str::str#0 // str zp[2]:4 2002.0
|
||||
char *print_str::str#5 // str zp[2]:4 1026.25
|
||||
char *print_str::str#8 // str zp[2]:4 101.0
|
||||
void print_uchar(char b)
|
||||
char print_uchar::$0 // reg byte a 200002.0
|
||||
char print_uchar::$2 // reg byte x 200002.0
|
||||
|
@ -69,10 +69,10 @@ char print_uchar::b#2 // reg byte x 20002.0
|
|||
char print_uchar::b#5 // reg byte x 55001.0
|
||||
void print_uint(unsigned int w)
|
||||
unsigned int print_uint::w
|
||||
unsigned int print_uint::w#0 // w zp[2]:6 202.0
|
||||
unsigned int print_uint::w#1 // w zp[2]:6 2002.0
|
||||
unsigned int print_uint::w#2 // w zp[2]:6 2002.0
|
||||
unsigned int print_uint::w#5 // w zp[2]:6 7368.333333333333
|
||||
unsigned int print_uint::w#0 // w zp[2]:4 202.0
|
||||
unsigned int print_uint::w#1 // w zp[2]:4 2002.0
|
||||
unsigned int print_uint::w#2 // w zp[2]:4 2002.0
|
||||
unsigned int print_uint::w#5 // w zp[2]:4 7368.333333333333
|
||||
void print_ulong(unsigned long dw)
|
||||
unsigned long print_ulong::dw
|
||||
unsigned long print_ulong::dw#0 // dw zp[4]:8 202.0
|
||||
|
@ -101,8 +101,8 @@ __constant unsigned int testShort::u = $578
|
|||
reg byte x [ print_uchar::b#5 print_uchar::b#1 print_uchar::b#2 ]
|
||||
reg byte a [ print_char::ch#17 print_char::ch#0 print_char::ch#7 print_char::ch#8 ]
|
||||
zp[2]:2 [ print_char_cursor#95 print_char_cursor#152 print_char_cursor#1 print_char_cursor#159 print_char_cursor#163 print_char_cursor#164 print_char_cursor#165 print_char_cursor#25 print_char_cursor#147 print_char_cursor#148 ]
|
||||
zp[2]:4 [ print_line_cursor#21 print_line_cursor#41 print_line_cursor#0 ]
|
||||
zp[2]:6 [ print_uint::w#5 print_uint::w#0 print_uint::w#1 print_uint::w#2 print_sint::w#7 print_sint::w#0 print_sint::w#10 print_str::str#5 print_str::str#8 print_str::str#0 memset::dst#2 memset::dst#1 ]
|
||||
zp[2]:6 [ print_line_cursor#21 print_line_cursor#41 print_line_cursor#0 ]
|
||||
zp[2]:4 [ print_uint::w#5 print_uint::w#0 print_uint::w#1 print_uint::w#2 print_sint::w#7 print_sint::w#0 print_sint::w#10 print_str::str#5 print_str::str#8 print_str::str#0 memset::dst#2 memset::dst#1 ]
|
||||
zp[4]:8 [ print_ulong::dw#2 print_ulong::dw#0 print_slong::dw#5 print_slong::dw#0 print_slong::dw#3 ]
|
||||
reg byte a [ print_uchar::$0 ]
|
||||
reg byte x [ print_uchar::$2 ]
|
||||
|
|
|
@ -312,9 +312,9 @@ gfx_init: {
|
|||
}
|
||||
// Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos)
|
||||
gfx_init_screen0: {
|
||||
.label __1 = 9
|
||||
.label ch = 3
|
||||
.label cy = 2
|
||||
.label __1 = 8
|
||||
.label ch = 6
|
||||
.label cy = 9
|
||||
lda #<SCREEN
|
||||
sta.z ch
|
||||
lda #>SCREEN
|
||||
|
@ -362,12 +362,12 @@ gfx_init_screen0: {
|
|||
gfx_init_plane_charset8: {
|
||||
// 8bpp cells for Plane B (charset) - ROM charset with 256 colors
|
||||
.const gfxbCpuBank = $ff&CHARSET8/$4000
|
||||
.label bits = 5
|
||||
.label chargen = 3
|
||||
.label gfxa = 6
|
||||
.label col = 8
|
||||
.label cr = 9
|
||||
.label ch = 2
|
||||
.label bits = 2
|
||||
.label chargen = 6
|
||||
.label gfxa = 3
|
||||
.label col = 5
|
||||
.label cr = 8
|
||||
.label ch = 9
|
||||
// dtvSetCpuBankSegment1(gfxbCpuBank++)
|
||||
lda #gfxbCpuBank
|
||||
jsr dtvSetCpuBankSegment1
|
||||
|
|
|
@ -1072,28 +1072,28 @@ Complete equivalence classes
|
|||
[ gfx_init_screen0::$2 ]
|
||||
[ gfx_init_screen0::$3 ]
|
||||
[ gfx_init_plane_charset8::$2 ]
|
||||
Allocated zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Allocated zp[1]:4 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Allocated zp[2]:5 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
Allocated zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Allocated zp[2]:8 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ]
|
||||
Allocated zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Allocated zp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Allocated zp[2]:12 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
Allocated zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Allocated zp[1]:15 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
Allocated zp[1]:16 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
|
||||
Allocated zp[1]:17 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
Allocated zp[1]:18 [ main::rst#1 ]
|
||||
Allocated zp[1]:19 [ main::$3 ]
|
||||
Allocated zp[1]:20 [ main::$4 ]
|
||||
Allocated zp[1]:21 [ main::$5 ]
|
||||
Allocated zp[1]:22 [ gfx_init_screen0::$0 ]
|
||||
Allocated zp[1]:23 [ gfx_init_screen0::$1 ]
|
||||
Allocated zp[1]:24 [ gfx_init_screen0::$2 ]
|
||||
Allocated zp[1]:25 [ gfx_init_screen0::$3 ]
|
||||
Allocated zp[1]:26 [ gfx_init_plane_charset8::$2 ]
|
||||
Allocated zp[1]:2 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
|
||||
Allocated zp[1]:3 [ gfx_init_plane_charset8::$2 ]
|
||||
Allocated zp[1]:4 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
Allocated zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Allocated zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
Allocated zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Allocated zp[1]:9 [ gfx_init_screen0::$0 ]
|
||||
Allocated zp[1]:10 [ gfx_init_screen0::$2 ]
|
||||
Allocated zp[1]:11 [ gfx_init_screen0::$3 ]
|
||||
Allocated zp[1]:12 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Allocated zp[2]:13 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ]
|
||||
Allocated zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Allocated zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
Allocated zp[1]:18 [ gfx_init_screen0::$1 ]
|
||||
Allocated zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Allocated zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Allocated zp[1]:21 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
Allocated zp[1]:22 [ main::$3 ]
|
||||
Allocated zp[1]:23 [ main::$4 ]
|
||||
Allocated zp[1]:24 [ main::$5 ]
|
||||
Allocated zp[1]:25 [ main::rst#1 ]
|
||||
Allocated zp[1]:26 [ main::j#2 main::j#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -1121,27 +1121,27 @@ Statement [28] *VICII_CONTROL1 = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { }
|
|||
Statement [29] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [30] if(*RASTER!=$42) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [34] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:18 [ main::rst#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:25 [ main::rst#1 ]
|
||||
Statement [36] main::$5 = main::rst#1 << 4 [ main::rst#1 main::$5 ] ( [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [49] gfx_init_screen0::$1 = gfx_init_screen0::$0 << 4 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] ( gfx_init:3::gfx_init_screen0:41 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:12 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Statement [50] gfx_init_screen0::$2 = gfx_init_screen0::cx#2 & $f [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] ( gfx_init:3::gfx_init_screen0:41 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 gfx_init_screen0::$1 gfx_init_screen0::$2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:23 [ gfx_init_screen0::$1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:18 [ gfx_init_screen0::$1 ]
|
||||
Statement [52] *gfx_init_screen0::ch#2 = gfx_init_screen0::$3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] ( gfx_init:3::gfx_init_screen0:41 [ gfx_init_screen0::cy#4 gfx_init_screen0::cx#2 gfx_init_screen0::ch#2 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:12 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
Statement [61] *PROCPORT = PROCPORT_RAM_CHARROM [ ] ( gfx_init:3::gfx_init_plane_charset8:43 [ ] { } ) always clobbers reg byte a
|
||||
Statement [64] gfx_init_plane_charset8::bits#0 = *gfx_init_plane_charset8::chargen#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] ( gfx_init:3::gfx_init_plane_charset8:43 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#0 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Statement [71] *gfx_init_plane_charset8::gfxa#2 = gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( gfx_init:3::gfx_init_plane_charset8:43 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:15 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
Statement [81] *PROCPORT = PROCPORT_RAM_IO [ ] ( gfx_init:3::gfx_init_plane_charset8:43 [ ] { } ) always clobbers reg byte a
|
||||
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
|
||||
Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -1181,75 +1181,75 @@ Statement [64] gfx_init_plane_charset8::bits#0 = *gfx_init_plane_charset8::charg
|
|||
Statement [71] *gfx_init_plane_charset8::gfxa#2 = gfx_init_plane_charset8::c#2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] ( gfx_init:3::gfx_init_plane_charset8:43 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::chargen#1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::cp#2 ] { } ) always clobbers reg byte y
|
||||
Statement [81] *PROCPORT = PROCPORT_RAM_IO [ ] ( gfx_init:3::gfx_init_plane_charset8:43 [ ] { } ) always clobbers reg byte a
|
||||
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[1]:4 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] : zp[1]:4 , reg byte x ,
|
||||
Potential registers zp[2]:5 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] : zp[1]:7 , reg byte x ,
|
||||
Potential registers zp[2]:8 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] : zp[2]:8 ,
|
||||
Potential registers zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] : zp[1]:10 , reg byte x ,
|
||||
Potential registers zp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] : zp[1]:11 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:12 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] : zp[2]:12 ,
|
||||
Potential registers zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] : zp[1]:14 , reg byte x ,
|
||||
Potential registers zp[1]:15 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] : zp[1]:15 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:16 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:17 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:18 [ main::rst#1 ] : zp[1]:18 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:19 [ main::$3 ] : zp[1]:19 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:20 [ main::$4 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:21 [ main::$5 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:22 [ gfx_init_screen0::$0 ] : zp[1]:22 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:23 [ gfx_init_screen0::$1 ] : zp[1]:23 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:24 [ gfx_init_screen0::$2 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ gfx_init_screen0::$3 ] : zp[1]:25 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:26 [ gfx_init_plane_charset8::$2 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:26 [ main::j#2 main::j#1 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] : zp[1]:19 , reg byte x ,
|
||||
Potential registers zp[1]:12 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] : zp[1]:12 , reg byte x ,
|
||||
Potential registers zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] : zp[2]:16 ,
|
||||
Potential registers zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] : zp[1]:20 , reg byte x ,
|
||||
Potential registers zp[2]:13 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] : zp[2]:13 ,
|
||||
Potential registers zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] : zp[1]:15 , reg byte x ,
|
||||
Potential registers zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] : zp[1]:5 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] : zp[1]:8 , reg byte x ,
|
||||
Potential registers zp[1]:4 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] : zp[1]:4 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:2 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:21 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ] : zp[1]:21 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ main::rst#1 ] : zp[1]:25 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:22 [ main::$3 ] : zp[1]:22 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:23 [ main::$4 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:24 [ main::$5 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ gfx_init_screen0::$0 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:18 [ gfx_init_screen0::$1 ] : zp[1]:18 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ gfx_init_screen0::$2 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ gfx_init_screen0::$3 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ gfx_init_plane_charset8::$2 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [gfx_init_plane_charset8] 400,004: zp[1]:16 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 200,002: zp[1]:26 [ gfx_init_plane_charset8::$2 ] 172,223.94: zp[1]:15 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 104,287.79: zp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 84,115.22: zp[2]:12 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 77,896.93: zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 18,816.69: zp[2]:8 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 16,430.21: zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 1,619.26: zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Uplift Scope [gfx_init_screen0] 20,002: zp[1]:22 [ gfx_init_screen0::$0 ] 20,002: zp[1]:24 [ gfx_init_screen0::$2 ] 20,002: zp[1]:25 [ gfx_init_screen0::$3 ] 19,287.64: zp[1]:4 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 11,369.93: zp[2]:5 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 10,001: zp[1]:23 [ gfx_init_screen0::$1 ] 2,701.8: zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Uplift Scope [dtvSetCpuBankSegment1] 1,001: zp[1]:17 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
Uplift Scope [main] 202: zp[1]:19 [ main::$3 ] 202: zp[1]:20 [ main::$4 ] 202: zp[1]:21 [ main::$5 ] 57.71: zp[1]:18 [ main::rst#1 ] 38.5: zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Uplift Scope [gfx_init_plane_charset8] 400,004: zp[1]:2 [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] 200,002: zp[1]:3 [ gfx_init_plane_charset8::$2 ] 172,223.94: zp[1]:4 [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] 104,287.79: zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] 84,115.22: zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] 77,896.93: zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] 18,816.69: zp[2]:13 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] 16,430.21: zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] 1,619.26: zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Uplift Scope [gfx_init_screen0] 20,002: zp[1]:9 [ gfx_init_screen0::$0 ] 20,002: zp[1]:10 [ gfx_init_screen0::$2 ] 20,002: zp[1]:11 [ gfx_init_screen0::$3 ] 19,287.64: zp[1]:12 [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] 11,369.93: zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] 10,001: zp[1]:18 [ gfx_init_screen0::$1 ] 2,701.8: zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Uplift Scope [dtvSetCpuBankSegment1] 1,001: zp[1]:21 [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
Uplift Scope [main] 202: zp[1]:22 [ main::$3 ] 202: zp[1]:23 [ main::$4 ] 202: zp[1]:24 [ main::$5 ] 57.71: zp[1]:25 [ main::rst#1 ] 38.5: zp[1]:26 [ main::j#2 main::j#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope [gfx_init]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [gfx_init_plane_charset8] best 98362 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$2 ] reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp[2]:12 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp[2]:8 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 98362 combination reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ] reg byte a [ gfx_init_plane_charset8::$2 ] reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ] zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ] zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ] zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ] zp[2]:13 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Limited combination testing to 100 combinations of 1152 possible.
|
||||
Uplifting [gfx_init_screen0] best 95562 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] reg byte a [ gfx_init_screen0::$3 ] reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp[2]:5 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp[1]:23 [ gfx_init_screen0::$1 ] zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Uplifting [gfx_init_screen0] best 95562 combination reg byte a [ gfx_init_screen0::$0 ] reg byte a [ gfx_init_screen0::$2 ] reg byte a [ gfx_init_screen0::$3 ] reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ] zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] zp[1]:18 [ gfx_init_screen0::$1 ] zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Limited combination testing to 100 combinations of 768 possible.
|
||||
Uplifting [dtvSetCpuBankSegment1] best 95553 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
Uplifting [main] best 92953 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Uplifting [main] best 92953 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:26 [ main::j#2 main::j#1 ]
|
||||
Limited combination testing to 100 combinations of 768 possible.
|
||||
Uplifting [MOS6526_CIA] best 92953 combination
|
||||
Uplifting [MOS6569_VICII] best 92953 combination
|
||||
Uplifting [MOS6581_SID] best 92953 combination
|
||||
Uplifting [gfx_init] best 92953 combination
|
||||
Uplifting [] best 92953 combination
|
||||
Attempting to uplift remaining variables inzp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:11 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:14 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:23 [ gfx_init_screen0::$1 ]
|
||||
Uplifting [gfx_init_screen0] best 92953 combination zp[1]:23 [ gfx_init_screen0::$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Uplifting [gfx_init_screen0] best 92953 combination zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:18 [ gfx_init_screen0::$1 ]
|
||||
Uplifting [gfx_init_screen0] best 92953 combination zp[1]:18 [ gfx_init_screen0::$1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Uplifting [gfx_init_screen0] best 92953 combination zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Uplifting [gfx_init_plane_charset8] best 92953 combination zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:26 [ main::j#2 main::j#1 ]
|
||||
Uplifting [main] best 92833 combination reg byte x [ main::j#2 main::j#1 ]
|
||||
Coalescing zero page register [ zp[1]:7 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] with [ zp[1]:3 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:8 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] ] with [ zp[2]:5 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] ]
|
||||
Coalescing zero page register [ zp[1]:23 [ gfx_init_screen0::$1 ] ] with [ zp[1]:10 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ]
|
||||
Allocated (was zp[1]:7) zp[1]:2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
Allocated (was zp[2]:8) zp[2]:3 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
Allocated (was zp[1]:11) zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Allocated (was zp[2]:12) zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
Allocated (was zp[1]:14) zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Allocated (was zp[1]:23) zp[1]:9 [ gfx_init_screen0::$1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Coalescing zero page register [ zp[1]:20 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 ] ] with [ zp[1]:19 [ gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:13 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 ] ] with [ zp[2]:16 [ gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ] ]
|
||||
Coalescing zero page register [ zp[1]:18 [ gfx_init_screen0::$1 ] ] with [ zp[1]:15 [ gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ] ]
|
||||
Allocated (was zp[1]:5) zp[1]:2 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
Allocated (was zp[2]:6) zp[2]:3 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
Allocated (was zp[1]:8) zp[1]:5 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
Allocated (was zp[2]:13) zp[2]:6 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
Allocated (was zp[1]:18) zp[1]:8 [ gfx_init_screen0::$1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
Allocated (was zp[1]:20) zp[1]:9 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -1613,9 +1613,9 @@ gfx_init: {
|
|||
// gfx_init_screen0
|
||||
// Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos)
|
||||
gfx_init_screen0: {
|
||||
.label __1 = 9
|
||||
.label ch = 3
|
||||
.label cy = 2
|
||||
.label __1 = 8
|
||||
.label ch = 6
|
||||
.label cy = 9
|
||||
// [46] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1]
|
||||
__b1_from_gfx_init_screen0:
|
||||
// [46] phi gfx_init_screen0::ch#3 = SCREEN [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1
|
||||
|
@ -1694,12 +1694,12 @@ gfx_init_screen0: {
|
|||
gfx_init_plane_charset8: {
|
||||
// 8bpp cells for Plane B (charset) - ROM charset with 256 colors
|
||||
.const gfxbCpuBank = $ff&CHARSET8/$4000
|
||||
.label bits = 5
|
||||
.label chargen = 3
|
||||
.label gfxa = 6
|
||||
.label col = 8
|
||||
.label cr = 9
|
||||
.label ch = 2
|
||||
.label bits = 2
|
||||
.label chargen = 6
|
||||
.label gfxa = 3
|
||||
.label col = 5
|
||||
.label cr = 8
|
||||
.label ch = 9
|
||||
// [60] call dtvSetCpuBankSegment1
|
||||
// [84] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1]
|
||||
dtvSetCpuBankSegment1_from_gfx_init_plane_charset8:
|
||||
|
@ -2012,52 +2012,52 @@ void gfx_init()
|
|||
void gfx_init_plane_charset8()
|
||||
char gfx_init_plane_charset8::$2 // reg byte a 200002.0
|
||||
char gfx_init_plane_charset8::bits
|
||||
char gfx_init_plane_charset8::bits#0 // bits zp[1]:5 10001.0
|
||||
char gfx_init_plane_charset8::bits#1 // bits zp[1]:5 50000.5
|
||||
char gfx_init_plane_charset8::bits#2 // bits zp[1]:5 44286.28571428572
|
||||
char gfx_init_plane_charset8::bits#0 // bits zp[1]:2 10001.0
|
||||
char gfx_init_plane_charset8::bits#1 // bits zp[1]:2 50000.5
|
||||
char gfx_init_plane_charset8::bits#2 // bits zp[1]:2 44286.28571428572
|
||||
char gfx_init_plane_charset8::c
|
||||
char gfx_init_plane_charset8::c#2 // reg byte a 200002.0
|
||||
char gfx_init_plane_charset8::c#3 // reg byte a 200002.0
|
||||
char gfx_init_plane_charset8::ch
|
||||
char gfx_init_plane_charset8::ch#1 // ch zp[1]:2 1501.5
|
||||
char gfx_init_plane_charset8::ch#8 // ch zp[1]:2 117.76470588235294
|
||||
char gfx_init_plane_charset8::ch#1 // ch zp[1]:9 1501.5
|
||||
char gfx_init_plane_charset8::ch#8 // ch zp[1]:9 117.76470588235294
|
||||
char *gfx_init_plane_charset8::chargen
|
||||
char *gfx_init_plane_charset8::chargen#1 // chargen zp[2]:3 1312.6875
|
||||
char *gfx_init_plane_charset8::chargen#2 // chargen zp[2]:3 15502.0
|
||||
char *gfx_init_plane_charset8::chargen#3 // chargen zp[2]:3 2002.0
|
||||
char *gfx_init_plane_charset8::chargen#1 // chargen zp[2]:6 1312.6875
|
||||
char *gfx_init_plane_charset8::chargen#2 // chargen zp[2]:6 15502.0
|
||||
char *gfx_init_plane_charset8::chargen#3 // chargen zp[2]:6 2002.0
|
||||
char gfx_init_plane_charset8::col
|
||||
char gfx_init_plane_charset8::col#1 // col zp[1]:8 30143.428571428572
|
||||
char gfx_init_plane_charset8::col#2 // col zp[1]:8 38750.5
|
||||
char gfx_init_plane_charset8::col#5 // col zp[1]:8 7001.0
|
||||
char gfx_init_plane_charset8::col#6 // col zp[1]:8 2002.0
|
||||
char gfx_init_plane_charset8::col#1 // col zp[1]:5 30143.428571428572
|
||||
char gfx_init_plane_charset8::col#2 // col zp[1]:5 38750.5
|
||||
char gfx_init_plane_charset8::col#5 // col zp[1]:5 7001.0
|
||||
char gfx_init_plane_charset8::col#6 // col zp[1]:5 2002.0
|
||||
char gfx_init_plane_charset8::cp
|
||||
char gfx_init_plane_charset8::cp#1 // reg byte x 150001.5
|
||||
char gfx_init_plane_charset8::cp#2 // reg byte x 22222.444444444445
|
||||
char gfx_init_plane_charset8::cr
|
||||
char gfx_init_plane_charset8::cr#1 // cr zp[1]:9 15001.5
|
||||
char gfx_init_plane_charset8::cr#6 // cr zp[1]:9 1428.7142857142858
|
||||
char gfx_init_plane_charset8::cr#1 // cr zp[1]:8 15001.5
|
||||
char gfx_init_plane_charset8::cr#6 // cr zp[1]:8 1428.7142857142858
|
||||
char *gfx_init_plane_charset8::gfxa
|
||||
char *gfx_init_plane_charset8::gfxa#1 // gfxa zp[2]:6 23444.88888888889
|
||||
char *gfx_init_plane_charset8::gfxa#2 // gfxa zp[2]:6 51667.33333333333
|
||||
char *gfx_init_plane_charset8::gfxa#5 // gfxa zp[2]:6 7001.0
|
||||
char *gfx_init_plane_charset8::gfxa#6 // gfxa zp[2]:6 2002.0
|
||||
char *gfx_init_plane_charset8::gfxa#1 // gfxa zp[2]:3 23444.88888888889
|
||||
char *gfx_init_plane_charset8::gfxa#2 // gfxa zp[2]:3 51667.33333333333
|
||||
char *gfx_init_plane_charset8::gfxa#5 // gfxa zp[2]:3 7001.0
|
||||
char *gfx_init_plane_charset8::gfxa#6 // gfxa zp[2]:3 2002.0
|
||||
char gfx_init_plane_charset8::gfxbCpuBank
|
||||
__constant char gfx_init_plane_charset8::gfxbCpuBank#0 = (char)CHARSET8/$4000 // gfxbCpuBank
|
||||
void gfx_init_screen0()
|
||||
char gfx_init_screen0::$0 // reg byte a 20002.0
|
||||
char gfx_init_screen0::$1 // zp[1]:9 10001.0
|
||||
char gfx_init_screen0::$1 // zp[1]:8 10001.0
|
||||
char gfx_init_screen0::$2 // reg byte a 20002.0
|
||||
char gfx_init_screen0::$3 // reg byte a 20002.0
|
||||
char *gfx_init_screen0::ch
|
||||
char *gfx_init_screen0::ch#1 // ch zp[2]:3 4200.6
|
||||
char *gfx_init_screen0::ch#2 // ch zp[2]:3 5167.333333333333
|
||||
char *gfx_init_screen0::ch#3 // ch zp[2]:3 2002.0
|
||||
char *gfx_init_screen0::ch#1 // ch zp[2]:6 4200.6
|
||||
char *gfx_init_screen0::ch#2 // ch zp[2]:6 5167.333333333333
|
||||
char *gfx_init_screen0::ch#3 // ch zp[2]:6 2002.0
|
||||
char gfx_init_screen0::cx
|
||||
char gfx_init_screen0::cx#1 // reg byte x 15001.5
|
||||
char gfx_init_screen0::cx#2 // reg byte x 4286.142857142857
|
||||
char gfx_init_screen0::cy
|
||||
char gfx_init_screen0::cy#1 // cy zp[1]:2 1501.5
|
||||
char gfx_init_screen0::cy#4 // cy zp[1]:2 1200.3
|
||||
char gfx_init_screen0::cy#1 // cy zp[1]:9 1501.5
|
||||
char gfx_init_screen0::cy#4 // cy zp[1]:9 1200.3
|
||||
void main()
|
||||
char main::$3 // reg byte a 202.0
|
||||
char main::$4 // reg byte a 202.0
|
||||
|
@ -2070,11 +2070,11 @@ char main::rst#1 // reg byte x 57.714285714285715
|
|||
|
||||
reg byte x [ main::j#2 main::j#1 ]
|
||||
reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
zp[1]:2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
zp[2]:3 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
zp[1]:9 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
zp[2]:6 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
zp[1]:2 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
zp[2]:3 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
zp[1]:5 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
|
||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
|
@ -2083,7 +2083,7 @@ reg byte a [ main::$3 ]
|
|||
reg byte a [ main::$4 ]
|
||||
reg byte a [ main::$5 ]
|
||||
reg byte a [ gfx_init_screen0::$0 ]
|
||||
zp[1]:9 [ gfx_init_screen0::$1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
zp[1]:8 [ gfx_init_screen0::$1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
reg byte a [ gfx_init_screen0::$2 ]
|
||||
reg byte a [ gfx_init_screen0::$3 ]
|
||||
reg byte a [ gfx_init_plane_charset8::$2 ]
|
||||
|
@ -2470,9 +2470,9 @@ gfx_init: {
|
|||
// gfx_init_screen0
|
||||
// Initialize VIC screen 0 ( value is %yyyyxxxx where yyyy is ypos and xxxx is xpos)
|
||||
gfx_init_screen0: {
|
||||
.label __1 = 9
|
||||
.label ch = 3
|
||||
.label cy = 2
|
||||
.label __1 = 8
|
||||
.label ch = 6
|
||||
.label cy = 9
|
||||
// [46] phi from gfx_init_screen0 to gfx_init_screen0::@1 [phi:gfx_init_screen0->gfx_init_screen0::@1]
|
||||
// [46] phi gfx_init_screen0::ch#3 = SCREEN [phi:gfx_init_screen0->gfx_init_screen0::@1#0] -- pbuz1=pbuc1
|
||||
lda #<SCREEN
|
||||
|
@ -2548,12 +2548,12 @@ gfx_init_screen0: {
|
|||
gfx_init_plane_charset8: {
|
||||
// 8bpp cells for Plane B (charset) - ROM charset with 256 colors
|
||||
.const gfxbCpuBank = $ff&CHARSET8/$4000
|
||||
.label bits = 5
|
||||
.label chargen = 3
|
||||
.label gfxa = 6
|
||||
.label col = 8
|
||||
.label cr = 9
|
||||
.label ch = 2
|
||||
.label bits = 2
|
||||
.label chargen = 6
|
||||
.label gfxa = 3
|
||||
.label col = 5
|
||||
.label cr = 8
|
||||
.label ch = 9
|
||||
// dtvSetCpuBankSegment1(gfxbCpuBank++)
|
||||
// [60] call dtvSetCpuBankSegment1
|
||||
// [84] phi from gfx_init_plane_charset8 to dtvSetCpuBankSegment1 [phi:gfx_init_plane_charset8->dtvSetCpuBankSegment1]
|
||||
|
|
|
@ -46,52 +46,52 @@ void gfx_init()
|
|||
void gfx_init_plane_charset8()
|
||||
char gfx_init_plane_charset8::$2 // reg byte a 200002.0
|
||||
char gfx_init_plane_charset8::bits
|
||||
char gfx_init_plane_charset8::bits#0 // bits zp[1]:5 10001.0
|
||||
char gfx_init_plane_charset8::bits#1 // bits zp[1]:5 50000.5
|
||||
char gfx_init_plane_charset8::bits#2 // bits zp[1]:5 44286.28571428572
|
||||
char gfx_init_plane_charset8::bits#0 // bits zp[1]:2 10001.0
|
||||
char gfx_init_plane_charset8::bits#1 // bits zp[1]:2 50000.5
|
||||
char gfx_init_plane_charset8::bits#2 // bits zp[1]:2 44286.28571428572
|
||||
char gfx_init_plane_charset8::c
|
||||
char gfx_init_plane_charset8::c#2 // reg byte a 200002.0
|
||||
char gfx_init_plane_charset8::c#3 // reg byte a 200002.0
|
||||
char gfx_init_plane_charset8::ch
|
||||
char gfx_init_plane_charset8::ch#1 // ch zp[1]:2 1501.5
|
||||
char gfx_init_plane_charset8::ch#8 // ch zp[1]:2 117.76470588235294
|
||||
char gfx_init_plane_charset8::ch#1 // ch zp[1]:9 1501.5
|
||||
char gfx_init_plane_charset8::ch#8 // ch zp[1]:9 117.76470588235294
|
||||
char *gfx_init_plane_charset8::chargen
|
||||
char *gfx_init_plane_charset8::chargen#1 // chargen zp[2]:3 1312.6875
|
||||
char *gfx_init_plane_charset8::chargen#2 // chargen zp[2]:3 15502.0
|
||||
char *gfx_init_plane_charset8::chargen#3 // chargen zp[2]:3 2002.0
|
||||
char *gfx_init_plane_charset8::chargen#1 // chargen zp[2]:6 1312.6875
|
||||
char *gfx_init_plane_charset8::chargen#2 // chargen zp[2]:6 15502.0
|
||||
char *gfx_init_plane_charset8::chargen#3 // chargen zp[2]:6 2002.0
|
||||
char gfx_init_plane_charset8::col
|
||||
char gfx_init_plane_charset8::col#1 // col zp[1]:8 30143.428571428572
|
||||
char gfx_init_plane_charset8::col#2 // col zp[1]:8 38750.5
|
||||
char gfx_init_plane_charset8::col#5 // col zp[1]:8 7001.0
|
||||
char gfx_init_plane_charset8::col#6 // col zp[1]:8 2002.0
|
||||
char gfx_init_plane_charset8::col#1 // col zp[1]:5 30143.428571428572
|
||||
char gfx_init_plane_charset8::col#2 // col zp[1]:5 38750.5
|
||||
char gfx_init_plane_charset8::col#5 // col zp[1]:5 7001.0
|
||||
char gfx_init_plane_charset8::col#6 // col zp[1]:5 2002.0
|
||||
char gfx_init_plane_charset8::cp
|
||||
char gfx_init_plane_charset8::cp#1 // reg byte x 150001.5
|
||||
char gfx_init_plane_charset8::cp#2 // reg byte x 22222.444444444445
|
||||
char gfx_init_plane_charset8::cr
|
||||
char gfx_init_plane_charset8::cr#1 // cr zp[1]:9 15001.5
|
||||
char gfx_init_plane_charset8::cr#6 // cr zp[1]:9 1428.7142857142858
|
||||
char gfx_init_plane_charset8::cr#1 // cr zp[1]:8 15001.5
|
||||
char gfx_init_plane_charset8::cr#6 // cr zp[1]:8 1428.7142857142858
|
||||
char *gfx_init_plane_charset8::gfxa
|
||||
char *gfx_init_plane_charset8::gfxa#1 // gfxa zp[2]:6 23444.88888888889
|
||||
char *gfx_init_plane_charset8::gfxa#2 // gfxa zp[2]:6 51667.33333333333
|
||||
char *gfx_init_plane_charset8::gfxa#5 // gfxa zp[2]:6 7001.0
|
||||
char *gfx_init_plane_charset8::gfxa#6 // gfxa zp[2]:6 2002.0
|
||||
char *gfx_init_plane_charset8::gfxa#1 // gfxa zp[2]:3 23444.88888888889
|
||||
char *gfx_init_plane_charset8::gfxa#2 // gfxa zp[2]:3 51667.33333333333
|
||||
char *gfx_init_plane_charset8::gfxa#5 // gfxa zp[2]:3 7001.0
|
||||
char *gfx_init_plane_charset8::gfxa#6 // gfxa zp[2]:3 2002.0
|
||||
char gfx_init_plane_charset8::gfxbCpuBank
|
||||
__constant char gfx_init_plane_charset8::gfxbCpuBank#0 = (char)CHARSET8/$4000 // gfxbCpuBank
|
||||
void gfx_init_screen0()
|
||||
char gfx_init_screen0::$0 // reg byte a 20002.0
|
||||
char gfx_init_screen0::$1 // zp[1]:9 10001.0
|
||||
char gfx_init_screen0::$1 // zp[1]:8 10001.0
|
||||
char gfx_init_screen0::$2 // reg byte a 20002.0
|
||||
char gfx_init_screen0::$3 // reg byte a 20002.0
|
||||
char *gfx_init_screen0::ch
|
||||
char *gfx_init_screen0::ch#1 // ch zp[2]:3 4200.6
|
||||
char *gfx_init_screen0::ch#2 // ch zp[2]:3 5167.333333333333
|
||||
char *gfx_init_screen0::ch#3 // ch zp[2]:3 2002.0
|
||||
char *gfx_init_screen0::ch#1 // ch zp[2]:6 4200.6
|
||||
char *gfx_init_screen0::ch#2 // ch zp[2]:6 5167.333333333333
|
||||
char *gfx_init_screen0::ch#3 // ch zp[2]:6 2002.0
|
||||
char gfx_init_screen0::cx
|
||||
char gfx_init_screen0::cx#1 // reg byte x 15001.5
|
||||
char gfx_init_screen0::cx#2 // reg byte x 4286.142857142857
|
||||
char gfx_init_screen0::cy
|
||||
char gfx_init_screen0::cy#1 // cy zp[1]:2 1501.5
|
||||
char gfx_init_screen0::cy#4 // cy zp[1]:2 1200.3
|
||||
char gfx_init_screen0::cy#1 // cy zp[1]:9 1501.5
|
||||
char gfx_init_screen0::cy#4 // cy zp[1]:9 1200.3
|
||||
void main()
|
||||
char main::$3 // reg byte a 202.0
|
||||
char main::$4 // reg byte a 202.0
|
||||
|
@ -104,11 +104,11 @@ char main::rst#1 // reg byte x 57.714285714285715
|
|||
|
||||
reg byte x [ main::j#2 main::j#1 ]
|
||||
reg byte x [ gfx_init_screen0::cx#2 gfx_init_screen0::cx#1 ]
|
||||
zp[1]:2 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
zp[2]:3 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
zp[1]:5 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
zp[2]:6 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
zp[1]:8 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
zp[1]:9 [ gfx_init_plane_charset8::ch#8 gfx_init_plane_charset8::ch#1 gfx_init_screen0::cy#4 gfx_init_screen0::cy#1 ]
|
||||
zp[2]:6 [ gfx_init_plane_charset8::chargen#2 gfx_init_plane_charset8::chargen#3 gfx_init_plane_charset8::chargen#1 gfx_init_screen0::ch#2 gfx_init_screen0::ch#3 gfx_init_screen0::ch#1 ]
|
||||
zp[1]:2 [ gfx_init_plane_charset8::bits#2 gfx_init_plane_charset8::bits#0 gfx_init_plane_charset8::bits#1 ]
|
||||
zp[2]:3 [ gfx_init_plane_charset8::gfxa#2 gfx_init_plane_charset8::gfxa#5 gfx_init_plane_charset8::gfxa#6 gfx_init_plane_charset8::gfxa#1 ]
|
||||
zp[1]:5 [ gfx_init_plane_charset8::col#2 gfx_init_plane_charset8::col#5 gfx_init_plane_charset8::col#6 gfx_init_plane_charset8::col#1 ]
|
||||
reg byte x [ gfx_init_plane_charset8::cp#2 gfx_init_plane_charset8::cp#1 ]
|
||||
reg byte a [ gfx_init_plane_charset8::c#2 gfx_init_plane_charset8::c#3 ]
|
||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#2 ]
|
||||
|
@ -117,7 +117,7 @@ reg byte a [ main::$3 ]
|
|||
reg byte a [ main::$4 ]
|
||||
reg byte a [ main::$5 ]
|
||||
reg byte a [ gfx_init_screen0::$0 ]
|
||||
zp[1]:9 [ gfx_init_screen0::$1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
zp[1]:8 [ gfx_init_screen0::$1 gfx_init_plane_charset8::cr#6 gfx_init_plane_charset8::cr#1 ]
|
||||
reg byte a [ gfx_init_screen0::$2 ]
|
||||
reg byte a [ gfx_init_screen0::$3 ]
|
||||
reg byte a [ gfx_init_plane_charset8::$2 ]
|
||||
|
|
|
@ -276,10 +276,10 @@ main: {
|
|||
}
|
||||
// Initialize Plane with 8bpp chunky
|
||||
gfx_init_chunky: {
|
||||
.label __5 = 7
|
||||
.label gfxb = 5
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label __5 = 6
|
||||
.label gfxb = 2
|
||||
.label x = 4
|
||||
.label y = 8
|
||||
// dtvSetCpuBankSegment1(gfxbCpuBank++)
|
||||
lda #CHUNKY/$4000
|
||||
jsr dtvSetCpuBankSegment1
|
||||
|
|
|
@ -684,18 +684,18 @@ Complete equivalence classes
|
|||
[ main::$5 ]
|
||||
[ gfx_init_chunky::$5 ]
|
||||
[ gfx_init_chunky::c#0 ]
|
||||
Allocated zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Allocated zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
Allocated zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
Allocated zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
Allocated zp[1]:9 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
Allocated zp[1]:10 [ main::rst#1 ]
|
||||
Allocated zp[1]:11 [ main::$3 ]
|
||||
Allocated zp[1]:12 [ main::$4 ]
|
||||
Allocated zp[1]:13 [ main::$5 ]
|
||||
Allocated zp[2]:14 [ gfx_init_chunky::$5 ]
|
||||
Allocated zp[1]:16 [ gfx_init_chunky::c#0 ]
|
||||
Allocated zp[1]:2 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
Allocated zp[1]:3 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
Allocated zp[2]:4 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
Allocated zp[1]:6 [ gfx_init_chunky::c#0 ]
|
||||
Allocated zp[2]:7 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
Allocated zp[2]:9 [ gfx_init_chunky::$5 ]
|
||||
Allocated zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Allocated zp[1]:12 [ main::$3 ]
|
||||
Allocated zp[1]:13 [ main::$4 ]
|
||||
Allocated zp[1]:14 [ main::$5 ]
|
||||
Allocated zp[1]:15 [ main::rst#1 ]
|
||||
Allocated zp[1]:16 [ main::j#2 main::j#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *PROCPORT = PROCPORT_RAM_IO [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -717,15 +717,15 @@ Statement [22] *VICII_CONTROL1 = VICII_DEN|VICII_ECM|VICII_RSEL|3 [ ] ( [ ] { }
|
|||
Statement [23] *BORDER_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [24] if(*RASTER!=$42) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [28] main::$4 = VICII_DEN|VICII_ECM|VICII_RSEL | main::$3 [ main::rst#1 main::$4 ] ( [ main::rst#1 main::$4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ main::rst#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:15 [ main::rst#1 ]
|
||||
Statement [30] main::$5 = main::rst#1 << 4 [ main::rst#1 main::$5 ] ( [ main::rst#1 main::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [38] if(gfx_init_chunky::gfxb#3!=$8000) goto gfx_init_chunky::@3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#3 gfx_init_chunky::x#2 gfx_init_chunky::gfxbCpuBank#4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
Statement [43] gfx_init_chunky::$5 = gfx_init_chunky::x#2 + gfx_init_chunky::y#6 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 gfx_init_chunky::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [45] *gfx_init_chunky::gfxb#4 = gfx_init_chunky::c#0 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
Statement [48] if(gfx_init_chunky::x#1!=$140) goto gfx_init_chunky::@2 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
|
||||
Statement [1] *PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -755,44 +755,44 @@ Statement [43] gfx_init_chunky::$5 = gfx_init_chunky::x#2 + gfx_init_chunky::y#6
|
|||
Statement [45] *gfx_init_chunky::gfxb#4 = gfx_init_chunky::c#0 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#2 gfx_init_chunky::gfxb#4 ] { } ) always clobbers reg byte y
|
||||
Statement [48] if(gfx_init_chunky::x#1!=$140) goto gfx_init_chunky::@2 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] ( gfx_init_chunky:3 [ gfx_init_chunky::y#6 gfx_init_chunky::gfxb#1 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::x#1 ] { } ) always clobbers reg byte a
|
||||
Statement asm { .byte$32,$dd lda$ff .byte$32,$00 } always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] : zp[1]:6 , reg byte x ,
|
||||
Potential registers zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:9 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:10 [ main::rst#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ main::$3 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:12 [ main::$4 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ main::$5 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:14 [ gfx_init_chunky::$5 ] : zp[2]:14 ,
|
||||
Potential registers zp[1]:16 [ gfx_init_chunky::c#0 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:16 [ main::j#2 main::j#1 ] : zp[1]:16 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ] : zp[1]:11 , reg byte x ,
|
||||
Potential registers zp[2]:7 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:3 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[2]:4 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:2 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:15 [ main::rst#1 ] : zp[1]:15 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:12 [ main::$3 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ main::$4 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:14 [ main::$5 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:9 [ gfx_init_chunky::$5 ] : zp[2]:9 ,
|
||||
Potential registers zp[1]:6 [ gfx_init_chunky::c#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [dtvSetCpuBankSegment1] 13,004: zp[1]:9 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
Uplift Scope [gfx_init_chunky] 3,575.14: zp[1]:6 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] 2,925.35: zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] 2,002: zp[1]:16 [ gfx_init_chunky::c#0 ] 1,801.8: zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] 1,001: zp[2]:14 [ gfx_init_chunky::$5 ] 244.04: zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Uplift Scope [main] 202: zp[1]:11 [ main::$3 ] 202: zp[1]:12 [ main::$4 ] 202: zp[1]:13 [ main::$5 ] 57.71: zp[1]:10 [ main::rst#1 ] 38.5: zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Uplift Scope [dtvSetCpuBankSegment1] 13,004: zp[1]:2 [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
Uplift Scope [gfx_init_chunky] 3,575.14: zp[1]:3 [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] 2,925.35: zp[2]:4 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] 2,002: zp[1]:6 [ gfx_init_chunky::c#0 ] 1,801.8: zp[2]:7 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] 1,001: zp[2]:9 [ gfx_init_chunky::$5 ] 244.04: zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Uplift Scope [main] 202: zp[1]:12 [ main::$3 ] 202: zp[1]:13 [ main::$4 ] 202: zp[1]:14 [ main::$5 ] 57.71: zp[1]:15 [ main::rst#1 ] 38.5: zp[1]:16 [ main::j#2 main::j#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [dtvSetCpuBankSegment1] best 26159 combination reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
Uplifting [gfx_init_chunky] best 25129 combination reg byte x [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] zp[2]:7 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] reg byte a [ gfx_init_chunky::c#0 ] zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] zp[2]:14 [ gfx_init_chunky::$5 ] zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Uplifting [main] best 22529 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Uplifting [gfx_init_chunky] best 25129 combination reg byte x [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ] zp[2]:4 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ] reg byte a [ gfx_init_chunky::c#0 ] zp[2]:7 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ] zp[2]:9 [ gfx_init_chunky::$5 ] zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Uplifting [main] best 22529 combination reg byte a [ main::$3 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] reg byte x [ main::rst#1 ] zp[1]:16 [ main::j#2 main::j#1 ]
|
||||
Limited combination testing to 100 combinations of 768 possible.
|
||||
Uplifting [MOS6526_CIA] best 22529 combination
|
||||
Uplifting [MOS6569_VICII] best 22529 combination
|
||||
Uplifting [MOS6581_SID] best 22529 combination
|
||||
Uplifting [] best 22529 combination
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Uplifting [gfx_init_chunky] best 22529 combination zp[1]:3 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Uplifting [gfx_init_chunky] best 22529 combination zp[1]:11 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:16 [ main::j#2 main::j#1 ]
|
||||
Uplifting [main] best 22409 combination reg byte x [ main::j#2 main::j#1 ]
|
||||
Allocated (was zp[1]:3) zp[1]:2 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
Allocated (was zp[2]:4) zp[2]:3 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
Allocated (was zp[2]:7) zp[2]:5 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
Allocated (was zp[2]:14) zp[2]:7 [ gfx_init_chunky::$5 ]
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
Allocated (was zp[2]:7) zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
Allocated (was zp[2]:9) zp[2]:6 [ gfx_init_chunky::$5 ]
|
||||
Allocated (was zp[1]:11) zp[1]:8 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -1103,10 +1103,10 @@ main: {
|
|||
// gfx_init_chunky
|
||||
// Initialize Plane with 8bpp chunky
|
||||
gfx_init_chunky: {
|
||||
.label __5 = 7
|
||||
.label gfxb = 5
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label __5 = 6
|
||||
.label gfxb = 2
|
||||
.label x = 4
|
||||
.label y = 8
|
||||
// [35] call dtvSetCpuBankSegment1
|
||||
// [54] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1]
|
||||
dtvSetCpuBankSegment1_from_gfx_init_chunky:
|
||||
|
@ -1364,25 +1364,25 @@ char dtvSetCpuBankSegment1::cpuBankIdx
|
|||
char dtvSetCpuBankSegment1::cpuBankIdx#1 // reg byte a 2002.0
|
||||
char dtvSetCpuBankSegment1::cpuBankIdx#3 // reg byte a 11002.0
|
||||
void gfx_init_chunky()
|
||||
unsigned int gfx_init_chunky::$5 // zp[2]:7 1001.0
|
||||
unsigned int gfx_init_chunky::$5 // zp[2]:6 1001.0
|
||||
char gfx_init_chunky::c
|
||||
char gfx_init_chunky::c#0 // reg byte a 2002.0
|
||||
char *gfx_init_chunky::gfxb
|
||||
char *gfx_init_chunky::gfxb#1 // gfxb zp[2]:5 420.59999999999997
|
||||
char *gfx_init_chunky::gfxb#3 // gfxb zp[2]:5 1552.0
|
||||
char *gfx_init_chunky::gfxb#4 // gfxb zp[2]:5 750.75
|
||||
char *gfx_init_chunky::gfxb#5 // gfxb zp[2]:5 202.0
|
||||
char *gfx_init_chunky::gfxb#1 // gfxb zp[2]:2 420.59999999999997
|
||||
char *gfx_init_chunky::gfxb#3 // gfxb zp[2]:2 1552.0
|
||||
char *gfx_init_chunky::gfxb#4 // gfxb zp[2]:2 750.75
|
||||
char *gfx_init_chunky::gfxb#5 // gfxb zp[2]:2 202.0
|
||||
char gfx_init_chunky::gfxbCpuBank
|
||||
char gfx_init_chunky::gfxbCpuBank#2 // reg byte x 2002.0
|
||||
char gfx_init_chunky::gfxbCpuBank#4 // reg byte x 1026.25
|
||||
char gfx_init_chunky::gfxbCpuBank#7 // reg byte x 202.0
|
||||
char gfx_init_chunky::gfxbCpuBank#8 // reg byte x 344.8888888888889
|
||||
unsigned int gfx_init_chunky::x
|
||||
unsigned int gfx_init_chunky::x#1 // x zp[2]:3 1501.5
|
||||
unsigned int gfx_init_chunky::x#2 // x zp[2]:3 300.29999999999995
|
||||
unsigned int gfx_init_chunky::x#1 // x zp[2]:4 1501.5
|
||||
unsigned int gfx_init_chunky::x#2 // x zp[2]:4 300.29999999999995
|
||||
char gfx_init_chunky::y
|
||||
char gfx_init_chunky::y#1 // y zp[1]:2 151.5
|
||||
char gfx_init_chunky::y#6 // y zp[1]:2 92.53846153846155
|
||||
char gfx_init_chunky::y#1 // y zp[1]:8 151.5
|
||||
char gfx_init_chunky::y#6 // y zp[1]:8 92.53846153846155
|
||||
void main()
|
||||
char main::$3 // reg byte a 202.0
|
||||
char main::$4 // reg byte a 202.0
|
||||
|
@ -1394,16 +1394,16 @@ char main::rst
|
|||
char main::rst#1 // reg byte x 57.714285714285715
|
||||
|
||||
reg byte x [ main::j#2 main::j#1 ]
|
||||
zp[1]:2 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
zp[2]:3 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
zp[1]:8 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
reg byte x [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
zp[2]:5 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
zp[2]:2 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
reg byte x [ main::rst#1 ]
|
||||
reg byte a [ main::$3 ]
|
||||
reg byte a [ main::$4 ]
|
||||
reg byte a [ main::$5 ]
|
||||
zp[2]:7 [ gfx_init_chunky::$5 ]
|
||||
zp[2]:6 [ gfx_init_chunky::$5 ]
|
||||
reg byte a [ gfx_init_chunky::c#0 ]
|
||||
|
||||
|
||||
|
@ -1737,10 +1737,10 @@ main: {
|
|||
// gfx_init_chunky
|
||||
// Initialize Plane with 8bpp chunky
|
||||
gfx_init_chunky: {
|
||||
.label __5 = 7
|
||||
.label gfxb = 5
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label __5 = 6
|
||||
.label gfxb = 2
|
||||
.label x = 4
|
||||
.label y = 8
|
||||
// dtvSetCpuBankSegment1(gfxbCpuBank++)
|
||||
// [35] call dtvSetCpuBankSegment1
|
||||
// [54] phi from gfx_init_chunky to dtvSetCpuBankSegment1 [phi:gfx_init_chunky->dtvSetCpuBankSegment1]
|
||||
|
|
|
@ -36,25 +36,25 @@ char dtvSetCpuBankSegment1::cpuBankIdx
|
|||
char dtvSetCpuBankSegment1::cpuBankIdx#1 // reg byte a 2002.0
|
||||
char dtvSetCpuBankSegment1::cpuBankIdx#3 // reg byte a 11002.0
|
||||
void gfx_init_chunky()
|
||||
unsigned int gfx_init_chunky::$5 // zp[2]:7 1001.0
|
||||
unsigned int gfx_init_chunky::$5 // zp[2]:6 1001.0
|
||||
char gfx_init_chunky::c
|
||||
char gfx_init_chunky::c#0 // reg byte a 2002.0
|
||||
char *gfx_init_chunky::gfxb
|
||||
char *gfx_init_chunky::gfxb#1 // gfxb zp[2]:5 420.59999999999997
|
||||
char *gfx_init_chunky::gfxb#3 // gfxb zp[2]:5 1552.0
|
||||
char *gfx_init_chunky::gfxb#4 // gfxb zp[2]:5 750.75
|
||||
char *gfx_init_chunky::gfxb#5 // gfxb zp[2]:5 202.0
|
||||
char *gfx_init_chunky::gfxb#1 // gfxb zp[2]:2 420.59999999999997
|
||||
char *gfx_init_chunky::gfxb#3 // gfxb zp[2]:2 1552.0
|
||||
char *gfx_init_chunky::gfxb#4 // gfxb zp[2]:2 750.75
|
||||
char *gfx_init_chunky::gfxb#5 // gfxb zp[2]:2 202.0
|
||||
char gfx_init_chunky::gfxbCpuBank
|
||||
char gfx_init_chunky::gfxbCpuBank#2 // reg byte x 2002.0
|
||||
char gfx_init_chunky::gfxbCpuBank#4 // reg byte x 1026.25
|
||||
char gfx_init_chunky::gfxbCpuBank#7 // reg byte x 202.0
|
||||
char gfx_init_chunky::gfxbCpuBank#8 // reg byte x 344.8888888888889
|
||||
unsigned int gfx_init_chunky::x
|
||||
unsigned int gfx_init_chunky::x#1 // x zp[2]:3 1501.5
|
||||
unsigned int gfx_init_chunky::x#2 // x zp[2]:3 300.29999999999995
|
||||
unsigned int gfx_init_chunky::x#1 // x zp[2]:4 1501.5
|
||||
unsigned int gfx_init_chunky::x#2 // x zp[2]:4 300.29999999999995
|
||||
char gfx_init_chunky::y
|
||||
char gfx_init_chunky::y#1 // y zp[1]:2 151.5
|
||||
char gfx_init_chunky::y#6 // y zp[1]:2 92.53846153846155
|
||||
char gfx_init_chunky::y#1 // y zp[1]:8 151.5
|
||||
char gfx_init_chunky::y#6 // y zp[1]:8 92.53846153846155
|
||||
void main()
|
||||
char main::$3 // reg byte a 202.0
|
||||
char main::$4 // reg byte a 202.0
|
||||
|
@ -66,14 +66,14 @@ char main::rst
|
|||
char main::rst#1 // reg byte x 57.714285714285715
|
||||
|
||||
reg byte x [ main::j#2 main::j#1 ]
|
||||
zp[1]:2 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
zp[2]:3 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
zp[1]:8 [ gfx_init_chunky::y#6 gfx_init_chunky::y#1 ]
|
||||
zp[2]:4 [ gfx_init_chunky::x#2 gfx_init_chunky::x#1 ]
|
||||
reg byte x [ gfx_init_chunky::gfxbCpuBank#4 gfx_init_chunky::gfxbCpuBank#7 gfx_init_chunky::gfxbCpuBank#8 gfx_init_chunky::gfxbCpuBank#2 ]
|
||||
zp[2]:5 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
zp[2]:2 [ gfx_init_chunky::gfxb#4 gfx_init_chunky::gfxb#3 gfx_init_chunky::gfxb#5 gfx_init_chunky::gfxb#1 ]
|
||||
reg byte a [ dtvSetCpuBankSegment1::cpuBankIdx#3 dtvSetCpuBankSegment1::cpuBankIdx#1 ]
|
||||
reg byte x [ main::rst#1 ]
|
||||
reg byte a [ main::$3 ]
|
||||
reg byte a [ main::$4 ]
|
||||
reg byte a [ main::$5 ]
|
||||
zp[2]:7 [ gfx_init_chunky::$5 ]
|
||||
zp[2]:6 [ gfx_init_chunky::$5 ]
|
||||
reg byte a [ gfx_init_chunky::c#0 ]
|
||||
|
|
|
@ -324,8 +324,8 @@ Added variable main::$0 to live range equivalence class [ main::$0 ]
|
|||
Complete equivalence classes
|
||||
[ main::r#2 main::r#1 ]
|
||||
[ main::$0 ]
|
||||
Allocated zp[1]:2 [ main::r#2 main::r#1 ]
|
||||
Allocated zp[1]:3 [ main::$0 ]
|
||||
Allocated zp[1]:2 [ main::$0 ]
|
||||
Allocated zp[1]:3 [ main::r#2 main::r#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *DTV_BLITTER_CONTROL2 = DTV_BLIT_CLEAR_IRQ [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -360,7 +360,7 @@ Statement [29] *DTV_BLITTER_TRANSPARANCY = DTV_BLIT_TRANSPARANCY_NONE [ ] ( [ ]
|
|||
Statement [30] *DTV_BLITTER_CONTROL = DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [31] *DTV_BLITTER_CONTROL2 = DTV_BLIT_DEST_CONT [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [33] main::$0 = *DTV_BLITTER_CONTROL2 & DTV_BLIT_STATUS_BUSY [ main::r#2 main::$0 ] ( [ main::r#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::r#2 main::r#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::r#2 main::r#1 ]
|
||||
Statement [35] *DTV_BLITTER_CONTROL = DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD [ main::r#2 ] ( [ main::r#2 ] { } ) always clobbers reg byte a
|
||||
Statement [0] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *DTV_BLITTER_CONTROL2 = DTV_BLIT_CLEAR_IRQ [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -396,11 +396,11 @@ Statement [30] *DTV_BLITTER_CONTROL = DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV
|
|||
Statement [31] *DTV_BLITTER_CONTROL2 = DTV_BLIT_DEST_CONT [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [33] main::$0 = *DTV_BLITTER_CONTROL2 & DTV_BLIT_STATUS_BUSY [ main::r#2 main::$0 ] ( [ main::r#2 main::$0 ] { } ) always clobbers reg byte a
|
||||
Statement [35] *DTV_BLITTER_CONTROL = DTV_BLIT_FORCE_START|DTV_BLIT_SRCA_FWD|DTV_BLIT_SRCB_FWD|DTV_BLIT_DEST_FWD [ main::r#2 ] ( [ main::r#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::r#2 main::r#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::$0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::r#2 main::r#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 202: zp[1]:3 [ main::$0 ] 72.5: zp[1]:2 [ main::r#2 main::r#1 ]
|
||||
Uplift Scope [main] 202: zp[1]:2 [ main::$0 ] 72.5: zp[1]:3 [ main::r#2 main::r#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
|
|
|
@ -200,25 +200,25 @@ Initial phi equivalence classes
|
|||
Complete equivalence classes
|
||||
[ main::r#2 main::r#1 ]
|
||||
[ main::c#2 main::c#1 ]
|
||||
Allocated zp[1]:2 [ main::r#2 main::r#1 ]
|
||||
Allocated zp[1]:3 [ main::c#2 main::c#1 ]
|
||||
Allocated zp[1]:2 [ main::c#2 main::c#1 ]
|
||||
Allocated zp[1]:3 [ main::r#2 main::r#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_BORDER_OFF|DTV_BADLINE_OFF [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [3] if(*RASTER!=$40) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [4] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [11] DTV_PALETTE[main::c#2] = main::palette[main::c#2] [ main::c#2 ] ( [ main::c#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::c#2 main::c#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::c#2 main::c#1 ]
|
||||
Statement [1] *DTV_FEATURE = DTV_FEATURE_ENABLE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *DTV_CONTROL = DTV_HIGHCOLOR|DTV_BORDER_OFF|DTV_BADLINE_OFF [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [3] if(*RASTER!=$40) goto main::@1 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [4] *BG_COLOR = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [11] DTV_PALETTE[main::c#2] = main::palette[main::c#2] [ main::c#2 ] ( [ main::c#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::r#2 main::r#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::c#2 main::c#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::r#2 main::r#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::c#2 main::c#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 353.5: zp[1]:3 [ main::c#2 main::c#1 ] 218.83: zp[1]:2 [ main::r#2 main::r#1 ]
|
||||
Uplift Scope [main] 353.5: zp[1]:2 [ main::c#2 main::c#1 ] 218.83: zp[1]:3 [ main::r#2 main::r#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
|
|
|
@ -212,28 +212,28 @@ Complete equivalence classes
|
|||
[ idx#13 idx#14 ]
|
||||
[ print::w#3 ]
|
||||
[ print::$0 ]
|
||||
Allocated zp[1]:2 [ idx#13 idx#14 ]
|
||||
Allocated zp[2]:3 [ print::w#3 ]
|
||||
Allocated zp[1]:5 [ print::$0 ]
|
||||
Allocated zp[1]:2 [ print::$0 ]
|
||||
Allocated zp[1]:3 [ idx#13 idx#14 ]
|
||||
Allocated zp[2]:4 [ print::w#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [8] print::$0 = idx#13 << 1 [ idx#13 print::w#3 print::$0 ] ( print:1 [ idx#13 print::w#3 print::$0 ] { } print:3 [ idx#13 print::w#3 print::$0 ] { { idx#13 = idx#14 } } print:5 [ idx#13 print::w#3 print::$0 ] { { idx#13 = idx#14 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ idx#13 idx#14 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#13 idx#14 ]
|
||||
Statement [9] SCREEN[print::$0] = print::w#3 [ idx#13 ] ( print:1 [ idx#13 ] { } print:3 [ idx#13 ] { { idx#13 = idx#14 } } print:5 [ idx#13 ] { { idx#13 = idx#14 } } ) always clobbers reg byte a
|
||||
Statement [8] print::$0 = idx#13 << 1 [ idx#13 print::w#3 print::$0 ] ( print:1 [ idx#13 print::w#3 print::$0 ] { } print:3 [ idx#13 print::w#3 print::$0 ] { { idx#13 = idx#14 } } print:5 [ idx#13 print::w#3 print::$0 ] { { idx#13 = idx#14 } } ) always clobbers reg byte a
|
||||
Statement [9] SCREEN[print::$0] = print::w#3 [ idx#13 ] ( print:1 [ idx#13 ] { } print:3 [ idx#13 ] { { idx#13 = idx#14 } } print:5 [ idx#13 ] { { idx#13 = idx#14 } } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ idx#13 idx#14 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ print::w#3 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:5 [ print::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ idx#13 idx#14 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:4 [ print::w#3 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:2 [ print::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print] 22: zp[1]:5 [ print::$0 ] 5.5: zp[2]:3 [ print::w#3 ]
|
||||
Uplift Scope [] 11.17: zp[1]:2 [ idx#13 idx#14 ]
|
||||
Uplift Scope [print] 22: zp[1]:2 [ print::$0 ] 5.5: zp[2]:4 [ print::w#3 ]
|
||||
Uplift Scope [] 11.17: zp[1]:3 [ idx#13 idx#14 ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [print] best 105 combination reg byte a [ print::$0 ] zp[2]:3 [ print::w#3 ]
|
||||
Uplifting [print] best 105 combination reg byte a [ print::$0 ] zp[2]:4 [ print::w#3 ]
|
||||
Uplifting [] best 98 combination reg byte x [ idx#13 idx#14 ]
|
||||
Uplifting [main] best 98 combination
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ print::w#3 ]
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ print::w#3 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
.segmentdef Data [startAfter="Code"]
|
||||
.segment Basic
|
||||
:BasicUpstart(main)
|
||||
.label screen = 3
|
||||
.label screen = 2
|
||||
.segment Code
|
||||
main: {
|
||||
// line(1,2)
|
||||
|
@ -29,9 +29,9 @@ main: {
|
|||
// }
|
||||
rts
|
||||
}
|
||||
// void line(char x0, __zp(2) char x1)
|
||||
// void line(char x0, __zp(4) char x1)
|
||||
line: {
|
||||
.label x1 = 2
|
||||
.label x1 = 4
|
||||
__b1:
|
||||
// for(byte x = x0; x<x1; x++)
|
||||
cpx.z x1
|
||||
|
|
|
@ -252,28 +252,30 @@ Complete equivalence classes
|
|||
[ line::x1#3 ]
|
||||
[ screen#18 screen#11 screen#3 ]
|
||||
[ line::x#2 line::x#0 line::x#1 ]
|
||||
Allocated zp[1]:2 [ line::x1#3 ]
|
||||
Allocated zp[1]:2 [ line::x#2 line::x#0 line::x#1 ]
|
||||
Allocated zp[2]:3 [ screen#18 screen#11 screen#3 ]
|
||||
Allocated zp[1]:5 [ line::x#2 line::x#0 line::x#1 ]
|
||||
Allocated zp[1]:5 [ line::x1#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [9] *screen#11 = line::x#2 [ line::x1#3 screen#11 line::x#2 ] ( line:1 [ line::x1#3 screen#11 line::x#2 ] { } line:3 [ line::x1#3 screen#11 line::x#2 ] { { screen#11 = screen#18 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ line::x1#3 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ line::x#2 line::x#0 line::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ line::x1#3 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ line::x#2 line::x#0 line::x#1 ]
|
||||
Statement [9] *screen#11 = line::x#2 [ line::x1#3 screen#11 line::x#2 ] ( line:1 [ line::x1#3 screen#11 line::x#2 ] { } line:3 [ line::x1#3 screen#11 line::x#2 ] { { screen#11 = screen#18 } } ) always clobbers reg byte y
|
||||
Potential registers zp[1]:2 [ line::x1#3 ] : zp[1]:2 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:5 [ line::x1#3 ] : zp[1]:5 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:3 [ screen#18 screen#11 screen#3 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:5 [ line::x#2 line::x#0 line::x#1 ] : zp[1]:5 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:2 [ line::x#2 line::x#0 line::x#1 ] : zp[1]:2 , reg byte a , reg byte x ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [line] 316.75: zp[1]:5 [ line::x#2 line::x#0 line::x#1 ] 16.83: zp[1]:2 [ line::x1#3 ]
|
||||
Uplift Scope [line] 316.75: zp[1]:2 [ line::x#2 line::x#0 line::x#1 ] 16.83: zp[1]:5 [ line::x1#3 ]
|
||||
Uplift Scope [] 166.67: zp[2]:3 [ screen#18 screen#11 screen#3 ]
|
||||
Uplift Scope [main]
|
||||
|
||||
Uplifting [line] best 444 combination reg byte x [ line::x#2 line::x#0 line::x#1 ] zp[1]:2 [ line::x1#3 ]
|
||||
Uplifting [line] best 444 combination reg byte x [ line::x#2 line::x#0 line::x#1 ] zp[1]:5 [ line::x1#3 ]
|
||||
Uplifting [] best 444 combination zp[2]:3 [ screen#18 screen#11 screen#3 ]
|
||||
Uplifting [main] best 444 combination
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ line::x1#3 ]
|
||||
Uplifting [line] best 444 combination zp[1]:2 [ line::x1#3 ]
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ line::x1#3 ]
|
||||
Uplifting [line] best 444 combination zp[1]:5 [ line::x1#3 ]
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ screen#18 screen#11 screen#3 ]
|
||||
Allocated (was zp[1]:5) zp[1]:4 [ line::x1#3 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -290,7 +292,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.segment Basic
|
||||
:BasicUpstart(main)
|
||||
// Global Constants & labels
|
||||
.label screen = 3
|
||||
.label screen = 2
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
|
@ -330,9 +332,9 @@ main: {
|
|||
rts
|
||||
}
|
||||
// line
|
||||
// void line(char x0, __zp(2) char x1)
|
||||
// void line(char x0, __zp(4) char x1)
|
||||
line: {
|
||||
.label x1 = 2
|
||||
.label x1 = 4
|
||||
// [6] phi from line line::@2 to line::@1 [phi:line/line::@2->line::@1]
|
||||
__b1_from_line:
|
||||
__b1_from___b2:
|
||||
|
@ -392,15 +394,15 @@ char line::x#1 // reg byte x 202.0
|
|||
char line::x#2 // reg byte x 103.75
|
||||
char line::x0
|
||||
char line::x1
|
||||
char line::x1#3 // x1 zp[1]:2 16.833333333333332
|
||||
char line::x1#3 // x1 zp[1]:4 16.833333333333332
|
||||
void main()
|
||||
char *screen
|
||||
char *screen#11 // screen zp[2]:3 52.66666666666666
|
||||
char *screen#18 // screen zp[2]:3 13.0
|
||||
char *screen#3 // screen zp[2]:3 101.0
|
||||
char *screen#11 // screen zp[2]:2 52.66666666666666
|
||||
char *screen#18 // screen zp[2]:2 13.0
|
||||
char *screen#3 // screen zp[2]:2 101.0
|
||||
|
||||
zp[1]:2 [ line::x1#3 ]
|
||||
zp[2]:3 [ screen#18 screen#11 screen#3 ]
|
||||
zp[1]:4 [ line::x1#3 ]
|
||||
zp[2]:2 [ screen#18 screen#11 screen#3 ]
|
||||
reg byte x [ line::x#2 line::x#0 line::x#1 ]
|
||||
|
||||
|
||||
|
@ -421,7 +423,7 @@ Score: 378
|
|||
.segment Basic
|
||||
:BasicUpstart(main)
|
||||
// Global Constants & labels
|
||||
.label screen = 3
|
||||
.label screen = 2
|
||||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
|
@ -457,9 +459,9 @@ main: {
|
|||
rts
|
||||
}
|
||||
// line
|
||||
// void line(char x0, __zp(2) char x1)
|
||||
// void line(char x0, __zp(4) char x1)
|
||||
line: {
|
||||
.label x1 = 2
|
||||
.label x1 = 4
|
||||
// [6] phi from line line::@2 to line::@1 [phi:line/line::@2->line::@1]
|
||||
// [6] phi screen#11 = screen#18 [phi:line/line::@2->line::@1#0] -- register_copy
|
||||
// [6] phi line::x#2 = line::x#0 [phi:line/line::@2->line::@1#1] -- register_copy
|
||||
|
|
|
@ -5,13 +5,13 @@ char line::x#1 // reg byte x 202.0
|
|||
char line::x#2 // reg byte x 103.75
|
||||
char line::x0
|
||||
char line::x1
|
||||
char line::x1#3 // x1 zp[1]:2 16.833333333333332
|
||||
char line::x1#3 // x1 zp[1]:4 16.833333333333332
|
||||
void main()
|
||||
char *screen
|
||||
char *screen#11 // screen zp[2]:3 52.66666666666666
|
||||
char *screen#18 // screen zp[2]:3 13.0
|
||||
char *screen#3 // screen zp[2]:3 101.0
|
||||
char *screen#11 // screen zp[2]:2 52.66666666666666
|
||||
char *screen#18 // screen zp[2]:2 13.0
|
||||
char *screen#3 // screen zp[2]:2 101.0
|
||||
|
||||
zp[1]:2 [ line::x1#3 ]
|
||||
zp[2]:3 [ screen#18 screen#11 screen#3 ]
|
||||
zp[1]:4 [ line::x1#3 ]
|
||||
zp[2]:2 [ screen#18 screen#11 screen#3 ]
|
||||
reg byte x [ line::x#2 line::x#0 line::x#1 ]
|
||||
|
|
|
@ -127,22 +127,23 @@ Complete equivalence classes
|
|||
[ main::screen#2 main::screen#1 ]
|
||||
[ main::c#0 ]
|
||||
Allocated zp[2]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:4 [ main::screen#2 main::screen#1 ]
|
||||
Allocated zp[1]:6 [ main::c#0 ]
|
||||
Allocated zp[1]:4 [ main::c#0 ]
|
||||
Allocated zp[2]:5 [ main::screen#2 main::screen#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [2] if(main::i#2<$3e8) goto main::@2 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a
|
||||
Statement [4] main::c#0 = (char)main::i#2 [ main::i#2 main::screen#2 main::c#0 ] ( [ main::i#2 main::screen#2 main::c#0 ] { } ) always clobbers reg byte a
|
||||
Statement [5] *main::screen#2 = main::c#0 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte y
|
||||
Potential registers zp[2]:2 [ main::i#2 main::i#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ main::screen#2 main::screen#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ main::c#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:5 [ main::screen#2 main::screen#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[1]:4 [ main::c#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 28.6: zp[2]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::c#0 ] 19.25: zp[2]:4 [ main::screen#2 main::screen#1 ]
|
||||
Uplift Scope [main] 28.6: zp[2]:2 [ main::i#2 main::i#1 ] 22: zp[1]:4 [ main::c#0 ] 19.25: zp[2]:5 [ main::screen#2 main::screen#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 826 combination zp[2]:2 [ main::i#2 main::i#1 ] reg byte a [ main::c#0 ] zp[2]:4 [ main::screen#2 main::screen#1 ]
|
||||
Uplifting [main] best 826 combination zp[2]:2 [ main::i#2 main::i#1 ] reg byte a [ main::c#0 ] zp[2]:5 [ main::screen#2 main::screen#1 ]
|
||||
Uplifting [] best 826 combination
|
||||
Allocated (was zp[2]:5) zp[2]:4 [ main::screen#2 main::screen#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -18,13 +18,13 @@
|
|||
.label DEFAULT_SCREEN = $400
|
||||
// The number of bytes on the screen
|
||||
// The current cursor x-position
|
||||
.label conio_cursor_x = $a
|
||||
.label conio_cursor_x = $14
|
||||
// The current cursor y-position
|
||||
.label conio_cursor_y = $b
|
||||
.label conio_cursor_y = $f
|
||||
// The current text cursor line start
|
||||
.label conio_line_text = $c
|
||||
.label conio_line_text = $12
|
||||
// The current color cursor line start
|
||||
.label conio_line_color = $e
|
||||
.label conio_line_color = $10
|
||||
.segment Code
|
||||
__start: {
|
||||
// __ma char conio_cursor_x = 0
|
||||
|
@ -95,7 +95,7 @@ cputc: {
|
|||
rts
|
||||
}
|
||||
main: {
|
||||
.label signed_char_value = 2
|
||||
.label signed_char_value = $17
|
||||
// clrscr()
|
||||
jsr clrscr
|
||||
lda #-5
|
||||
|
@ -125,12 +125,12 @@ main: {
|
|||
// void gotoxy(char x, __register(X) char y)
|
||||
gotoxy: {
|
||||
.const x = 0
|
||||
.label __5 = $14
|
||||
.label __6 = $10
|
||||
.label __7 = $10
|
||||
.label line_offset = $10
|
||||
.label __8 = $12
|
||||
.label __9 = $10
|
||||
.label __5 = $1a
|
||||
.label __6 = $15
|
||||
.label __7 = $15
|
||||
.label line_offset = $15
|
||||
.label __8 = $18
|
||||
.label __9 = $15
|
||||
// if(y>CONIO_HEIGHT)
|
||||
cpx #$19+1
|
||||
bcc __b2
|
||||
|
@ -226,8 +226,8 @@ cputln: {
|
|||
}
|
||||
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
||||
clrscr: {
|
||||
.label line_text = 3
|
||||
.label line_cols = $1a
|
||||
.label line_text = 4
|
||||
.label line_cols = 8
|
||||
lda #<COLORRAM
|
||||
sta.z line_cols
|
||||
lda #>COLORRAM
|
||||
|
@ -294,9 +294,9 @@ clrscr: {
|
|||
iny
|
||||
jmp __b3
|
||||
}
|
||||
// void test_casting(__zp(3) int signed_short_value)
|
||||
// void test_casting(__zp(4) int signed_short_value)
|
||||
test_casting: {
|
||||
.label signed_short_value = 3
|
||||
.label signed_short_value = 4
|
||||
// printf("%d\n", signed_short_value)
|
||||
jsr printf_sint
|
||||
// printf("%d\n", signed_short_value)
|
||||
|
@ -379,10 +379,10 @@ cscroll: {
|
|||
rts
|
||||
}
|
||||
// Print a signed integer using a specific format
|
||||
// void printf_sint(void (*putc)(char), __zp(3) int value, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
||||
// void printf_sint(void (*putc)(char), __zp(4) int value, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
||||
printf_sint: {
|
||||
.label putc = cputc
|
||||
.label value = 3
|
||||
.label value = 4
|
||||
// printf_buffer.sign = 0
|
||||
// Handle any sign
|
||||
lda #0
|
||||
|
@ -414,10 +414,10 @@ printf_sint: {
|
|||
rts
|
||||
}
|
||||
/// Print a NUL-terminated string
|
||||
// void printf_str(__zp($1a) void (*putc)(char), __zp(8) const char *s)
|
||||
// void printf_str(__zp(8) void (*putc)(char), __zp($c) const char *s)
|
||||
printf_str: {
|
||||
.label s = 8
|
||||
.label putc = $1a
|
||||
.label s = $c
|
||||
.label putc = 8
|
||||
__b1:
|
||||
// while(c=*s++)
|
||||
ldy #0
|
||||
|
@ -441,13 +441,13 @@ printf_str: {
|
|||
}
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
// void * memcpy(__zp($18) void *destination, __zp(5) void *source, unsigned int num)
|
||||
// void * memcpy(__zp(6) void *destination, __zp(2) void *source, unsigned int num)
|
||||
memcpy: {
|
||||
.label src_end = $16
|
||||
.label dst = $18
|
||||
.label src = 5
|
||||
.label source = 5
|
||||
.label destination = $18
|
||||
.label src_end = $a
|
||||
.label dst = 6
|
||||
.label src = 2
|
||||
.label source = 2
|
||||
.label destination = 6
|
||||
// char* src_end = (char*)source+num
|
||||
lda.z source
|
||||
clc
|
||||
|
@ -483,11 +483,11 @@ memcpy: {
|
|||
jmp __b1
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(5) void *str, __register(X) char c, unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
||||
memset: {
|
||||
.label end = $18
|
||||
.label dst = 5
|
||||
.label str = 5
|
||||
.label end = 6
|
||||
.label dst = 2
|
||||
.label str = 2
|
||||
// char* end = (char*)str + num
|
||||
lda #$28
|
||||
clc
|
||||
|
@ -523,13 +523,13 @@ memset: {
|
|||
// - value : The number to be converted to RADIX
|
||||
// - buffer : receives the string representing the number and zero-termination.
|
||||
// - radix : The radix to convert the number to (from the enum RADIX)
|
||||
// void utoa(__zp(3) unsigned int value, __zp(8) char *buffer, char radix)
|
||||
// void utoa(__zp(4) unsigned int value, __zp($c) char *buffer, char radix)
|
||||
utoa: {
|
||||
.const max_digits = 5
|
||||
.label digit_value = $1a
|
||||
.label buffer = 8
|
||||
.label digit = 7
|
||||
.label value = 3
|
||||
.label digit_value = 8
|
||||
.label buffer = $c
|
||||
.label digit = $e
|
||||
.label value = 4
|
||||
lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
||||
sta.z buffer
|
||||
lda #>printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
||||
|
@ -628,12 +628,12 @@ printf_number_buffer: {
|
|||
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
|
||||
// (For decimal the subs used are 10000, 1000, 100, 10, 1)
|
||||
// returns : the value reduced by sub * digit so that it is less than sub.
|
||||
// __zp(3) unsigned int utoa_append(__zp(8) char *buffer, __zp(3) unsigned int value, __zp($1a) unsigned int sub)
|
||||
// __zp(4) unsigned int utoa_append(__zp($c) char *buffer, __zp(4) unsigned int value, __zp(8) unsigned int sub)
|
||||
utoa_append: {
|
||||
.label buffer = 8
|
||||
.label value = 3
|
||||
.label sub = $1a
|
||||
.label return = 3
|
||||
.label buffer = $c
|
||||
.label value = 4
|
||||
.label sub = 8
|
||||
.label return = 4
|
||||
ldx #0
|
||||
__b1:
|
||||
// while (value >= sub)
|
||||
|
|
|
@ -3422,52 +3422,52 @@ Complete equivalence classes
|
|||
[ utoa_append::sub#0 ]
|
||||
[ utoa_append::return#0 ]
|
||||
[ printf_buffer ]
|
||||
Allocated zp[1]:2 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
Allocated zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Allocated zp[1]:4 [ gotoxy::y#4 gotoxy::y#2 ]
|
||||
Allocated zp[1]:5 [ clrscr::l#2 clrscr::l#1 ]
|
||||
Allocated zp[2]:6 [ clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
Allocated zp[2]:8 [ clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
Allocated zp[1]:10 [ clrscr::c#2 clrscr::c#1 ]
|
||||
Allocated zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ]
|
||||
Allocated zp[2]:13 [ printf_str::putc#4 ]
|
||||
Allocated zp[2]:15 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
Allocated zp[2]:17 [ memcpy::source#2 ]
|
||||
Allocated zp[2]:19 [ memcpy::destination#2 ]
|
||||
Allocated zp[2]:21 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
Allocated zp[2]:23 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
Allocated zp[2]:25 [ memset::str#3 ]
|
||||
Allocated zp[1]:27 [ memset::c#4 ]
|
||||
Allocated zp[2]:28 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[1]:30 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Allocated zp[2]:31 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ]
|
||||
Allocated zp[1]:33 [ utoa::started#2 utoa::started#4 ]
|
||||
Allocated zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ]
|
||||
Allocated zp[2]:36 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ]
|
||||
Allocated zp[1]:38 [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
Allocated zp[1]:39 [ conio_cursor_x ]
|
||||
Allocated zp[1]:40 [ conio_cursor_y ]
|
||||
Allocated zp[2]:41 [ conio_line_text ]
|
||||
Allocated zp[2]:43 [ conio_line_color ]
|
||||
Allocated zp[1]:45 [ cputc::c#0 ]
|
||||
Allocated zp[2]:46 [ test_casting::signed_short_value#0 ]
|
||||
Allocated zp[2]:48 [ gotoxy::$7 ]
|
||||
Allocated zp[2]:50 [ gotoxy::$8 ]
|
||||
Allocated zp[2]:52 [ gotoxy::$9 ]
|
||||
Allocated zp[2]:54 [ gotoxy::line_offset#0 ]
|
||||
Allocated zp[2]:56 [ gotoxy::$5 ]
|
||||
Allocated zp[2]:58 [ gotoxy::$6 ]
|
||||
Allocated zp[1]:60 [ printf_number_buffer::buffer_sign#0 ]
|
||||
Allocated zp[1]:61 [ printf_str::c#1 ]
|
||||
Allocated zp[2]:62 [ memcpy::src_end#0 ]
|
||||
Allocated zp[2]:64 [ memset::end#0 ]
|
||||
Allocated zp[1]:66 [ utoa::$11 ]
|
||||
Allocated zp[2]:67 [ utoa::buffer#3 ]
|
||||
Allocated zp[1]:69 [ utoa::$10 ]
|
||||
Allocated zp[2]:70 [ utoa::digit_value#0 ]
|
||||
Allocated zp[2]:72 [ utoa_append::buffer#0 ]
|
||||
Allocated zp[2]:74 [ utoa_append::sub#0 ]
|
||||
Allocated zp[2]:76 [ utoa_append::return#0 ]
|
||||
Allocated zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
Allocated zp[2]:6 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ]
|
||||
Allocated zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
Allocated zp[1]:10 [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
Allocated zp[2]:11 [ utoa_append::sub#0 ]
|
||||
Allocated zp[2]:13 [ memset::end#0 ]
|
||||
Allocated zp[1]:15 [ memset::c#4 ]
|
||||
Allocated zp[2]:16 [ memcpy::src_end#0 ]
|
||||
Allocated zp[2]:18 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
Allocated zp[1]:20 [ printf_str::c#1 ]
|
||||
Allocated zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ]
|
||||
Allocated zp[2]:23 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ]
|
||||
Allocated zp[1]:25 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Allocated zp[1]:26 [ utoa::$10 ]
|
||||
Allocated zp[2]:27 [ utoa_append::return#0 ]
|
||||
Allocated zp[1]:29 [ utoa::started#2 utoa::started#4 ]
|
||||
Allocated zp[2]:30 [ utoa_append::buffer#0 ]
|
||||
Allocated zp[2]:32 [ utoa::digit_value#0 ]
|
||||
Allocated zp[1]:34 [ conio_cursor_y ]
|
||||
Allocated zp[2]:35 [ conio_line_color ]
|
||||
Allocated zp[2]:37 [ conio_line_text ]
|
||||
Allocated zp[1]:39 [ cputc::c#0 ]
|
||||
Allocated zp[1]:40 [ conio_cursor_x ]
|
||||
Allocated zp[1]:41 [ utoa::$11 ]
|
||||
Allocated zp[2]:42 [ utoa::buffer#3 ]
|
||||
Allocated zp[1]:44 [ printf_number_buffer::buffer_sign#0 ]
|
||||
Allocated zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ]
|
||||
Allocated zp[1]:47 [ clrscr::c#2 clrscr::c#1 ]
|
||||
Allocated zp[2]:48 [ clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
Allocated zp[2]:50 [ clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
Allocated zp[1]:52 [ clrscr::l#2 clrscr::l#1 ]
|
||||
Allocated zp[2]:53 [ test_casting::signed_short_value#0 ]
|
||||
Allocated zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Allocated zp[2]:56 [ gotoxy::$8 ]
|
||||
Allocated zp[2]:58 [ gotoxy::$9 ]
|
||||
Allocated zp[2]:60 [ gotoxy::$5 ]
|
||||
Allocated zp[2]:62 [ gotoxy::$6 ]
|
||||
Allocated zp[2]:64 [ gotoxy::$7 ]
|
||||
Allocated zp[1]:66 [ gotoxy::y#4 gotoxy::y#2 ]
|
||||
Allocated zp[2]:67 [ gotoxy::line_offset#0 ]
|
||||
Allocated zp[1]:69 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
Allocated zp[2]:70 [ printf_str::putc#4 ]
|
||||
Allocated zp[2]:72 [ memcpy::source#2 ]
|
||||
Allocated zp[2]:74 [ memcpy::destination#2 ]
|
||||
Allocated zp[2]:76 [ memset::str#3 ]
|
||||
Allocated mem[12] [ printf_buffer ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] conio_cursor_x = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
||||
|
@ -3475,16 +3475,16 @@ Statement [2] conio_cursor_y = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) a
|
|||
Statement [3] conio_line_text = DEFAULT_SCREEN [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
||||
Statement [4] conio_line_color = COLORRAM [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
||||
Statement [16] cputc::c#0 = stackidx(char,cputc::OFFSET_STACK_C) [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color cputc::c#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a reg byte x
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Removing always clobbered register reg byte x as potential for zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Statement [18] conio_line_text[conio_cursor_x] = cputc::c#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Statement [19] conio_line_color[conio_cursor_x] = LIGHT_BLUE [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [21] if(conio_cursor_x!=$28) goto cputc::@return [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [30] if(main::signed_char_value#2!=0) goto main::@2 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::signed_char_value#2 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::signed_char_value#2 printf_buffer ] { } ) always clobbers reg byte a
|
||||
Statement [33] test_casting::signed_short_value#0 = main::signed_char_value#1 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::signed_char_value#1 test_casting::signed_short_value#0 printf_buffer ] ( main:7 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color main::signed_char_value#1 test_casting::signed_short_value#0 printf_buffer ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 } } ) always clobbers reg byte a
|
||||
Statement [38] conio_cursor_x = gotoxy::x#2 [ gotoxy::y#4 ] ( gotoxy:14 [ gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::y#4 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ gotoxy::y#4 gotoxy::y#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:66 [ gotoxy::y#4 gotoxy::y#2 ]
|
||||
Statement [40] gotoxy::$7 = (unsigned int)gotoxy::y#4 [ gotoxy::$7 ] ( gotoxy:14 [ gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$7 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
||||
Statement [41] gotoxy::$8 = gotoxy::$7 << 2 [ gotoxy::$7 gotoxy::$8 ] ( gotoxy:14 [ gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$7 gotoxy::$8 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
||||
Statement [42] gotoxy::$9 = gotoxy::$8 + gotoxy::$7 [ gotoxy::$9 ] ( gotoxy:14 [ gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } conio_c64_init:5::gotoxy:14 [ printf_buffer gotoxy::$9 ] { { gotoxy::y#2 = conio_c64_init::line#2 } } ) always clobbers reg byte a
|
||||
|
@ -3501,10 +3501,10 @@ Statement [59] conio_cursor_y = 0 [ conio_cursor_x conio_cursor_y ] ( main:7::cl
|
|||
Statement [60] conio_line_text = DEFAULT_SCREEN [ conio_cursor_x conio_cursor_y conio_line_text ] ( main:7::clrscr:28 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text ] { } ) always clobbers reg byte a
|
||||
Statement [61] conio_line_color = COLORRAM [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] ( main:7::clrscr:28 [ printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } ) always clobbers reg byte a
|
||||
Statement [65] clrscr::line_text#1 = clrscr::line_text#5 + $28 [ clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] ( main:7::clrscr:28 [ printf_buffer clrscr::l#2 clrscr::line_cols#5 clrscr::line_text#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ clrscr::l#2 clrscr::l#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:52 [ clrscr::l#2 clrscr::l#1 ]
|
||||
Statement [66] clrscr::line_cols#1 = clrscr::line_cols#5 + $28 [ clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] ( main:7::clrscr:28 [ printf_buffer clrscr::l#2 clrscr::line_text#1 clrscr::line_cols#1 ] { } ) always clobbers reg byte a
|
||||
Statement [68] clrscr::line_text#5[clrscr::c#2] = ' ' [ clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:7::clrscr:28 [ printf_buffer clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ clrscr::c#2 clrscr::c#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:47 [ clrscr::c#2 clrscr::c#1 ]
|
||||
Statement [69] clrscr::line_cols#5[clrscr::c#2] = LIGHT_BLUE [ clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] ( main:7::clrscr:28 [ printf_buffer clrscr::l#2 clrscr::line_text#5 clrscr::line_cols#5 clrscr::c#2 ] { } ) always clobbers reg byte a
|
||||
Statement [71] printf_sint::value#1 = test_casting::signed_short_value#0 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_sint::value#1 printf_buffer ] ( main:7::test_casting:34 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_sint::value#1 printf_buffer ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [76] if(conio_cursor_y!=$19) goto cscroll::@return [ conio_cursor_y conio_line_text conio_line_color ] ( cputln:23::cscroll:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
|
@ -3524,17 +3524,17 @@ Statement [111] memcpy::dst#4 = (char *)memcpy::destination#2 [ memcpy::src_end#
|
|||
Statement [113] if(memcpy::src#2!=memcpy::src_end#0) goto memcpy::@2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:23::cscroll:53::memcpy:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memcpy:78 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memcpy:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memcpy:78 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:23::cscroll:53::memcpy:80 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memcpy:80 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memcpy:80 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memcpy:80 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [115] *memcpy::dst#2 = *memcpy::src#2 [ memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] ( cputln:23::cscroll:53::memcpy:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memcpy:78 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memcpy:78 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memcpy:78 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:23::cscroll:53::memcpy:80 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memcpy:80 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memcpy:80 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memcpy:80 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memcpy::src_end#0 memcpy::src#2 memcpy::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [119] memset::end#0 = (char *)memset::str#3 + $28 [ memset::str#3 memset::c#4 memset::end#0 ] ( cputln:23::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:23::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::str#3 memset::c#4 memset::end#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:27 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:15 [ memset::c#4 ]
|
||||
Statement [120] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( cputln:23::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:23::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#4 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [122] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:23::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:23::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [124] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( cputln:23::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:82 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:82 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:23::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:23::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } cputln:26::cscroll:53::memset:84 [ conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { } main:7::test_casting:34::printf_sint:72::printf_number_buffer:97::cputc:150::cputln:26::cscroll:53::memset:84 [ main::signed_char_value#1 printf_buffer conio_cursor_x conio_cursor_y conio_line_text conio_line_color memset::c#4 memset::end#0 memset::dst#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:27 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:15 [ memset::c#4 ]
|
||||
Statement [130] *utoa::buffer#11 = DIGITS[utoa::$11] [ printf_buffer utoa::buffer#11 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::buffer#11 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [131] utoa::buffer#3 = ++ utoa::buffer#11 [ printf_buffer utoa::buffer#3 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::buffer#3 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [132] *utoa::buffer#3 = 0 [ printf_buffer ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [134] utoa::$10 = utoa::digit#2 << 1 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::$10 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:30 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:33 [ utoa::started#2 utoa::started#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:25 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:29 [ utoa::started#2 utoa::started#4 ]
|
||||
Statement [135] utoa::digit_value#0 = RADIX_DECIMAL_VALUES[utoa::$10] [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [137] if(utoa::value#2>=utoa::digit_value#0) goto utoa::@5 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::value#2 utoa::started#2 utoa::buffer#11 utoa::digit_value#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement [140] utoa_append::buffer#0 = utoa::buffer#11 [ printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::value#2 utoa::buffer#11 utoa::digit_value#0 utoa_append::buffer#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
|
||||
|
@ -3544,9 +3544,9 @@ Statement [144] utoa_append::return#0 = utoa_append::value#2 [ printf_buffer uto
|
|||
Statement [145] utoa::value#0 = utoa_append::return#0 [ printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] ( main:7::test_casting:34::printf_sint:72::utoa:95 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa::value#0 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } } ) always clobbers reg byte a
|
||||
Statement sideeffect stackpullbytes(1) always clobbers reg byte a
|
||||
Statement [157] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:7::test_casting:34::printf_sint:72::utoa:95::utoa_append:143 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:38 [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
Statement [158] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] [ utoa_append::value#2 ] ( main:7::test_casting:34::printf_sint:72::utoa:95::utoa_append:143 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:30 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:25 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Statement [161] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:7::test_casting:34::printf_sint:72::utoa:95::utoa_append:143 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
|
||||
Statement [1] conio_cursor_x = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
||||
Statement [2] conio_cursor_y = 0 [ printf_buffer ] ( [ printf_buffer ] { } ) always clobbers reg byte a
|
||||
|
@ -3614,69 +3614,69 @@ Statement sideeffect stackpullbytes(1) always clobbers reg byte a
|
|||
Statement [157] if(utoa_append::value#2>=utoa_append::sub#0) goto utoa_append::@2 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] ( main:7::test_casting:34::printf_sint:72::utoa:95::utoa_append:143 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#2 utoa_append::digit#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
|
||||
Statement [158] *utoa_append::buffer#0 = DIGITS[utoa_append::digit#2] [ utoa_append::value#2 ] ( main:7::test_casting:34::printf_sint:72::utoa:95::utoa_append:143 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::value#2 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a reg byte y
|
||||
Statement [161] utoa_append::value#1 = utoa_append::value#2 - utoa_append::sub#0 [ utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] ( main:7::test_casting:34::printf_sint:72::utoa:95::utoa_append:143 [ main::signed_char_value#1 conio_cursor_x conio_cursor_y conio_line_text conio_line_color printf_buffer utoa::digit#2 utoa::buffer#11 utoa_append::buffer#0 utoa_append::sub#0 utoa_append::value#1 utoa_append::digit#1 ] { { test_casting::signed_short_value#0 = main::signed_char_value#1 printf_sint::value#1 } { utoa_append::buffer#0 = utoa::buffer#11 } { utoa_append::value#0 = utoa::value#2 } { utoa_append::sub#0 = utoa::digit_value#0 } { utoa_append::return#0 = utoa_append::value#2 } } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ conio_c64_init::line#2 conio_c64_init::line#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ] : zp[1]:3 ,
|
||||
Potential registers zp[1]:4 [ gotoxy::y#4 gotoxy::y#2 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ clrscr::l#2 clrscr::l#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:6 [ clrscr::line_text#5 clrscr::line_text#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:8 [ clrscr::line_cols#5 clrscr::line_cols#1 ] : zp[2]:8 ,
|
||||
Potential registers zp[1]:10 [ clrscr::c#2 clrscr::c#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:13 [ printf_str::putc#4 ] : zp[2]:13 ,
|
||||
Potential registers zp[2]:15 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] : zp[2]:15 ,
|
||||
Potential registers zp[2]:17 [ memcpy::source#2 ] : zp[2]:17 ,
|
||||
Potential registers zp[2]:19 [ memcpy::destination#2 ] : zp[2]:19 ,
|
||||
Potential registers zp[2]:21 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:23 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[2]:23 ,
|
||||
Potential registers zp[2]:25 [ memset::str#3 ] : zp[2]:25 ,
|
||||
Potential registers zp[1]:27 [ memset::c#4 ] : zp[1]:27 , reg byte x ,
|
||||
Potential registers zp[2]:28 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:28 ,
|
||||
Potential registers zp[1]:30 [ utoa::digit#2 utoa::digit#1 ] : zp[1]:30 , reg byte x ,
|
||||
Potential registers zp[2]:31 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] : zp[2]:31 ,
|
||||
Potential registers zp[1]:33 [ utoa::started#2 utoa::started#4 ] : zp[1]:33 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:36 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] : zp[2]:36 ,
|
||||
Potential registers zp[1]:38 [ utoa_append::digit#2 utoa_append::digit#1 ] : zp[1]:38 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:39 [ conio_cursor_x ] : zp[1]:39 ,
|
||||
Potential registers zp[1]:40 [ conio_cursor_y ] : zp[1]:40 ,
|
||||
Potential registers zp[2]:41 [ conio_line_text ] : zp[2]:41 ,
|
||||
Potential registers zp[2]:43 [ conio_line_color ] : zp[2]:43 ,
|
||||
Potential registers zp[1]:45 [ cputc::c#0 ] : zp[1]:45 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:46 [ test_casting::signed_short_value#0 ] : zp[2]:46 ,
|
||||
Potential registers zp[2]:48 [ gotoxy::$7 ] : zp[2]:48 ,
|
||||
Potential registers zp[2]:50 [ gotoxy::$8 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:52 [ gotoxy::$9 ] : zp[2]:52 ,
|
||||
Potential registers zp[2]:54 [ gotoxy::line_offset#0 ] : zp[2]:54 ,
|
||||
Potential registers zp[2]:56 [ gotoxy::$5 ] : zp[2]:56 ,
|
||||
Potential registers zp[2]:58 [ gotoxy::$6 ] : zp[2]:58 ,
|
||||
Potential registers zp[1]:60 [ printf_number_buffer::buffer_sign#0 ] : zp[1]:60 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:61 [ printf_str::c#1 ] : zp[1]:61 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:62 [ memcpy::src_end#0 ] : zp[2]:62 ,
|
||||
Potential registers zp[2]:64 [ memset::end#0 ] : zp[2]:64 ,
|
||||
Potential registers zp[1]:66 [ utoa::$11 ] : zp[1]:66 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:67 [ utoa::buffer#3 ] : zp[2]:67 ,
|
||||
Potential registers zp[1]:69 [ utoa::$10 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:70 [ utoa::digit_value#0 ] : zp[2]:70 ,
|
||||
Potential registers zp[2]:72 [ utoa_append::buffer#0 ] : zp[2]:72 ,
|
||||
Potential registers zp[2]:74 [ utoa_append::sub#0 ] : zp[2]:74 ,
|
||||
Potential registers zp[2]:76 [ utoa_append::return#0 ] : zp[2]:76 ,
|
||||
Potential registers zp[1]:69 [ conio_c64_init::line#2 conio_c64_init::line#0 ] : zp[1]:69 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ] : zp[1]:55 ,
|
||||
Potential registers zp[1]:66 [ gotoxy::y#4 gotoxy::y#2 ] : zp[1]:66 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:52 [ clrscr::l#2 clrscr::l#1 ] : zp[1]:52 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:50 [ clrscr::line_text#5 clrscr::line_text#1 ] : zp[2]:50 ,
|
||||
Potential registers zp[2]:48 [ clrscr::line_cols#5 clrscr::line_cols#1 ] : zp[2]:48 ,
|
||||
Potential registers zp[1]:47 [ clrscr::c#2 clrscr::c#1 ] : zp[1]:47 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ] : zp[2]:45 ,
|
||||
Potential registers zp[2]:70 [ printf_str::putc#4 ] : zp[2]:70 ,
|
||||
Potential registers zp[2]:18 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] : zp[2]:18 ,
|
||||
Potential registers zp[2]:72 [ memcpy::source#2 ] : zp[2]:72 ,
|
||||
Potential registers zp[2]:74 [ memcpy::destination#2 ] : zp[2]:74 ,
|
||||
Potential registers zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] : zp[2]:8 ,
|
||||
Potential registers zp[2]:76 [ memset::str#3 ] : zp[2]:76 ,
|
||||
Potential registers zp[1]:15 [ memset::c#4 ] : zp[1]:15 , reg byte x ,
|
||||
Potential registers zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:25 [ utoa::digit#2 utoa::digit#1 ] : zp[1]:25 , reg byte x ,
|
||||
Potential registers zp[2]:23 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] : zp[2]:23 ,
|
||||
Potential registers zp[1]:29 [ utoa::started#2 utoa::started#4 ] : zp[1]:29 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:6 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:10 [ utoa_append::digit#2 utoa_append::digit#1 ] : zp[1]:10 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:40 [ conio_cursor_x ] : zp[1]:40 ,
|
||||
Potential registers zp[1]:34 [ conio_cursor_y ] : zp[1]:34 ,
|
||||
Potential registers zp[2]:37 [ conio_line_text ] : zp[2]:37 ,
|
||||
Potential registers zp[2]:35 [ conio_line_color ] : zp[2]:35 ,
|
||||
Potential registers zp[1]:39 [ cputc::c#0 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:53 [ test_casting::signed_short_value#0 ] : zp[2]:53 ,
|
||||
Potential registers zp[2]:64 [ gotoxy::$7 ] : zp[2]:64 ,
|
||||
Potential registers zp[2]:56 [ gotoxy::$8 ] : zp[2]:56 ,
|
||||
Potential registers zp[2]:58 [ gotoxy::$9 ] : zp[2]:58 ,
|
||||
Potential registers zp[2]:67 [ gotoxy::line_offset#0 ] : zp[2]:67 ,
|
||||
Potential registers zp[2]:60 [ gotoxy::$5 ] : zp[2]:60 ,
|
||||
Potential registers zp[2]:62 [ gotoxy::$6 ] : zp[2]:62 ,
|
||||
Potential registers zp[1]:44 [ printf_number_buffer::buffer_sign#0 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:20 [ printf_str::c#1 ] : zp[1]:20 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:16 [ memcpy::src_end#0 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:13 [ memset::end#0 ] : zp[2]:13 ,
|
||||
Potential registers zp[1]:41 [ utoa::$11 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:42 [ utoa::buffer#3 ] : zp[2]:42 ,
|
||||
Potential registers zp[1]:26 [ utoa::$10 ] : zp[1]:26 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:32 [ utoa::digit_value#0 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:30 [ utoa_append::buffer#0 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:11 [ utoa_append::sub#0 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:27 [ utoa_append::return#0 ] : zp[2]:27 ,
|
||||
Potential registers mem[12] [ printf_buffer ] : mem[12] ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [memcpy] 301,250,000,004.25: zp[2]:21 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 202,333,333,337.67: zp[2]:23 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 12,625,000,000.25: zp[2]:62 [ memcpy::src_end#0 ] 0: zp[2]:17 [ memcpy::source#2 ] 0: zp[2]:19 [ memcpy::destination#2 ]
|
||||
Uplift Scope [utoa_append] 250,055,000,003.5: zp[2]:36 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 200,050,000,002.5: zp[1]:38 [ utoa_append::digit#2 utoa_append::digit#1 ] 33,335,000,000.5: zp[2]:74 [ utoa_append::sub#0 ] 20,000,002: zp[2]:76 [ utoa_append::return#0 ] 13,750,000.25: zp[2]:72 [ utoa_append::buffer#0 ]
|
||||
Uplift Scope [memset] 335,666,666,672.33: zp[2]:28 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 16,833,333,333.67: zp[2]:64 [ memset::end#0 ] 14,285,714,285.86: zp[1]:27 [ memset::c#4 ] 0: zp[2]:25 [ memset::str#3 ]
|
||||
Uplift Scope [printf_str] 251,500,004: zp[2]:15 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] 100,000,001: zp[1]:61 [ printf_str::c#1 ] 0: zp[2]:13 [ printf_str::putc#4 ]
|
||||
Uplift Scope [utoa] 37,871,432.5: zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 30,783,575.64: zp[2]:31 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 22,857,145.14: zp[1]:30 [ utoa::digit#2 utoa::digit#1 ] 20,000,002: zp[1]:69 [ utoa::$10 ] 15,000,001.5: zp[1]:33 [ utoa::started#2 utoa::started#4 ] 6,000,000.6: zp[2]:70 [ utoa::digit_value#0 ] 200,002: zp[1]:66 [ utoa::$11 ] 200,002: zp[2]:67 [ utoa::buffer#3 ]
|
||||
Uplift Scope [] 5,079,368.4: zp[1]:40 [ conio_cursor_y ] 3,622,954.25: zp[2]:43 [ conio_line_color ] 3,564,519.5: zp[2]:41 [ conio_line_text ] 319,153.4: zp[1]:39 [ conio_cursor_x ] 0: mem[12] [ printf_buffer ]
|
||||
Uplift Scope [cputc] 1,500,001.5: zp[1]:45 [ cputc::c#0 ]
|
||||
Uplift Scope [printf_number_buffer] 70,001: zp[1]:60 [ printf_number_buffer::buffer_sign#0 ]
|
||||
Uplift Scope [printf_sint] 40,337.67: zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ]
|
||||
Uplift Scope [clrscr] 32,503.25: zp[1]:10 [ clrscr::c#2 clrscr::c#1 ] 2,501.38: zp[2]:8 [ clrscr::line_cols#5 clrscr::line_cols#1 ] 2,382.05: zp[2]:6 [ clrscr::line_text#5 clrscr::line_text#1 ] 2,335.67: zp[1]:5 [ clrscr::l#2 clrscr::l#1 ]
|
||||
Uplift Scope [gotoxy] 202: zp[2]:50 [ gotoxy::$8 ] 202: zp[2]:52 [ gotoxy::$9 ] 202: zp[2]:56 [ gotoxy::$5 ] 202: zp[2]:58 [ gotoxy::$6 ] 151.5: zp[2]:48 [ gotoxy::$7 ] 138.33: zp[1]:4 [ gotoxy::y#4 gotoxy::y#2 ] 101: zp[2]:54 [ gotoxy::line_offset#0 ]
|
||||
Uplift Scope [test_casting] 1,102: zp[2]:46 [ test_casting::signed_short_value#0 ]
|
||||
Uplift Scope [main] 252.5: zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Uplift Scope [conio_c64_init] 33: zp[1]:2 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
Uplift Scope [memcpy] 301,250,000,004.25: zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] 202,333,333,337.67: zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] 12,625,000,000.25: zp[2]:16 [ memcpy::src_end#0 ] 0: zp[2]:72 [ memcpy::source#2 ] 0: zp[2]:74 [ memcpy::destination#2 ]
|
||||
Uplift Scope [utoa_append] 250,055,000,003.5: zp[2]:6 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] 200,050,000,002.5: zp[1]:10 [ utoa_append::digit#2 utoa_append::digit#1 ] 33,335,000,000.5: zp[2]:11 [ utoa_append::sub#0 ] 20,000,002: zp[2]:27 [ utoa_append::return#0 ] 13,750,000.25: zp[2]:30 [ utoa_append::buffer#0 ]
|
||||
Uplift Scope [memset] 335,666,666,672.33: zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 16,833,333,333.67: zp[2]:13 [ memset::end#0 ] 14,285,714,285.86: zp[1]:15 [ memset::c#4 ] 0: zp[2]:76 [ memset::str#3 ]
|
||||
Uplift Scope [printf_str] 251,500,004: zp[2]:18 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] 100,000,001: zp[1]:20 [ printf_str::c#1 ] 0: zp[2]:70 [ printf_str::putc#4 ]
|
||||
Uplift Scope [utoa] 37,871,432.5: zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] 30,783,575.64: zp[2]:23 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] 22,857,145.14: zp[1]:25 [ utoa::digit#2 utoa::digit#1 ] 20,000,002: zp[1]:26 [ utoa::$10 ] 15,000,001.5: zp[1]:29 [ utoa::started#2 utoa::started#4 ] 6,000,000.6: zp[2]:32 [ utoa::digit_value#0 ] 200,002: zp[1]:41 [ utoa::$11 ] 200,002: zp[2]:42 [ utoa::buffer#3 ]
|
||||
Uplift Scope [] 5,079,368.4: zp[1]:34 [ conio_cursor_y ] 3,622,954.25: zp[2]:35 [ conio_line_color ] 3,564,519.5: zp[2]:37 [ conio_line_text ] 319,153.4: zp[1]:40 [ conio_cursor_x ] 0: mem[12] [ printf_buffer ]
|
||||
Uplift Scope [cputc] 1,500,001.5: zp[1]:39 [ cputc::c#0 ]
|
||||
Uplift Scope [printf_number_buffer] 70,001: zp[1]:44 [ printf_number_buffer::buffer_sign#0 ]
|
||||
Uplift Scope [printf_sint] 40,337.67: zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ]
|
||||
Uplift Scope [clrscr] 32,503.25: zp[1]:47 [ clrscr::c#2 clrscr::c#1 ] 2,501.38: zp[2]:48 [ clrscr::line_cols#5 clrscr::line_cols#1 ] 2,382.05: zp[2]:50 [ clrscr::line_text#5 clrscr::line_text#1 ] 2,335.67: zp[1]:52 [ clrscr::l#2 clrscr::l#1 ]
|
||||
Uplift Scope [gotoxy] 202: zp[2]:56 [ gotoxy::$8 ] 202: zp[2]:58 [ gotoxy::$9 ] 202: zp[2]:60 [ gotoxy::$5 ] 202: zp[2]:62 [ gotoxy::$6 ] 151.5: zp[2]:64 [ gotoxy::$7 ] 138.33: zp[1]:66 [ gotoxy::y#4 gotoxy::y#2 ] 101: zp[2]:67 [ gotoxy::line_offset#0 ]
|
||||
Uplift Scope [test_casting] 1,102: zp[2]:53 [ test_casting::signed_short_value#0 ]
|
||||
Uplift Scope [main] 252.5: zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Uplift Scope [conio_c64_init] 33: zp[1]:69 [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
Uplift Scope [cputln]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
|
@ -3688,19 +3688,19 @@ Uplift Scope [printf_buffer_number]
|
|||
Uplift Scope [printf_format_string]
|
||||
Uplift Scope [__start]
|
||||
|
||||
Uplifting [memcpy] best 101002 combination zp[2]:21 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:23 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:62 [ memcpy::src_end#0 ] zp[2]:17 [ memcpy::source#2 ] zp[2]:19 [ memcpy::destination#2 ]
|
||||
Uplifting [utoa_append] best 94999 combination zp[2]:36 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:74 [ utoa_append::sub#0 ] zp[2]:76 [ utoa_append::return#0 ] zp[2]:72 [ utoa_append::buffer#0 ]
|
||||
Uplifting [memset] best 94893 combination zp[2]:28 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:64 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:25 [ memset::str#3 ]
|
||||
Uplifting [printf_str] best 94193 combination zp[2]:15 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] reg byte a [ printf_str::c#1 ] zp[2]:13 [ printf_str::putc#4 ]
|
||||
Uplifting [utoa] best 93087 combination zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:31 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:30 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:70 [ utoa::digit_value#0 ] reg byte x [ utoa::$11 ] zp[2]:67 [ utoa::buffer#3 ]
|
||||
Uplifting [] best 93087 combination zp[1]:40 [ conio_cursor_y ] zp[2]:43 [ conio_line_color ] zp[2]:41 [ conio_line_text ] zp[1]:39 [ conio_cursor_x ] mem[12] [ printf_buffer ]
|
||||
Uplifting [memcpy] best 101002 combination zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] zp[2]:16 [ memcpy::src_end#0 ] zp[2]:72 [ memcpy::source#2 ] zp[2]:74 [ memcpy::destination#2 ]
|
||||
Uplifting [utoa_append] best 94999 combination zp[2]:6 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ] zp[2]:11 [ utoa_append::sub#0 ] zp[2]:27 [ utoa_append::return#0 ] zp[2]:30 [ utoa_append::buffer#0 ]
|
||||
Uplifting [memset] best 94893 combination zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:13 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:76 [ memset::str#3 ]
|
||||
Uplifting [printf_str] best 94193 combination zp[2]:18 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] reg byte a [ printf_str::c#1 ] zp[2]:70 [ printf_str::putc#4 ]
|
||||
Uplifting [utoa] best 93087 combination zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] zp[2]:23 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] zp[1]:25 [ utoa::digit#2 utoa::digit#1 ] reg byte a [ utoa::$10 ] reg byte x [ utoa::started#2 utoa::started#4 ] zp[2]:32 [ utoa::digit_value#0 ] reg byte x [ utoa::$11 ] zp[2]:42 [ utoa::buffer#3 ]
|
||||
Uplifting [] best 93087 combination zp[1]:34 [ conio_cursor_y ] zp[2]:35 [ conio_line_color ] zp[2]:37 [ conio_line_text ] zp[1]:40 [ conio_cursor_x ] mem[12] [ printf_buffer ]
|
||||
Uplifting [cputc] best 93078 combination reg byte a [ cputc::c#0 ]
|
||||
Uplifting [printf_number_buffer] best 93071 combination reg byte a [ printf_number_buffer::buffer_sign#0 ]
|
||||
Uplifting [printf_sint] best 93071 combination zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ]
|
||||
Uplifting [clrscr] best 91481 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:8 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:6 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
||||
Uplifting [gotoxy] best 91468 combination zp[2]:50 [ gotoxy::$8 ] zp[2]:52 [ gotoxy::$9 ] zp[2]:56 [ gotoxy::$5 ] zp[2]:58 [ gotoxy::$6 ] zp[2]:48 [ gotoxy::$7 ] reg byte x [ gotoxy::y#4 gotoxy::y#2 ] zp[2]:54 [ gotoxy::line_offset#0 ]
|
||||
Uplifting [test_casting] best 91468 combination zp[2]:46 [ test_casting::signed_short_value#0 ]
|
||||
Uplifting [main] best 91468 combination zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Uplifting [printf_sint] best 93071 combination zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ]
|
||||
Uplifting [clrscr] best 91481 combination reg byte y [ clrscr::c#2 clrscr::c#1 ] zp[2]:48 [ clrscr::line_cols#5 clrscr::line_cols#1 ] zp[2]:50 [ clrscr::line_text#5 clrscr::line_text#1 ] reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
||||
Uplifting [gotoxy] best 91468 combination zp[2]:56 [ gotoxy::$8 ] zp[2]:58 [ gotoxy::$9 ] zp[2]:60 [ gotoxy::$5 ] zp[2]:62 [ gotoxy::$6 ] zp[2]:64 [ gotoxy::$7 ] reg byte x [ gotoxy::y#4 gotoxy::y#2 ] zp[2]:67 [ gotoxy::line_offset#0 ]
|
||||
Uplifting [test_casting] best 91468 combination zp[2]:53 [ test_casting::signed_short_value#0 ]
|
||||
Uplifting [main] best 91468 combination zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Uplifting [conio_c64_init] best 91456 combination reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
Uplifting [cputln] best 91456 combination
|
||||
Uplifting [MOS6526_CIA] best 91456 combination
|
||||
|
@ -3712,48 +3712,48 @@ Uplifting [printf_format_number] best 91456 combination
|
|||
Uplifting [printf_buffer_number] best 91456 combination
|
||||
Uplifting [printf_format_string] best 91456 combination
|
||||
Uplifting [__start] best 91456 combination
|
||||
Attempting to uplift remaining variables inzp[1]:30 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Uplifting [utoa] best 91456 combination zp[1]:30 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:40 [ conio_cursor_y ]
|
||||
Uplifting [] best 91456 combination zp[1]:40 [ conio_cursor_y ]
|
||||
Attempting to uplift remaining variables inzp[1]:39 [ conio_cursor_x ]
|
||||
Uplifting [] best 91456 combination zp[1]:39 [ conio_cursor_x ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Uplifting [main] best 91456 combination zp[1]:3 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ] ] with [ zp[2]:31 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] with [ zp[2]:46 [ test_casting::signed_short_value#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:17 [ memcpy::source#2 ] ] with [ zp[2]:21 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:19 [ memcpy::destination#2 ] ] with [ zp[2]:23 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:25 [ memset::str#3 ] ] with [ zp[2]:28 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] ] with [ zp[2]:67 [ utoa::buffer#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:72 [ utoa_append::buffer#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:36 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:76 [ utoa_append::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:48 [ gotoxy::$7 ] ] with [ zp[2]:52 [ gotoxy::$9 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:54 [ gotoxy::line_offset#0 ] ] with [ zp[2]:58 [ gotoxy::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:70 [ utoa::digit_value#0 ] ] with [ zp[2]:74 [ utoa_append::sub#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 ] ] with [ zp[2]:36 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:48 [ gotoxy::$7 gotoxy::$9 ] ] with [ zp[2]:54 [ gotoxy::line_offset#0 gotoxy::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:11 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 ] ] with [ zp[2]:6 [ clrscr::line_text#5 clrscr::line_text#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:13 [ printf_str::putc#4 ] ] with [ zp[2]:8 [ clrscr::line_cols#5 clrscr::line_cols#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:25 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:17 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:34 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ] ] with [ zp[2]:15 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:64 [ memset::end#0 ] ] with [ zp[2]:19 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:70 [ utoa::digit_value#0 utoa_append::sub#0 ] ] with [ zp[2]:13 [ printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ] ]
|
||||
Allocated (was zp[1]:3) zp[1]:2 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Allocated (was zp[2]:11) zp[2]:3 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
Allocated (was zp[2]:25) zp[2]:5 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
Allocated (was zp[1]:30) zp[1]:7 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Allocated (was zp[2]:34) zp[2]:8 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
Allocated (was zp[1]:39) zp[1]:10 [ conio_cursor_x ]
|
||||
Allocated (was zp[1]:40) zp[1]:11 [ conio_cursor_y ]
|
||||
Allocated (was zp[2]:41) zp[2]:12 [ conio_line_text ]
|
||||
Allocated (was zp[2]:43) zp[2]:14 [ conio_line_color ]
|
||||
Allocated (was zp[2]:48) zp[2]:16 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
||||
Allocated (was zp[2]:50) zp[2]:18 [ gotoxy::$8 ]
|
||||
Allocated (was zp[2]:56) zp[2]:20 [ gotoxy::$5 ]
|
||||
Allocated (was zp[2]:62) zp[2]:22 [ memcpy::src_end#0 ]
|
||||
Allocated (was zp[2]:64) zp[2]:24 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
Allocated (was zp[2]:70) zp[2]:26 [ utoa::digit_value#0 utoa_append::sub#0 printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:25 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Uplifting [utoa] best 91456 combination zp[1]:25 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:34 [ conio_cursor_y ]
|
||||
Uplifting [] best 91456 combination zp[1]:34 [ conio_cursor_y ]
|
||||
Attempting to uplift remaining variables inzp[1]:40 [ conio_cursor_x ]
|
||||
Uplifting [] best 91456 combination zp[1]:40 [ conio_cursor_x ]
|
||||
Attempting to uplift remaining variables inzp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Uplifting [main] best 91456 combination zp[1]:55 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Coalescing zero page register [ zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 ] ] with [ zp[2]:23 [ utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 ] ] with [ zp[2]:53 [ test_casting::signed_short_value#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:72 [ memcpy::source#2 ] ] with [ zp[2]:4 [ memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:74 [ memcpy::destination#2 ] ] with [ zp[2]:8 [ memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:76 [ memset::str#3 ] ] with [ zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 ] ] with [ zp[2]:42 [ utoa::buffer#3 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 ] ] with [ zp[2]:30 [ utoa_append::buffer#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:6 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 ] ] with [ zp[2]:27 [ utoa_append::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:64 [ gotoxy::$7 ] ] with [ zp[2]:58 [ gotoxy::$9 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:67 [ gotoxy::line_offset#0 ] ] with [ zp[2]:62 [ gotoxy::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:32 [ utoa::digit_value#0 ] ] with [ zp[2]:11 [ utoa_append::sub#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 ] ] with [ zp[2]:6 [ utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[2]:64 [ gotoxy::$7 gotoxy::$9 ] ] with [ zp[2]:67 [ gotoxy::line_offset#0 gotoxy::$6 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:45 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 ] ] with [ zp[2]:50 [ clrscr::line_text#5 clrscr::line_text#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:70 [ printf_str::putc#4 ] ] with [ zp[2]:48 [ clrscr::line_cols#5 clrscr::line_cols#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:76 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ] ] with [ zp[2]:72 [ memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:21 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 ] ] with [ zp[2]:18 [ printf_str::s#3 printf_str::s#4 printf_str::s#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:13 [ memset::end#0 ] ] with [ zp[2]:74 [ memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:32 [ utoa::digit_value#0 utoa_append::sub#0 ] ] with [ zp[2]:70 [ printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ] ]
|
||||
Allocated (was zp[2]:76) zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
Allocated (was zp[2]:45) zp[2]:4 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
Allocated (was zp[2]:13) zp[2]:6 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
Allocated (was zp[2]:32) zp[2]:8 [ utoa::digit_value#0 utoa_append::sub#0 printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
Allocated (was zp[2]:16) zp[2]:10 [ memcpy::src_end#0 ]
|
||||
Allocated (was zp[2]:21) zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
Allocated (was zp[1]:25) zp[1]:14 [ utoa::digit#2 utoa::digit#1 ]
|
||||
Allocated (was zp[1]:34) zp[1]:15 [ conio_cursor_y ]
|
||||
Allocated (was zp[2]:35) zp[2]:16 [ conio_line_color ]
|
||||
Allocated (was zp[2]:37) zp[2]:18 [ conio_line_text ]
|
||||
Allocated (was zp[1]:40) zp[1]:20 [ conio_cursor_x ]
|
||||
Allocated (was zp[2]:64) zp[2]:21 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
||||
Allocated (was zp[1]:55) zp[1]:23 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
Allocated (was zp[2]:56) zp[2]:24 [ gotoxy::$8 ]
|
||||
Allocated (was zp[2]:60) zp[2]:26 [ gotoxy::$5 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -3779,13 +3779,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.label DEFAULT_SCREEN = $400
|
||||
// The number of bytes on the screen
|
||||
// The current cursor x-position
|
||||
.label conio_cursor_x = $a
|
||||
.label conio_cursor_x = $14
|
||||
// The current cursor y-position
|
||||
.label conio_cursor_y = $b
|
||||
.label conio_cursor_y = $f
|
||||
// The current text cursor line start
|
||||
.label conio_line_text = $c
|
||||
.label conio_line_text = $12
|
||||
// The current color cursor line start
|
||||
.label conio_line_color = $e
|
||||
.label conio_line_color = $10
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -3911,7 +3911,7 @@ cputc: {
|
|||
}
|
||||
// main
|
||||
main: {
|
||||
.label signed_char_value = 2
|
||||
.label signed_char_value = $17
|
||||
// [28] call clrscr
|
||||
// [55] phi from main to clrscr [phi:main->clrscr]
|
||||
clrscr_from_main:
|
||||
|
@ -3957,12 +3957,12 @@ main: {
|
|||
// void gotoxy(char x, __register(X) char y)
|
||||
gotoxy: {
|
||||
.const x = 0
|
||||
.label __5 = $14
|
||||
.label __6 = $10
|
||||
.label __7 = $10
|
||||
.label line_offset = $10
|
||||
.label __8 = $12
|
||||
.label __9 = $10
|
||||
.label __5 = $1a
|
||||
.label __6 = $15
|
||||
.label __7 = $15
|
||||
.label line_offset = $15
|
||||
.label __8 = $18
|
||||
.label __9 = $15
|
||||
// [35] if(gotoxy::y#2<$19+1) goto gotoxy::@3 -- vbuxx_lt_vbuc1_then_la1
|
||||
cpx #$19+1
|
||||
bcc __b3_from_gotoxy
|
||||
|
@ -4086,8 +4086,8 @@ cputln: {
|
|||
// clrscr
|
||||
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
||||
clrscr: {
|
||||
.label line_text = 3
|
||||
.label line_cols = $1a
|
||||
.label line_text = 4
|
||||
.label line_cols = 8
|
||||
// [56] phi from clrscr to clrscr::@1 [phi:clrscr->clrscr::@1]
|
||||
__b1_from_clrscr:
|
||||
// [56] phi clrscr::line_cols#5 = COLORRAM [phi:clrscr->clrscr::@1#0] -- pbuz1=pbuc1
|
||||
|
@ -4185,9 +4185,9 @@ clrscr: {
|
|||
jmp __b3
|
||||
}
|
||||
// test_casting
|
||||
// void test_casting(__zp(3) int signed_short_value)
|
||||
// void test_casting(__zp(4) int signed_short_value)
|
||||
test_casting: {
|
||||
.label signed_short_value = 3
|
||||
.label signed_short_value = 4
|
||||
// [71] printf_sint::value#1 = test_casting::signed_short_value#0
|
||||
// [72] call printf_sint
|
||||
jsr printf_sint
|
||||
|
@ -4326,10 +4326,10 @@ cscroll: {
|
|||
}
|
||||
// printf_sint
|
||||
// Print a signed integer using a specific format
|
||||
// void printf_sint(void (*putc)(char), __zp(3) int value, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
||||
// void printf_sint(void (*putc)(char), __zp(4) int value, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
||||
printf_sint: {
|
||||
.label putc = cputc
|
||||
.label value = 3
|
||||
.label value = 4
|
||||
// [89] *((char *)&printf_buffer) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Handle any sign
|
||||
lda #0
|
||||
|
@ -4381,10 +4381,10 @@ printf_sint: {
|
|||
}
|
||||
// printf_str
|
||||
/// Print a NUL-terminated string
|
||||
// void printf_str(__zp($1a) void (*putc)(char), __zp(8) const char *s)
|
||||
// void printf_str(__zp(8) void (*putc)(char), __zp($c) const char *s)
|
||||
printf_str: {
|
||||
.label s = 8
|
||||
.label putc = $1a
|
||||
.label s = $c
|
||||
.label putc = 8
|
||||
// [100] phi from printf_str printf_str::@2 to printf_str::@1 [phi:printf_str/printf_str::@2->printf_str::@1]
|
||||
__b1_from_printf_str:
|
||||
__b1_from___b2:
|
||||
|
@ -4424,13 +4424,13 @@ printf_str: {
|
|||
// memcpy
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
// void * memcpy(__zp($18) void *destination, __zp(5) void *source, unsigned int num)
|
||||
// void * memcpy(__zp(6) void *destination, __zp(2) void *source, unsigned int num)
|
||||
memcpy: {
|
||||
.label src_end = $16
|
||||
.label dst = $18
|
||||
.label src = 5
|
||||
.label source = 5
|
||||
.label destination = $18
|
||||
.label src_end = $a
|
||||
.label dst = 6
|
||||
.label src = 2
|
||||
.label source = 2
|
||||
.label destination = 6
|
||||
// [109] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1
|
||||
lda.z source
|
||||
clc
|
||||
|
@ -4482,11 +4482,11 @@ memcpy: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(5) void *str, __register(X) char c, unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
||||
memset: {
|
||||
.label end = $18
|
||||
.label dst = 5
|
||||
.label str = 5
|
||||
.label end = 6
|
||||
.label dst = 2
|
||||
.label str = 2
|
||||
jmp __b1
|
||||
// memset::@1
|
||||
__b1:
|
||||
|
@ -4537,13 +4537,13 @@ memset: {
|
|||
// - value : The number to be converted to RADIX
|
||||
// - buffer : receives the string representing the number and zero-termination.
|
||||
// - radix : The radix to convert the number to (from the enum RADIX)
|
||||
// void utoa(__zp(3) unsigned int value, __zp(8) char *buffer, char radix)
|
||||
// void utoa(__zp(4) unsigned int value, __zp($c) char *buffer, char radix)
|
||||
utoa: {
|
||||
.const max_digits = 5
|
||||
.label digit_value = $1a
|
||||
.label buffer = 8
|
||||
.label digit = 7
|
||||
.label value = 3
|
||||
.label digit_value = 8
|
||||
.label buffer = $c
|
||||
.label digit = $e
|
||||
.label value = 4
|
||||
// [127] phi from utoa to utoa::@1 [phi:utoa->utoa::@1]
|
||||
__b1_from_utoa:
|
||||
// [127] phi utoa::buffer#11 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1
|
||||
|
@ -4713,12 +4713,12 @@ printf_number_buffer: {
|
|||
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
|
||||
// (For decimal the subs used are 10000, 1000, 100, 10, 1)
|
||||
// returns : the value reduced by sub * digit so that it is less than sub.
|
||||
// __zp(3) unsigned int utoa_append(__zp(8) char *buffer, __zp(3) unsigned int value, __zp($1a) unsigned int sub)
|
||||
// __zp(4) unsigned int utoa_append(__zp($c) char *buffer, __zp(4) unsigned int value, __zp(8) unsigned int sub)
|
||||
utoa_append: {
|
||||
.label buffer = 8
|
||||
.label value = 3
|
||||
.label sub = $1a
|
||||
.label return = 3
|
||||
.label buffer = $c
|
||||
.label value = 4
|
||||
.label sub = 8
|
||||
.label return = 4
|
||||
// [156] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1]
|
||||
__b1_from_utoa_append:
|
||||
// [156] phi utoa_append::digit#2 = 0 [phi:utoa_append->utoa_append::@1#0] -- vbuxx=vbuc1
|
||||
|
@ -4965,20 +4965,20 @@ char clrscr::l
|
|||
char clrscr::l#1 // reg byte x 2002.0
|
||||
char clrscr::l#2 // reg byte x 333.6666666666667
|
||||
char *clrscr::line_cols
|
||||
char *clrscr::line_cols#1 // line_cols zp[2]:26 1001.0
|
||||
char *clrscr::line_cols#5 // line_cols zp[2]:26 1500.375
|
||||
char *clrscr::line_cols#1 // line_cols zp[2]:8 1001.0
|
||||
char *clrscr::line_cols#5 // line_cols zp[2]:8 1500.375
|
||||
char *clrscr::line_text
|
||||
char *clrscr::line_text#1 // line_text zp[2]:3 667.3333333333334
|
||||
char *clrscr::line_text#5 // line_text zp[2]:3 1714.7142857142858
|
||||
char *clrscr::line_text#1 // line_text zp[2]:4 667.3333333333334
|
||||
char *clrscr::line_text#5 // line_text zp[2]:4 1714.7142857142858
|
||||
void conio_c64_init()
|
||||
__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *) 214
|
||||
char conio_c64_init::line
|
||||
char conio_c64_init::line#0 // reg byte x 11.0
|
||||
char conio_c64_init::line#2 // reg byte x 22.0
|
||||
__loadstore char conio_cursor_x // zp[1]:10 319153.40425531915
|
||||
__loadstore char conio_cursor_y // zp[1]:11 5079368.396825396
|
||||
__loadstore char *conio_line_color // zp[2]:14 3622954.2459016396
|
||||
__loadstore char *conio_line_text // zp[2]:12 3564519.5
|
||||
__loadstore char conio_cursor_x // zp[1]:20 319153.40425531915
|
||||
__loadstore char conio_cursor_y // zp[1]:15 5079368.396825396
|
||||
__loadstore char *conio_line_color // zp[2]:16 3622954.2459016396
|
||||
__loadstore char *conio_line_text // zp[2]:18 3564519.5
|
||||
__stackcall void cputc(char c)
|
||||
__constant char cputc::OFFSET_STACK_C = 0
|
||||
char cputc::c
|
||||
|
@ -4986,13 +4986,13 @@ char cputc::c#0 // reg byte a 1500001.5
|
|||
void cputln()
|
||||
void cscroll()
|
||||
void gotoxy(char x , char y)
|
||||
char *gotoxy::$5 // zp[2]:20 202.0
|
||||
char *gotoxy::$6 // zp[2]:16 202.0
|
||||
unsigned int gotoxy::$7 // zp[2]:16 151.5
|
||||
unsigned int gotoxy::$8 // zp[2]:18 202.0
|
||||
unsigned int gotoxy::$9 // zp[2]:16 202.0
|
||||
char *gotoxy::$5 // zp[2]:26 202.0
|
||||
char *gotoxy::$6 // zp[2]:21 202.0
|
||||
unsigned int gotoxy::$7 // zp[2]:21 151.5
|
||||
unsigned int gotoxy::$8 // zp[2]:24 202.0
|
||||
unsigned int gotoxy::$9 // zp[2]:21 202.0
|
||||
unsigned int gotoxy::line_offset
|
||||
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:16 101.0
|
||||
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:21 101.0
|
||||
char gotoxy::x
|
||||
__constant char gotoxy::x#2 = 0 // x
|
||||
char gotoxy::y
|
||||
|
@ -5000,38 +5000,38 @@ char gotoxy::y#2 // reg byte x 71.0
|
|||
char gotoxy::y#4 // reg byte x 67.33333333333333
|
||||
void main()
|
||||
signed char main::signed_char_value
|
||||
signed char main::signed_char_value#1 // signed_char_value zp[1]:2 101.0
|
||||
signed char main::signed_char_value#2 // signed_char_value zp[1]:2 151.5
|
||||
signed char main::signed_char_value#1 // signed_char_value zp[1]:23 101.0
|
||||
signed char main::signed_char_value#2 // signed_char_value zp[1]:23 151.5
|
||||
void * memcpy(void *destination , void *source , unsigned int num)
|
||||
void *memcpy::destination
|
||||
void *memcpy::destination#2 // destination zp[2]:24
|
||||
void *memcpy::destination#2 // destination zp[2]:6
|
||||
char *memcpy::dst
|
||||
char *memcpy::dst#1 // dst zp[2]:24 1.00000000001E11
|
||||
char *memcpy::dst#2 // dst zp[2]:24 1.0033333333466667E11
|
||||
char *memcpy::dst#4 // dst zp[2]:24 2.000000002E9
|
||||
char *memcpy::dst#1 // dst zp[2]:6 1.00000000001E11
|
||||
char *memcpy::dst#2 // dst zp[2]:6 1.0033333333466667E11
|
||||
char *memcpy::dst#4 // dst zp[2]:6 2.000000002E9
|
||||
unsigned int memcpy::num
|
||||
void *memcpy::return
|
||||
void *memcpy::source
|
||||
void *memcpy::source#2 // source zp[2]:5
|
||||
void *memcpy::source#2 // source zp[2]:2
|
||||
char *memcpy::src
|
||||
char *memcpy::src#1 // src zp[2]:5 2.00000000002E11
|
||||
char *memcpy::src#2 // src zp[2]:5 1.0025000000125E11
|
||||
char *memcpy::src#4 // src zp[2]:5 1.000000001E9
|
||||
char *memcpy::src#1 // src zp[2]:2 2.00000000002E11
|
||||
char *memcpy::src#2 // src zp[2]:2 1.0025000000125E11
|
||||
char *memcpy::src#4 // src zp[2]:2 1.000000001E9
|
||||
char *memcpy::src_end
|
||||
char *memcpy::src_end#0 // src_end zp[2]:22 1.262500000025E10
|
||||
char *memcpy::src_end#0 // src_end zp[2]:10 1.262500000025E10
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 1.4285714285857143E10
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:5 2.00000000002E11
|
||||
char *memset::dst#2 // dst zp[2]:5 1.3366666666833334E11
|
||||
char *memset::dst#4 // dst zp[2]:5 2.000000002E9
|
||||
char *memset::dst#1 // dst zp[2]:2 2.00000000002E11
|
||||
char *memset::dst#2 // dst zp[2]:2 1.3366666666833334E11
|
||||
char *memset::dst#4 // dst zp[2]:2 2.000000002E9
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:24 1.6833333333666668E10
|
||||
char *memset::end#0 // end zp[2]:6 1.6833333333666668E10
|
||||
unsigned int memset::num
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:5
|
||||
void *memset::str#3 // str zp[2]:2
|
||||
__loadstore struct printf_buffer_number printf_buffer = {} // mem[12]
|
||||
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
||||
struct printf_buffer_number printf_number_buffer::buffer
|
||||
|
@ -5061,36 +5061,36 @@ void (*printf_sint::putc)(char)
|
|||
__constant void (*printf_sint::putc#0)(char) = &cputc // putc
|
||||
unsigned int printf_sint::uvalue
|
||||
int printf_sint::value
|
||||
int printf_sint::value#0 // value zp[2]:3 10001.0
|
||||
int printf_sint::value#1 // value zp[2]:3 10334.666666666666
|
||||
int printf_sint::value#4 // value zp[2]:3 20002.0
|
||||
int printf_sint::value#0 // value zp[2]:4 10001.0
|
||||
int printf_sint::value#1 // value zp[2]:4 10334.666666666666
|
||||
int printf_sint::value#4 // value zp[2]:4 20002.0
|
||||
void printf_str(void (*putc)(char) , const char *s)
|
||||
char printf_str::c
|
||||
char printf_str::c#1 // reg byte a 1.00000001E8
|
||||
void (*printf_str::putc)(char)
|
||||
void (*printf_str::putc#4)(char) // putc zp[2]:26
|
||||
void (*printf_str::putc#4)(char) // putc zp[2]:8
|
||||
const char *printf_str::s
|
||||
const char *printf_str::s#0 // s zp[2]:8 1.00000001E8
|
||||
const char *printf_str::s#3 // s zp[2]:8 1.50500002E8
|
||||
const char *printf_str::s#4 // s zp[2]:8 1000001.0
|
||||
const char *printf_str::s#0 // s zp[2]:12 1.00000001E8
|
||||
const char *printf_str::s#3 // s zp[2]:12 1.50500002E8
|
||||
const char *printf_str::s#4 // s zp[2]:12 1000001.0
|
||||
void test_casting(int signed_short_value)
|
||||
__constant char test_casting::s[2] = "
|
||||
"
|
||||
int test_casting::signed_short_value
|
||||
int test_casting::signed_short_value#0 // signed_short_value zp[2]:3 1102.0
|
||||
int test_casting::signed_short_value#0 // signed_short_value zp[2]:4 1102.0
|
||||
void utoa(unsigned int value , char *buffer , char radix)
|
||||
char utoa::$10 // reg byte a 2.0000002E7
|
||||
char utoa::$11 // reg byte x 200002.0
|
||||
char *utoa::buffer
|
||||
char *utoa::buffer#11 // buffer zp[2]:8 2871429.0
|
||||
char *utoa::buffer#14 // buffer zp[2]:8 1.50000015E7
|
||||
char *utoa::buffer#3 // buffer zp[2]:8 200002.0
|
||||
char *utoa::buffer#4 // buffer zp[2]:8 2.0000002E7
|
||||
char *utoa::buffer#11 // buffer zp[2]:12 2871429.0
|
||||
char *utoa::buffer#14 // buffer zp[2]:12 1.50000015E7
|
||||
char *utoa::buffer#3 // buffer zp[2]:12 200002.0
|
||||
char *utoa::buffer#4 // buffer zp[2]:12 2.0000002E7
|
||||
char utoa::digit
|
||||
char utoa::digit#1 // digit zp[1]:7 2.0000002E7
|
||||
char utoa::digit#2 // digit zp[1]:7 2857143.1428571427
|
||||
char utoa::digit#1 // digit zp[1]:14 2.0000002E7
|
||||
char utoa::digit#2 // digit zp[1]:14 2857143.1428571427
|
||||
unsigned int utoa::digit_value
|
||||
unsigned int utoa::digit_value#0 // digit_value zp[2]:26 6000000.6
|
||||
unsigned int utoa::digit_value#0 // digit_value zp[2]:8 6000000.6
|
||||
unsigned int *utoa::digit_values
|
||||
char utoa::max_digits
|
||||
__constant char utoa::max_digits#1 = 5 // max_digits
|
||||
|
@ -5099,52 +5099,52 @@ char utoa::started
|
|||
char utoa::started#2 // reg byte x 5000000.5
|
||||
char utoa::started#4 // reg byte x 1.0000001E7
|
||||
unsigned int utoa::value
|
||||
unsigned int utoa::value#0 // value zp[2]:3 1.0000001E7
|
||||
unsigned int utoa::value#1 // value zp[2]:3 55001.0
|
||||
unsigned int utoa::value#2 // value zp[2]:3 5728572.142857142
|
||||
unsigned int utoa::value#6 // value zp[2]:3 1.50000015E7
|
||||
unsigned int utoa::value#0 // value zp[2]:4 1.0000001E7
|
||||
unsigned int utoa::value#1 // value zp[2]:4 55001.0
|
||||
unsigned int utoa::value#2 // value zp[2]:4 5728572.142857142
|
||||
unsigned int utoa::value#6 // value zp[2]:4 1.50000015E7
|
||||
unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
|
||||
char *utoa_append::buffer
|
||||
char *utoa_append::buffer#0 // buffer zp[2]:8 1.375000025E7
|
||||
char *utoa_append::buffer#0 // buffer zp[2]:12 1.375000025E7
|
||||
char utoa_append::digit
|
||||
char utoa_append::digit#1 // reg byte x 1.00000000001E11
|
||||
char utoa_append::digit#2 // reg byte x 1.000500000015E11
|
||||
unsigned int utoa_append::return
|
||||
unsigned int utoa_append::return#0 // return zp[2]:3 2.0000002E7
|
||||
unsigned int utoa_append::return#0 // return zp[2]:4 2.0000002E7
|
||||
unsigned int utoa_append::sub
|
||||
unsigned int utoa_append::sub#0 // sub zp[2]:26 3.33350000005E10
|
||||
unsigned int utoa_append::sub#0 // sub zp[2]:8 3.33350000005E10
|
||||
unsigned int utoa_append::value
|
||||
unsigned int utoa_append::value#0 // value zp[2]:3 3.6666667333333336E7
|
||||
unsigned int utoa_append::value#1 // value zp[2]:3 2.00000000002E11
|
||||
unsigned int utoa_append::value#2 // value zp[2]:3 5.001833333416667E10
|
||||
unsigned int utoa_append::value#0 // value zp[2]:4 3.6666667333333336E7
|
||||
unsigned int utoa_append::value#1 // value zp[2]:4 2.00000000002E11
|
||||
unsigned int utoa_append::value#2 // value zp[2]:4 5.001833333416667E10
|
||||
|
||||
reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
zp[1]:2 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
zp[1]:23 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
reg byte x [ gotoxy::y#4 gotoxy::y#2 ]
|
||||
reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
||||
reg byte y [ clrscr::c#2 clrscr::c#1 ]
|
||||
zp[2]:3 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
zp[2]:5 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
zp[2]:4 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[1]:7 [ utoa::digit#2 utoa::digit#1 ]
|
||||
zp[1]:14 [ utoa::digit#2 utoa::digit#1 ]
|
||||
reg byte x [ utoa::started#2 utoa::started#4 ]
|
||||
zp[2]:8 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
zp[1]:10 [ conio_cursor_x ]
|
||||
zp[1]:11 [ conio_cursor_y ]
|
||||
zp[2]:12 [ conio_line_text ]
|
||||
zp[2]:14 [ conio_line_color ]
|
||||
zp[1]:20 [ conio_cursor_x ]
|
||||
zp[1]:15 [ conio_cursor_y ]
|
||||
zp[2]:18 [ conio_line_text ]
|
||||
zp[2]:16 [ conio_line_color ]
|
||||
reg byte a [ cputc::c#0 ]
|
||||
zp[2]:16 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
||||
zp[2]:18 [ gotoxy::$8 ]
|
||||
zp[2]:20 [ gotoxy::$5 ]
|
||||
zp[2]:21 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
||||
zp[2]:24 [ gotoxy::$8 ]
|
||||
zp[2]:26 [ gotoxy::$5 ]
|
||||
reg byte a [ printf_number_buffer::buffer_sign#0 ]
|
||||
reg byte a [ printf_str::c#1 ]
|
||||
zp[2]:22 [ memcpy::src_end#0 ]
|
||||
zp[2]:24 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
zp[2]:10 [ memcpy::src_end#0 ]
|
||||
zp[2]:6 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
reg byte x [ utoa::$11 ]
|
||||
reg byte a [ utoa::$10 ]
|
||||
zp[2]:26 [ utoa::digit_value#0 utoa_append::sub#0 printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
zp[2]:8 [ utoa::digit_value#0 utoa_append::sub#0 printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
mem[12] [ printf_buffer ]
|
||||
|
||||
|
||||
|
@ -5174,13 +5174,13 @@ Score: 74644
|
|||
.label DEFAULT_SCREEN = $400
|
||||
// The number of bytes on the screen
|
||||
// The current cursor x-position
|
||||
.label conio_cursor_x = $a
|
||||
.label conio_cursor_x = $14
|
||||
// The current cursor y-position
|
||||
.label conio_cursor_y = $b
|
||||
.label conio_cursor_y = $f
|
||||
// The current text cursor line start
|
||||
.label conio_line_text = $c
|
||||
.label conio_line_text = $12
|
||||
// The current color cursor line start
|
||||
.label conio_line_color = $e
|
||||
.label conio_line_color = $10
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -5295,7 +5295,7 @@ cputc: {
|
|||
}
|
||||
// main
|
||||
main: {
|
||||
.label signed_char_value = 2
|
||||
.label signed_char_value = $17
|
||||
// clrscr()
|
||||
// [28] call clrscr
|
||||
// [55] phi from main to clrscr [phi:main->clrscr]
|
||||
|
@ -5340,12 +5340,12 @@ main: {
|
|||
// void gotoxy(char x, __register(X) char y)
|
||||
gotoxy: {
|
||||
.const x = 0
|
||||
.label __5 = $14
|
||||
.label __6 = $10
|
||||
.label __7 = $10
|
||||
.label line_offset = $10
|
||||
.label __8 = $12
|
||||
.label __9 = $10
|
||||
.label __5 = $1a
|
||||
.label __6 = $15
|
||||
.label __7 = $15
|
||||
.label line_offset = $15
|
||||
.label __8 = $18
|
||||
.label __9 = $15
|
||||
// if(y>CONIO_HEIGHT)
|
||||
// [35] if(gotoxy::y#2<$19+1) goto gotoxy::@3 -- vbuxx_lt_vbuc1_then_la1
|
||||
cpx #$19+1
|
||||
|
@ -5471,8 +5471,8 @@ cputln: {
|
|||
// clrscr
|
||||
// clears the screen and moves the cursor to the upper left-hand corner of the screen.
|
||||
clrscr: {
|
||||
.label line_text = 3
|
||||
.label line_cols = $1a
|
||||
.label line_text = 4
|
||||
.label line_cols = 8
|
||||
// [56] phi from clrscr to clrscr::@1 [phi:clrscr->clrscr::@1]
|
||||
// [56] phi clrscr::line_cols#5 = COLORRAM [phi:clrscr->clrscr::@1#0] -- pbuz1=pbuc1
|
||||
lda #<COLORRAM
|
||||
|
@ -5571,9 +5571,9 @@ clrscr: {
|
|||
jmp __b3
|
||||
}
|
||||
// test_casting
|
||||
// void test_casting(__zp(3) int signed_short_value)
|
||||
// void test_casting(__zp(4) int signed_short_value)
|
||||
test_casting: {
|
||||
.label signed_short_value = 3
|
||||
.label signed_short_value = 4
|
||||
// printf("%d\n", signed_short_value)
|
||||
// [71] printf_sint::value#1 = test_casting::signed_short_value#0
|
||||
// [72] call printf_sint
|
||||
|
@ -5699,10 +5699,10 @@ cscroll: {
|
|||
}
|
||||
// printf_sint
|
||||
// Print a signed integer using a specific format
|
||||
// void printf_sint(void (*putc)(char), __zp(3) int value, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
||||
// void printf_sint(void (*putc)(char), __zp(4) int value, char format_min_length, char format_justify_left, char format_sign_always, char format_zero_padding, char format_upper_case, char format_radix)
|
||||
printf_sint: {
|
||||
.label putc = cputc
|
||||
.label value = 3
|
||||
.label value = 4
|
||||
// printf_buffer.sign = 0
|
||||
// [89] *((char *)&printf_buffer) = 0 -- _deref_pbuc1=vbuc2
|
||||
// Handle any sign
|
||||
|
@ -5752,10 +5752,10 @@ printf_sint: {
|
|||
}
|
||||
// printf_str
|
||||
/// Print a NUL-terminated string
|
||||
// void printf_str(__zp($1a) void (*putc)(char), __zp(8) const char *s)
|
||||
// void printf_str(__zp(8) void (*putc)(char), __zp($c) const char *s)
|
||||
printf_str: {
|
||||
.label s = 8
|
||||
.label putc = $1a
|
||||
.label s = $c
|
||||
.label putc = 8
|
||||
// [100] phi from printf_str printf_str::@2 to printf_str::@1 [phi:printf_str/printf_str::@2->printf_str::@1]
|
||||
// [100] phi printf_str::s#3 = printf_str::s#4 [phi:printf_str/printf_str::@2->printf_str::@1#0] -- register_copy
|
||||
// printf_str::@1
|
||||
|
@ -5793,13 +5793,13 @@ printf_str: {
|
|||
// memcpy
|
||||
// Copy block of memory (forwards)
|
||||
// Copies the values of num bytes from the location pointed to by source directly to the memory block pointed to by destination.
|
||||
// void * memcpy(__zp($18) void *destination, __zp(5) void *source, unsigned int num)
|
||||
// void * memcpy(__zp(6) void *destination, __zp(2) void *source, unsigned int num)
|
||||
memcpy: {
|
||||
.label src_end = $16
|
||||
.label dst = $18
|
||||
.label src = 5
|
||||
.label source = 5
|
||||
.label destination = $18
|
||||
.label src_end = $a
|
||||
.label dst = 6
|
||||
.label src = 2
|
||||
.label source = 2
|
||||
.label destination = 6
|
||||
// char* src_end = (char*)source+num
|
||||
// [109] memcpy::src_end#0 = (char *)memcpy::source#2 + (unsigned int)$19*$28-$28 -- pbuz1=pbuz2_plus_vwuc1
|
||||
lda.z source
|
||||
|
@ -5850,11 +5850,11 @@ memcpy: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(5) void *str, __register(X) char c, unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
||||
memset: {
|
||||
.label end = $18
|
||||
.label dst = 5
|
||||
.label str = 5
|
||||
.label end = 6
|
||||
.label dst = 2
|
||||
.label str = 2
|
||||
// memset::@1
|
||||
// char* end = (char*)str + num
|
||||
// [119] memset::end#0 = (char *)memset::str#3 + $28 -- pbuz1=pbuz2_plus_vbuc1
|
||||
|
@ -5903,13 +5903,13 @@ memset: {
|
|||
// - value : The number to be converted to RADIX
|
||||
// - buffer : receives the string representing the number and zero-termination.
|
||||
// - radix : The radix to convert the number to (from the enum RADIX)
|
||||
// void utoa(__zp(3) unsigned int value, __zp(8) char *buffer, char radix)
|
||||
// void utoa(__zp(4) unsigned int value, __zp($c) char *buffer, char radix)
|
||||
utoa: {
|
||||
.const max_digits = 5
|
||||
.label digit_value = $1a
|
||||
.label buffer = 8
|
||||
.label digit = 7
|
||||
.label value = 3
|
||||
.label digit_value = 8
|
||||
.label buffer = $c
|
||||
.label digit = $e
|
||||
.label value = 4
|
||||
// [127] phi from utoa to utoa::@1 [phi:utoa->utoa::@1]
|
||||
// [127] phi utoa::buffer#11 = (char *)&printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS [phi:utoa->utoa::@1#0] -- pbuz1=pbuc1
|
||||
lda #<printf_buffer+OFFSET_STRUCT_PRINTF_BUFFER_NUMBER_DIGITS
|
||||
|
@ -6069,12 +6069,12 @@ printf_number_buffer: {
|
|||
// - sub : the value of a '1' in the digit. Subtracted continually while the digit is increased.
|
||||
// (For decimal the subs used are 10000, 1000, 100, 10, 1)
|
||||
// returns : the value reduced by sub * digit so that it is less than sub.
|
||||
// __zp(3) unsigned int utoa_append(__zp(8) char *buffer, __zp(3) unsigned int value, __zp($1a) unsigned int sub)
|
||||
// __zp(4) unsigned int utoa_append(__zp($c) char *buffer, __zp(4) unsigned int value, __zp(8) unsigned int sub)
|
||||
utoa_append: {
|
||||
.label buffer = 8
|
||||
.label value = 3
|
||||
.label sub = $1a
|
||||
.label return = 3
|
||||
.label buffer = $c
|
||||
.label value = 4
|
||||
.label sub = 8
|
||||
.label return = 4
|
||||
// [156] phi from utoa_append to utoa_append::@1 [phi:utoa_append->utoa_append::@1]
|
||||
// [156] phi utoa_append::digit#2 = 0 [phi:utoa_append->utoa_append::@1#0] -- vbuxx=vbuc1
|
||||
ldx #0
|
||||
|
|
|
@ -19,20 +19,20 @@ char clrscr::l
|
|||
char clrscr::l#1 // reg byte x 2002.0
|
||||
char clrscr::l#2 // reg byte x 333.6666666666667
|
||||
char *clrscr::line_cols
|
||||
char *clrscr::line_cols#1 // line_cols zp[2]:26 1001.0
|
||||
char *clrscr::line_cols#5 // line_cols zp[2]:26 1500.375
|
||||
char *clrscr::line_cols#1 // line_cols zp[2]:8 1001.0
|
||||
char *clrscr::line_cols#5 // line_cols zp[2]:8 1500.375
|
||||
char *clrscr::line_text
|
||||
char *clrscr::line_text#1 // line_text zp[2]:3 667.3333333333334
|
||||
char *clrscr::line_text#5 // line_text zp[2]:3 1714.7142857142858
|
||||
char *clrscr::line_text#1 // line_text zp[2]:4 667.3333333333334
|
||||
char *clrscr::line_text#5 // line_text zp[2]:4 1714.7142857142858
|
||||
void conio_c64_init()
|
||||
__constant char * const conio_c64_init::BASIC_CURSOR_LINE = (char *) 214
|
||||
char conio_c64_init::line
|
||||
char conio_c64_init::line#0 // reg byte x 11.0
|
||||
char conio_c64_init::line#2 // reg byte x 22.0
|
||||
__loadstore char conio_cursor_x // zp[1]:10 319153.40425531915
|
||||
__loadstore char conio_cursor_y // zp[1]:11 5079368.396825396
|
||||
__loadstore char *conio_line_color // zp[2]:14 3622954.2459016396
|
||||
__loadstore char *conio_line_text // zp[2]:12 3564519.5
|
||||
__loadstore char conio_cursor_x // zp[1]:20 319153.40425531915
|
||||
__loadstore char conio_cursor_y // zp[1]:15 5079368.396825396
|
||||
__loadstore char *conio_line_color // zp[2]:16 3622954.2459016396
|
||||
__loadstore char *conio_line_text // zp[2]:18 3564519.5
|
||||
__stackcall void cputc(char c)
|
||||
__constant char cputc::OFFSET_STACK_C = 0
|
||||
char cputc::c
|
||||
|
@ -40,13 +40,13 @@ char cputc::c#0 // reg byte a 1500001.5
|
|||
void cputln()
|
||||
void cscroll()
|
||||
void gotoxy(char x , char y)
|
||||
char *gotoxy::$5 // zp[2]:20 202.0
|
||||
char *gotoxy::$6 // zp[2]:16 202.0
|
||||
unsigned int gotoxy::$7 // zp[2]:16 151.5
|
||||
unsigned int gotoxy::$8 // zp[2]:18 202.0
|
||||
unsigned int gotoxy::$9 // zp[2]:16 202.0
|
||||
char *gotoxy::$5 // zp[2]:26 202.0
|
||||
char *gotoxy::$6 // zp[2]:21 202.0
|
||||
unsigned int gotoxy::$7 // zp[2]:21 151.5
|
||||
unsigned int gotoxy::$8 // zp[2]:24 202.0
|
||||
unsigned int gotoxy::$9 // zp[2]:21 202.0
|
||||
unsigned int gotoxy::line_offset
|
||||
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:16 101.0
|
||||
unsigned int gotoxy::line_offset#0 // line_offset zp[2]:21 101.0
|
||||
char gotoxy::x
|
||||
__constant char gotoxy::x#2 = 0 // x
|
||||
char gotoxy::y
|
||||
|
@ -54,38 +54,38 @@ char gotoxy::y#2 // reg byte x 71.0
|
|||
char gotoxy::y#4 // reg byte x 67.33333333333333
|
||||
void main()
|
||||
signed char main::signed_char_value
|
||||
signed char main::signed_char_value#1 // signed_char_value zp[1]:2 101.0
|
||||
signed char main::signed_char_value#2 // signed_char_value zp[1]:2 151.5
|
||||
signed char main::signed_char_value#1 // signed_char_value zp[1]:23 101.0
|
||||
signed char main::signed_char_value#2 // signed_char_value zp[1]:23 151.5
|
||||
void * memcpy(void *destination , void *source , unsigned int num)
|
||||
void *memcpy::destination
|
||||
void *memcpy::destination#2 // destination zp[2]:24
|
||||
void *memcpy::destination#2 // destination zp[2]:6
|
||||
char *memcpy::dst
|
||||
char *memcpy::dst#1 // dst zp[2]:24 1.00000000001E11
|
||||
char *memcpy::dst#2 // dst zp[2]:24 1.0033333333466667E11
|
||||
char *memcpy::dst#4 // dst zp[2]:24 2.000000002E9
|
||||
char *memcpy::dst#1 // dst zp[2]:6 1.00000000001E11
|
||||
char *memcpy::dst#2 // dst zp[2]:6 1.0033333333466667E11
|
||||
char *memcpy::dst#4 // dst zp[2]:6 2.000000002E9
|
||||
unsigned int memcpy::num
|
||||
void *memcpy::return
|
||||
void *memcpy::source
|
||||
void *memcpy::source#2 // source zp[2]:5
|
||||
void *memcpy::source#2 // source zp[2]:2
|
||||
char *memcpy::src
|
||||
char *memcpy::src#1 // src zp[2]:5 2.00000000002E11
|
||||
char *memcpy::src#2 // src zp[2]:5 1.0025000000125E11
|
||||
char *memcpy::src#4 // src zp[2]:5 1.000000001E9
|
||||
char *memcpy::src#1 // src zp[2]:2 2.00000000002E11
|
||||
char *memcpy::src#2 // src zp[2]:2 1.0025000000125E11
|
||||
char *memcpy::src#4 // src zp[2]:2 1.000000001E9
|
||||
char *memcpy::src_end
|
||||
char *memcpy::src_end#0 // src_end zp[2]:22 1.262500000025E10
|
||||
char *memcpy::src_end#0 // src_end zp[2]:10 1.262500000025E10
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 1.4285714285857143E10
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:5 2.00000000002E11
|
||||
char *memset::dst#2 // dst zp[2]:5 1.3366666666833334E11
|
||||
char *memset::dst#4 // dst zp[2]:5 2.000000002E9
|
||||
char *memset::dst#1 // dst zp[2]:2 2.00000000002E11
|
||||
char *memset::dst#2 // dst zp[2]:2 1.3366666666833334E11
|
||||
char *memset::dst#4 // dst zp[2]:2 2.000000002E9
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:24 1.6833333333666668E10
|
||||
char *memset::end#0 // end zp[2]:6 1.6833333333666668E10
|
||||
unsigned int memset::num
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:5
|
||||
void *memset::str#3 // str zp[2]:2
|
||||
__loadstore struct printf_buffer_number printf_buffer = {} // mem[12]
|
||||
void printf_number_buffer(void (*putc)(char) , char buffer_sign , char *buffer_digits , char format_min_length , char format_justify_left , char format_sign_always , char format_zero_padding , char format_upper_case , char format_radix)
|
||||
struct printf_buffer_number printf_number_buffer::buffer
|
||||
|
@ -115,36 +115,36 @@ void (*printf_sint::putc)(char)
|
|||
__constant void (*printf_sint::putc#0)(char) = &cputc // putc
|
||||
unsigned int printf_sint::uvalue
|
||||
int printf_sint::value
|
||||
int printf_sint::value#0 // value zp[2]:3 10001.0
|
||||
int printf_sint::value#1 // value zp[2]:3 10334.666666666666
|
||||
int printf_sint::value#4 // value zp[2]:3 20002.0
|
||||
int printf_sint::value#0 // value zp[2]:4 10001.0
|
||||
int printf_sint::value#1 // value zp[2]:4 10334.666666666666
|
||||
int printf_sint::value#4 // value zp[2]:4 20002.0
|
||||
void printf_str(void (*putc)(char) , const char *s)
|
||||
char printf_str::c
|
||||
char printf_str::c#1 // reg byte a 1.00000001E8
|
||||
void (*printf_str::putc)(char)
|
||||
void (*printf_str::putc#4)(char) // putc zp[2]:26
|
||||
void (*printf_str::putc#4)(char) // putc zp[2]:8
|
||||
const char *printf_str::s
|
||||
const char *printf_str::s#0 // s zp[2]:8 1.00000001E8
|
||||
const char *printf_str::s#3 // s zp[2]:8 1.50500002E8
|
||||
const char *printf_str::s#4 // s zp[2]:8 1000001.0
|
||||
const char *printf_str::s#0 // s zp[2]:12 1.00000001E8
|
||||
const char *printf_str::s#3 // s zp[2]:12 1.50500002E8
|
||||
const char *printf_str::s#4 // s zp[2]:12 1000001.0
|
||||
void test_casting(int signed_short_value)
|
||||
__constant char test_casting::s[2] = "
|
||||
"
|
||||
int test_casting::signed_short_value
|
||||
int test_casting::signed_short_value#0 // signed_short_value zp[2]:3 1102.0
|
||||
int test_casting::signed_short_value#0 // signed_short_value zp[2]:4 1102.0
|
||||
void utoa(unsigned int value , char *buffer , char radix)
|
||||
char utoa::$10 // reg byte a 2.0000002E7
|
||||
char utoa::$11 // reg byte x 200002.0
|
||||
char *utoa::buffer
|
||||
char *utoa::buffer#11 // buffer zp[2]:8 2871429.0
|
||||
char *utoa::buffer#14 // buffer zp[2]:8 1.50000015E7
|
||||
char *utoa::buffer#3 // buffer zp[2]:8 200002.0
|
||||
char *utoa::buffer#4 // buffer zp[2]:8 2.0000002E7
|
||||
char *utoa::buffer#11 // buffer zp[2]:12 2871429.0
|
||||
char *utoa::buffer#14 // buffer zp[2]:12 1.50000015E7
|
||||
char *utoa::buffer#3 // buffer zp[2]:12 200002.0
|
||||
char *utoa::buffer#4 // buffer zp[2]:12 2.0000002E7
|
||||
char utoa::digit
|
||||
char utoa::digit#1 // digit zp[1]:7 2.0000002E7
|
||||
char utoa::digit#2 // digit zp[1]:7 2857143.1428571427
|
||||
char utoa::digit#1 // digit zp[1]:14 2.0000002E7
|
||||
char utoa::digit#2 // digit zp[1]:14 2857143.1428571427
|
||||
unsigned int utoa::digit_value
|
||||
unsigned int utoa::digit_value#0 // digit_value zp[2]:26 6000000.6
|
||||
unsigned int utoa::digit_value#0 // digit_value zp[2]:8 6000000.6
|
||||
unsigned int *utoa::digit_values
|
||||
char utoa::max_digits
|
||||
__constant char utoa::max_digits#1 = 5 // max_digits
|
||||
|
@ -153,50 +153,50 @@ char utoa::started
|
|||
char utoa::started#2 // reg byte x 5000000.5
|
||||
char utoa::started#4 // reg byte x 1.0000001E7
|
||||
unsigned int utoa::value
|
||||
unsigned int utoa::value#0 // value zp[2]:3 1.0000001E7
|
||||
unsigned int utoa::value#1 // value zp[2]:3 55001.0
|
||||
unsigned int utoa::value#2 // value zp[2]:3 5728572.142857142
|
||||
unsigned int utoa::value#6 // value zp[2]:3 1.50000015E7
|
||||
unsigned int utoa::value#0 // value zp[2]:4 1.0000001E7
|
||||
unsigned int utoa::value#1 // value zp[2]:4 55001.0
|
||||
unsigned int utoa::value#2 // value zp[2]:4 5728572.142857142
|
||||
unsigned int utoa::value#6 // value zp[2]:4 1.50000015E7
|
||||
unsigned int utoa_append(char *buffer , unsigned int value , unsigned int sub)
|
||||
char *utoa_append::buffer
|
||||
char *utoa_append::buffer#0 // buffer zp[2]:8 1.375000025E7
|
||||
char *utoa_append::buffer#0 // buffer zp[2]:12 1.375000025E7
|
||||
char utoa_append::digit
|
||||
char utoa_append::digit#1 // reg byte x 1.00000000001E11
|
||||
char utoa_append::digit#2 // reg byte x 1.000500000015E11
|
||||
unsigned int utoa_append::return
|
||||
unsigned int utoa_append::return#0 // return zp[2]:3 2.0000002E7
|
||||
unsigned int utoa_append::return#0 // return zp[2]:4 2.0000002E7
|
||||
unsigned int utoa_append::sub
|
||||
unsigned int utoa_append::sub#0 // sub zp[2]:26 3.33350000005E10
|
||||
unsigned int utoa_append::sub#0 // sub zp[2]:8 3.33350000005E10
|
||||
unsigned int utoa_append::value
|
||||
unsigned int utoa_append::value#0 // value zp[2]:3 3.6666667333333336E7
|
||||
unsigned int utoa_append::value#1 // value zp[2]:3 2.00000000002E11
|
||||
unsigned int utoa_append::value#2 // value zp[2]:3 5.001833333416667E10
|
||||
unsigned int utoa_append::value#0 // value zp[2]:4 3.6666667333333336E7
|
||||
unsigned int utoa_append::value#1 // value zp[2]:4 2.00000000002E11
|
||||
unsigned int utoa_append::value#2 // value zp[2]:4 5.001833333416667E10
|
||||
|
||||
reg byte x [ conio_c64_init::line#2 conio_c64_init::line#0 ]
|
||||
zp[1]:2 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
zp[1]:23 [ main::signed_char_value#2 main::signed_char_value#1 ]
|
||||
reg byte x [ gotoxy::y#4 gotoxy::y#2 ]
|
||||
reg byte x [ clrscr::l#2 clrscr::l#1 ]
|
||||
reg byte y [ clrscr::c#2 clrscr::c#1 ]
|
||||
zp[2]:3 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
zp[2]:5 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
zp[2]:4 [ printf_sint::value#4 printf_sint::value#0 printf_sint::value#1 utoa::value#2 utoa::value#6 utoa::value#1 utoa::value#0 test_casting::signed_short_value#0 utoa_append::value#2 utoa_append::value#0 utoa_append::value#1 utoa_append::return#0 clrscr::line_text#5 clrscr::line_text#1 ]
|
||||
zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 memcpy::source#2 memcpy::src#2 memcpy::src#4 memcpy::src#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[1]:7 [ utoa::digit#2 utoa::digit#1 ]
|
||||
zp[1]:14 [ utoa::digit#2 utoa::digit#1 ]
|
||||
reg byte x [ utoa::started#2 utoa::started#4 ]
|
||||
zp[2]:8 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
zp[2]:12 [ utoa::buffer#11 utoa::buffer#14 utoa::buffer#4 utoa::buffer#3 utoa_append::buffer#0 printf_str::s#3 printf_str::s#4 printf_str::s#0 ]
|
||||
reg byte x [ utoa_append::digit#2 utoa_append::digit#1 ]
|
||||
zp[1]:10 [ conio_cursor_x ]
|
||||
zp[1]:11 [ conio_cursor_y ]
|
||||
zp[2]:12 [ conio_line_text ]
|
||||
zp[2]:14 [ conio_line_color ]
|
||||
zp[1]:20 [ conio_cursor_x ]
|
||||
zp[1]:15 [ conio_cursor_y ]
|
||||
zp[2]:18 [ conio_line_text ]
|
||||
zp[2]:16 [ conio_line_color ]
|
||||
reg byte a [ cputc::c#0 ]
|
||||
zp[2]:16 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
||||
zp[2]:18 [ gotoxy::$8 ]
|
||||
zp[2]:20 [ gotoxy::$5 ]
|
||||
zp[2]:21 [ gotoxy::$7 gotoxy::$9 gotoxy::line_offset#0 gotoxy::$6 ]
|
||||
zp[2]:24 [ gotoxy::$8 ]
|
||||
zp[2]:26 [ gotoxy::$5 ]
|
||||
reg byte a [ printf_number_buffer::buffer_sign#0 ]
|
||||
reg byte a [ printf_str::c#1 ]
|
||||
zp[2]:22 [ memcpy::src_end#0 ]
|
||||
zp[2]:24 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
zp[2]:10 [ memcpy::src_end#0 ]
|
||||
zp[2]:6 [ memset::end#0 memcpy::destination#2 memcpy::dst#2 memcpy::dst#4 memcpy::dst#1 ]
|
||||
reg byte x [ utoa::$11 ]
|
||||
reg byte a [ utoa::$10 ]
|
||||
zp[2]:26 [ utoa::digit_value#0 utoa_append::sub#0 printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
zp[2]:8 [ utoa::digit_value#0 utoa_append::sub#0 printf_str::putc#4 clrscr::line_cols#5 clrscr::line_cols#1 ]
|
||||
mem[12] [ printf_buffer ]
|
||||
|
|
|
@ -323,33 +323,33 @@ Complete equivalence classes
|
|||
[ main::b2#0 ]
|
||||
[ main::sb#0 ]
|
||||
[ w::b2#0 ]
|
||||
Allocated zp[1]:2 [ main::b#2 main::b#1 ]
|
||||
Allocated zp[1]:3 [ w::i#2 w::i#1 ]
|
||||
Allocated zp[1]:4 [ main::b2#0 ]
|
||||
Allocated zp[1]:5 [ main::sb#0 ]
|
||||
Allocated zp[1]:6 [ w::b2#0 ]
|
||||
Allocated zp[1]:2 [ w::i#2 w::i#1 ]
|
||||
Allocated zp[1]:3 [ w::b2#0 ]
|
||||
Allocated zp[1]:4 [ main::b#2 main::b#1 ]
|
||||
Allocated zp[1]:5 [ main::b2#0 ]
|
||||
Allocated zp[1]:6 [ main::sb#0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [2] main::b2#0 = $c8 - main::b#2 [ main::b#2 main::b2#0 ] ( [ main::b#2 main::b2#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::b#2 main::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::b#2 main::b#1 ]
|
||||
Statement [4] main::sb#0 = - (signed char)main::b#2 [ main::b#2 main::sb#0 ] ( [ main::b#2 main::sb#0 ] { } ) always clobbers reg byte a
|
||||
Statement [14] SCREEN3#0[w::i#2] = w::b#0 [ w::i#2 w::b2#0 ] ( w:9 [ w::i#2 w::b2#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ w::i#2 w::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ w::b2#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ w::i#2 w::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ w::b2#0 ]
|
||||
Statement [15] SCREEN4#0[w::i#2] = w::b2#0 [ w::i#2 ] ( w:9 [ w::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [2] main::b2#0 = $c8 - main::b#2 [ main::b#2 main::b2#0 ] ( [ main::b#2 main::b2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [4] main::sb#0 = - (signed char)main::b#2 [ main::b#2 main::sb#0 ] ( [ main::b#2 main::sb#0 ] { } ) always clobbers reg byte a
|
||||
Statement [13] w::b2#0 = (char)$578-$546 + w::i#2 [ w::i#2 w::b2#0 ] ( w:9 [ w::i#2 w::b2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [14] SCREEN3#0[w::i#2] = w::b#0 [ w::i#2 w::b2#0 ] ( w:9 [ w::i#2 w::b2#0 ] { } ) always clobbers reg byte a
|
||||
Statement [15] SCREEN4#0[w::i#2] = w::b2#0 [ w::i#2 ] ( w:9 [ w::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::b#2 main::b#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ w::i#2 w::i#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::b2#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::sb#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ w::b2#0 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::b#2 main::b#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ w::i#2 w::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::b2#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::sb#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ w::b2#0 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [w] 277.75: zp[1]:3 [ w::i#2 w::i#1 ] 101: zp[1]:6 [ w::b2#0 ]
|
||||
Uplift Scope [main] 27.5: zp[1]:2 [ main::b#2 main::b#1 ] 22: zp[1]:4 [ main::b2#0 ] 11: zp[1]:5 [ main::sb#0 ]
|
||||
Uplift Scope [w] 277.75: zp[1]:2 [ w::i#2 w::i#1 ] 101: zp[1]:3 [ w::b2#0 ]
|
||||
Uplift Scope [main] 27.5: zp[1]:4 [ main::b#2 main::b#1 ] 22: zp[1]:5 [ main::b2#0 ] 11: zp[1]:6 [ main::sb#0 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [w] best 1074 combination reg byte y [ w::i#2 w::i#1 ] reg byte x [ w::b2#0 ]
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
.segment Code
|
||||
main: {
|
||||
.label CHAR_A = CHARGEN+8
|
||||
.label bits = 3
|
||||
.label sc = 4
|
||||
.label y = 2
|
||||
.label bits = 2
|
||||
.label sc = 3
|
||||
.label y = 5
|
||||
// asm
|
||||
sei
|
||||
// *PROCPORT = $32
|
||||
|
|
|
@ -341,43 +341,46 @@ Complete equivalence classes
|
|||
[ main::x#2 main::x#1 ]
|
||||
[ main::c#2 ]
|
||||
[ main::$1 ]
|
||||
Allocated zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Allocated zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Allocated zp[2]:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
Allocated zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:2 [ main::$1 ]
|
||||
Allocated zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Allocated zp[2]:5 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
Allocated zp[1]:7 [ main::c#2 ]
|
||||
Allocated zp[1]:8 [ main::$1 ]
|
||||
Allocated zp[1]:8 [ main::y#2 main::y#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] *PROCPORT = $32 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *main::sc#3 = main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Statement [14] main::sc#2 = main::sc#1 + $20 [ main::y#2 main::sc#2 ] ( [ main::y#2 main::sc#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::y#2 main::y#1 ]
|
||||
Statement [17] *PROCPORT = $37 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [1] *PROCPORT = $32 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [9] *main::sc#3 = main::c#2 [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] ( [ main::y#2 main::bits#2 main::sc#3 main::x#2 ] { } ) always clobbers reg byte y
|
||||
Statement [14] main::sc#2 = main::sc#1 + $20 [ main::y#2 main::sc#2 ] ( [ main::y#2 main::sc#2 ] { } ) always clobbers reg byte a
|
||||
Statement [17] *PROCPORT = $37 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::y#2 main::y#1 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ] : zp[1]:3 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ main::x#2 main::x#1 ] : zp[1]:6 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:8 [ main::y#2 main::y#1 ] : zp[1]:8 , reg byte x ,
|
||||
Potential registers zp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ] : zp[1]:4 , reg byte a , reg byte x ,
|
||||
Potential registers zp[2]:5 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[1]:3 [ main::x#2 main::x#1 ] : zp[1]:3 , reg byte a , reg byte x ,
|
||||
Potential registers zp[1]:7 [ main::c#2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ main::$1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::$1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 202: zp[1]:8 [ main::$1 ] 176.75: zp[1]:6 [ main::x#2 main::x#1 ] 134.19: zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ] 123.92: zp[2]:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] 101: zp[1]:7 [ main::c#2 ] 19.04: zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope [main] 202: zp[1]:2 [ main::$1 ] 176.75: zp[1]:3 [ main::x#2 main::x#1 ] 134.19: zp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ] 123.92: zp[2]:5 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] 101: zp[1]:7 [ main::c#2 ] 19.04: zp[1]:8 [ main::y#2 main::y#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 7220 combination reg byte a [ main::$1 ] reg byte x [ main::x#2 main::x#1 ] zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ] zp[2]:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 7220 combination reg byte a [ main::$1 ] reg byte x [ main::x#2 main::x#1 ] zp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ] zp[2]:5 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ] reg byte a [ main::c#2 ] zp[1]:8 [ main::y#2 main::y#1 ]
|
||||
Limited combination testing to 100 combinations of 288 possible.
|
||||
Uplifting [] best 7220 combination
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Uplifting [main] best 7220 combination zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 7220 combination zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Uplifting [main] best 7220 combination zp[1]:4 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ main::y#2 main::y#1 ]
|
||||
Uplifting [main] best 7220 combination zp[1]:8 [ main::y#2 main::y#1 ]
|
||||
Allocated (was zp[1]:4) zp[1]:2 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
Allocated (was zp[2]:5) zp[2]:3 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
Allocated (was zp[1]:8) zp[1]:5 [ main::y#2 main::y#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -398,9 +401,9 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
// main
|
||||
main: {
|
||||
.label CHAR_A = CHARGEN+8
|
||||
.label bits = 3
|
||||
.label sc = 4
|
||||
.label y = 2
|
||||
.label bits = 2
|
||||
.label sc = 3
|
||||
.label y = 5
|
||||
// asm { sei }
|
||||
sei
|
||||
// [1] *PROCPORT = $32 -- _deref_pbuc1=vbuc2
|
||||
|
@ -552,26 +555,26 @@ char main::$1 // reg byte a 202.0
|
|||
char *main::CHAR_A
|
||||
__constant char *main::CHAR_A#0 = CHARGEN+8 // CHAR_A
|
||||
char main::bits
|
||||
char main::bits#0 // bits zp[1]:3 22.0
|
||||
char main::bits#1 // bits zp[1]:3 67.33333333333333
|
||||
char main::bits#2 // bits zp[1]:3 44.85714285714286
|
||||
char main::bits#0 // bits zp[1]:2 22.0
|
||||
char main::bits#1 // bits zp[1]:2 67.33333333333333
|
||||
char main::bits#2 // bits zp[1]:2 44.85714285714286
|
||||
char main::c
|
||||
char main::c#2 // reg byte a 101.0
|
||||
char *main::sc
|
||||
char *main::sc#1 // sc zp[2]:4 53.25
|
||||
char *main::sc#2 // sc zp[2]:4 7.333333333333333
|
||||
char *main::sc#3 // sc zp[2]:4 52.33333333333333
|
||||
char *main::sc#7 // sc zp[2]:4 11.0
|
||||
char *main::sc#1 // sc zp[2]:3 53.25
|
||||
char *main::sc#2 // sc zp[2]:3 7.333333333333333
|
||||
char *main::sc#3 // sc zp[2]:3 52.33333333333333
|
||||
char *main::sc#7 // sc zp[2]:3 11.0
|
||||
char main::x
|
||||
char main::x#1 // reg byte x 151.5
|
||||
char main::x#2 // reg byte x 25.25
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:2 16.5
|
||||
char main::y#2 // y zp[1]:2 2.5384615384615383
|
||||
char main::y#1 // y zp[1]:5 16.5
|
||||
char main::y#2 // y zp[1]:5 2.5384615384615383
|
||||
|
||||
zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
zp[2]:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
zp[1]:5 [ main::y#2 main::y#1 ]
|
||||
zp[1]:2 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
zp[2]:3 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
reg byte x [ main::x#2 main::x#1 ]
|
||||
reg byte a [ main::c#2 ]
|
||||
reg byte a [ main::$1 ]
|
||||
|
@ -598,9 +601,9 @@ Score: 5627
|
|||
// main
|
||||
main: {
|
||||
.label CHAR_A = CHARGEN+8
|
||||
.label bits = 3
|
||||
.label sc = 4
|
||||
.label y = 2
|
||||
.label bits = 2
|
||||
.label sc = 3
|
||||
.label y = 5
|
||||
// asm
|
||||
// asm { sei }
|
||||
sei
|
||||
|
|
|
@ -6,26 +6,26 @@ char main::$1 // reg byte a 202.0
|
|||
char *main::CHAR_A
|
||||
__constant char *main::CHAR_A#0 = CHARGEN+8 // CHAR_A
|
||||
char main::bits
|
||||
char main::bits#0 // bits zp[1]:3 22.0
|
||||
char main::bits#1 // bits zp[1]:3 67.33333333333333
|
||||
char main::bits#2 // bits zp[1]:3 44.85714285714286
|
||||
char main::bits#0 // bits zp[1]:2 22.0
|
||||
char main::bits#1 // bits zp[1]:2 67.33333333333333
|
||||
char main::bits#2 // bits zp[1]:2 44.85714285714286
|
||||
char main::c
|
||||
char main::c#2 // reg byte a 101.0
|
||||
char *main::sc
|
||||
char *main::sc#1 // sc zp[2]:4 53.25
|
||||
char *main::sc#2 // sc zp[2]:4 7.333333333333333
|
||||
char *main::sc#3 // sc zp[2]:4 52.33333333333333
|
||||
char *main::sc#7 // sc zp[2]:4 11.0
|
||||
char *main::sc#1 // sc zp[2]:3 53.25
|
||||
char *main::sc#2 // sc zp[2]:3 7.333333333333333
|
||||
char *main::sc#3 // sc zp[2]:3 52.33333333333333
|
||||
char *main::sc#7 // sc zp[2]:3 11.0
|
||||
char main::x
|
||||
char main::x#1 // reg byte x 151.5
|
||||
char main::x#2 // reg byte x 25.25
|
||||
char main::y
|
||||
char main::y#1 // y zp[1]:2 16.5
|
||||
char main::y#2 // y zp[1]:2 2.5384615384615383
|
||||
char main::y#1 // y zp[1]:5 16.5
|
||||
char main::y#2 // y zp[1]:5 2.5384615384615383
|
||||
|
||||
zp[1]:2 [ main::y#2 main::y#1 ]
|
||||
zp[1]:3 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
zp[2]:4 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
zp[1]:5 [ main::y#2 main::y#1 ]
|
||||
zp[1]:2 [ main::bits#2 main::bits#0 main::bits#1 ]
|
||||
zp[2]:3 [ main::sc#3 main::sc#7 main::sc#2 main::sc#1 ]
|
||||
reg byte x [ main::x#2 main::x#1 ]
|
||||
reg byte a [ main::c#2 ]
|
||||
reg byte a [ main::$1 ]
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
:BasicUpstart(main)
|
||||
.segment Code
|
||||
main: {
|
||||
.label screen = 2
|
||||
.label colors = 4
|
||||
.label screen = 4
|
||||
.label colors = 2
|
||||
.label row = 6
|
||||
lda #0
|
||||
sta.z row
|
||||
|
|
|
@ -256,16 +256,16 @@ Complete equivalence classes
|
|||
[ main::row#4 main::row#1 ]
|
||||
[ main::column#2 main::column#1 ]
|
||||
[ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
Allocated zp[2]:2 [ main::screen#4 main::screen#1 ]
|
||||
Allocated zp[1]:2 [ main::column#2 main::column#1 ]
|
||||
Allocated zp[1]:3 [ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
Allocated zp[2]:4 [ main::colors#4 main::colors#1 ]
|
||||
Allocated zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
Allocated zp[1]:7 [ main::column#2 main::column#1 ]
|
||||
Allocated zp[1]:8 [ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
Allocated zp[2]:6 [ main::screen#4 main::screen#1 ]
|
||||
Allocated zp[1]:8 [ main::row#4 main::row#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] main::screen#4[main::column#2] = $a0 [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#3 ] ( [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#3 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::column#2 main::column#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::row#4 main::row#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::column#2 main::column#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
Statement [4] main::colors#4[main::column#2] = main::color#3 [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#3 ] ( [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#3 ] { } ) always clobbers reg byte a
|
||||
Statement [5] main::color#1 = main::color#3 ^ 1 [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#1 ] ( [ main::screen#4 main::colors#4 main::row#4 main::column#2 main::color#1 ] { } ) always clobbers reg byte a
|
||||
Statement [8] main::color#2 = main::color#1 ^ 1 [ main::screen#4 main::colors#4 main::row#4 main::color#2 ] ( [ main::screen#4 main::colors#4 main::row#4 main::color#2 ] { } ) always clobbers reg byte a
|
||||
|
@ -277,20 +277,23 @@ Statement [5] main::color#1 = main::color#3 ^ 1 [ main::screen#4 main::colors#4
|
|||
Statement [8] main::color#2 = main::color#1 ^ 1 [ main::screen#4 main::colors#4 main::row#4 main::color#2 ] ( [ main::screen#4 main::colors#4 main::row#4 main::color#2 ] { } ) always clobbers reg byte a
|
||||
Statement [9] main::screen#1 = main::screen#4 + $28 [ main::colors#4 main::row#4 main::screen#1 main::color#2 ] ( [ main::colors#4 main::row#4 main::screen#1 main::color#2 ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::colors#1 = main::colors#4 + $28 [ main::row#4 main::screen#1 main::color#2 main::colors#1 ] ( [ main::row#4 main::screen#1 main::color#2 main::colors#1 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[2]:2 [ main::screen#4 main::screen#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:6 [ main::screen#4 main::screen#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:4 [ main::colors#4 main::colors#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ main::row#4 main::row#1 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ main::column#2 main::column#1 ] : zp[1]:7 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ main::color#3 main::color#5 main::color#2 main::color#1 ] : zp[1]:8 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ main::row#4 main::row#1 ] : zp[1]:8 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::column#2 main::column#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::color#3 main::color#5 main::color#2 main::color#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 252.5: zp[1]:7 [ main::column#2 main::column#1 ] 202.07: zp[1]:8 [ main::color#3 main::color#5 main::color#2 main::color#1 ] 21: zp[2]:4 [ main::colors#4 main::colors#1 ] 20.88: zp[2]:2 [ main::screen#4 main::screen#1 ] 18.7: zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
Uplift Scope [main] 252.5: zp[1]:2 [ main::column#2 main::column#1 ] 202.07: zp[1]:3 [ main::color#3 main::color#5 main::color#2 main::color#1 ] 21: zp[2]:4 [ main::colors#4 main::colors#1 ] 20.88: zp[2]:6 [ main::screen#4 main::screen#1 ] 18.7: zp[1]:8 [ main::row#4 main::row#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 4851 combination reg byte y [ main::column#2 main::column#1 ] reg byte x [ main::color#3 main::color#5 main::color#2 main::color#1 ] zp[2]:4 [ main::colors#4 main::colors#1 ] zp[2]:2 [ main::screen#4 main::screen#1 ] zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
Uplifting [main] best 4851 combination reg byte y [ main::column#2 main::column#1 ] reg byte x [ main::color#3 main::color#5 main::color#2 main::color#1 ] zp[2]:4 [ main::colors#4 main::colors#1 ] zp[2]:6 [ main::screen#4 main::screen#1 ] zp[1]:8 [ main::row#4 main::row#1 ]
|
||||
Uplifting [] best 4851 combination
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ main::row#4 main::row#1 ]
|
||||
Uplifting [main] best 4851 combination zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ main::row#4 main::row#1 ]
|
||||
Uplifting [main] best 4851 combination zp[1]:8 [ main::row#4 main::row#1 ]
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ main::colors#4 main::colors#1 ]
|
||||
Allocated (was zp[2]:6) zp[2]:4 [ main::screen#4 main::screen#1 ]
|
||||
Allocated (was zp[1]:8) zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -308,8 +311,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label screen = 2
|
||||
.label colors = 4
|
||||
.label screen = 4
|
||||
.label colors = 2
|
||||
.label row = 6
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
|
@ -431,8 +434,8 @@ char main::color#2 // reg byte x 4.4
|
|||
char main::color#3 // reg byte x 104.66666666666666
|
||||
char main::color#5 // reg byte x 22.0
|
||||
char *main::colors
|
||||
char *main::colors#1 // colors zp[2]:4 7.333333333333333
|
||||
char *main::colors#4 // colors zp[2]:4 13.666666666666664
|
||||
char *main::colors#1 // colors zp[2]:2 7.333333333333333
|
||||
char *main::colors#4 // colors zp[2]:2 13.666666666666664
|
||||
char main::column
|
||||
char main::column#1 // reg byte y 151.5
|
||||
char main::column#2 // reg byte y 101.0
|
||||
|
@ -440,11 +443,11 @@ char main::row
|
|||
char main::row#1 // row zp[1]:6 16.5
|
||||
char main::row#4 // row zp[1]:6 2.2
|
||||
char *main::screen
|
||||
char *main::screen#1 // screen zp[2]:2 5.5
|
||||
char *main::screen#4 // screen zp[2]:2 15.375
|
||||
char *main::screen#1 // screen zp[2]:4 5.5
|
||||
char *main::screen#4 // screen zp[2]:4 15.375
|
||||
|
||||
zp[2]:2 [ main::screen#4 main::screen#1 ]
|
||||
zp[2]:4 [ main::colors#4 main::colors#1 ]
|
||||
zp[2]:4 [ main::screen#4 main::screen#1 ]
|
||||
zp[2]:2 [ main::colors#4 main::colors#1 ]
|
||||
zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
reg byte y [ main::column#2 main::column#1 ]
|
||||
reg byte x [ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
|
@ -468,8 +471,8 @@ Score: 3861
|
|||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label screen = 2
|
||||
.label colors = 4
|
||||
.label screen = 4
|
||||
.label colors = 2
|
||||
.label row = 6
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
// [1] phi main::row#4 = 0 [phi:main->main::@1#0] -- vbuz1=vbuc1
|
||||
|
|
|
@ -5,8 +5,8 @@ char main::color#2 // reg byte x 4.4
|
|||
char main::color#3 // reg byte x 104.66666666666666
|
||||
char main::color#5 // reg byte x 22.0
|
||||
char *main::colors
|
||||
char *main::colors#1 // colors zp[2]:4 7.333333333333333
|
||||
char *main::colors#4 // colors zp[2]:4 13.666666666666664
|
||||
char *main::colors#1 // colors zp[2]:2 7.333333333333333
|
||||
char *main::colors#4 // colors zp[2]:2 13.666666666666664
|
||||
char main::column
|
||||
char main::column#1 // reg byte y 151.5
|
||||
char main::column#2 // reg byte y 101.0
|
||||
|
@ -14,11 +14,11 @@ char main::row
|
|||
char main::row#1 // row zp[1]:6 16.5
|
||||
char main::row#4 // row zp[1]:6 2.2
|
||||
char *main::screen
|
||||
char *main::screen#1 // screen zp[2]:2 5.5
|
||||
char *main::screen#4 // screen zp[2]:2 15.375
|
||||
char *main::screen#1 // screen zp[2]:4 5.5
|
||||
char *main::screen#4 // screen zp[2]:4 15.375
|
||||
|
||||
zp[2]:2 [ main::screen#4 main::screen#1 ]
|
||||
zp[2]:4 [ main::colors#4 main::colors#1 ]
|
||||
zp[2]:4 [ main::screen#4 main::screen#1 ]
|
||||
zp[2]:2 [ main::colors#4 main::colors#1 ]
|
||||
zp[1]:6 [ main::row#4 main::row#1 ]
|
||||
reg byte y [ main::column#2 main::column#1 ]
|
||||
reg byte x [ main::color#3 main::color#5 main::color#2 main::color#1 ]
|
||||
|
|
|
@ -138,9 +138,9 @@ print_ulong_at: {
|
|||
rts
|
||||
}
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
// void print_uint_at(__zp(2) unsigned int w, __zp(4) char *at)
|
||||
// void print_uint_at(__zp(7) unsigned int w, __zp(4) char *at)
|
||||
print_uint_at: {
|
||||
.label w = 2
|
||||
.label w = 7
|
||||
.label at = 4
|
||||
// print_uchar_at(BYTE1(w), at)
|
||||
lda.z w+1
|
||||
|
@ -198,9 +198,9 @@ print_uchar_at: {
|
|||
rts
|
||||
}
|
||||
// Print a single char
|
||||
// void print_char_at(__register(X) char ch, __zp(7) char *at)
|
||||
// void print_char_at(__register(X) char ch, __zp(2) char *at)
|
||||
print_char_at: {
|
||||
.label at = 7
|
||||
.label at = 2
|
||||
// *(at) = ch
|
||||
txa
|
||||
ldy #0
|
||||
|
|
|
@ -543,19 +543,19 @@ Complete equivalence classes
|
|||
[ clock::return#0 ]
|
||||
[ print_uchar_at::$0 ]
|
||||
[ print_uchar_at::$2 ]
|
||||
Allocated zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
Allocated zp[2]:4 [ print_uint_at::at#2 ]
|
||||
Allocated zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Allocated zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Allocated zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated zp[1]:5 [ print_uchar_at::$0 ]
|
||||
Allocated zp[1]:6 [ print_uchar_at::$2 ]
|
||||
Allocated zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
Allocated zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Allocated zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated zp[4]:12 [ clock::return#2 ]
|
||||
Allocated zp[4]:16 [ main::$1 ]
|
||||
Allocated zp[4]:20 [ main::cyclecount#0 ]
|
||||
Allocated zp[4]:24 [ print_ulong_at::dw#0 ]
|
||||
Allocated zp[4]:28 [ clock::return#0 ]
|
||||
Allocated zp[1]:32 [ print_uchar_at::$0 ]
|
||||
Allocated zp[1]:33 [ print_uchar_at::$2 ]
|
||||
Allocated zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Allocated zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
Allocated zp[2]:12 [ print_uint_at::at#2 ]
|
||||
Allocated zp[4]:14 [ print_ulong_at::dw#0 ]
|
||||
Allocated zp[4]:18 [ clock::return#0 ]
|
||||
Allocated zp[4]:22 [ clock::return#2 ]
|
||||
Allocated zp[4]:26 [ main::$1 ]
|
||||
Allocated zp[4]:30 [ main::cyclecount#0 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [5] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [6] main::$1 = clock::return#2 [ main::$1 ] ( [ main::$1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a
|
||||
|
@ -572,16 +572,16 @@ Statement [18] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_T
|
|||
Statement [20] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:9 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
Statement [22] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:9 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
Statement [27] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:9::print_uint_at:21 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Statement [30] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:9::print_uint_at:21 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:9::print_uint_at:23 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||
Statement [36] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Statement [38] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [39] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:33 [ print_uchar_at::$2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::$2 ]
|
||||
Statement [44] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:37 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:37 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:37 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:37 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:41 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:41 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:41 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:41 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Statement [5] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [6] main::$1 = clock::return#2 [ main::$1 ] ( [ main::$1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a
|
||||
Statement [7] main::cyclecount#0 = main::$1 - CLOCKS_PER_INIT [ main::cyclecount#0 ] ( [ main::cyclecount#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a
|
||||
|
@ -603,27 +603,27 @@ Statement [36] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2
|
|||
Statement [38] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [39] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [44] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:37 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:37 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:37 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:37 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:41 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:41 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:41 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:41 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ print_uint_at::at#2 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:6 , reg byte x ,
|
||||
Potential registers zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ print_uint_at::at#2 ] : zp[2]:12 ,
|
||||
Potential registers zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:9 , reg byte x ,
|
||||
Potential registers zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp[1]:9 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[4]:12 [ clock::return#2 ] : zp[4]:12 ,
|
||||
Potential registers zp[4]:16 [ main::$1 ] : zp[4]:16 ,
|
||||
Potential registers zp[4]:20 [ main::cyclecount#0 ] : zp[4]:20 ,
|
||||
Potential registers zp[4]:24 [ print_ulong_at::dw#0 ] : zp[4]:24 ,
|
||||
Potential registers zp[4]:28 [ clock::return#0 ] : zp[4]:28 ,
|
||||
Potential registers zp[1]:32 [ print_uchar_at::$0 ] : zp[1]:32 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:33 [ print_uchar_at::$2 ] : zp[1]:33 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp[2]:3 ,
|
||||
Potential registers zp[4]:22 [ clock::return#2 ] : zp[4]:22 ,
|
||||
Potential registers zp[4]:26 [ main::$1 ] : zp[4]:26 ,
|
||||
Potential registers zp[4]:30 [ main::cyclecount#0 ] : zp[4]:30 ,
|
||||
Potential registers zp[4]:14 [ print_ulong_at::dw#0 ] : zp[4]:14 ,
|
||||
Potential registers zp[4]:18 [ clock::return#0 ] : zp[4]:18 ,
|
||||
Potential registers zp[1]:5 [ print_uchar_at::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ print_uchar_at::$2 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print_char_at] 150,006: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 150,006: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplift Scope [print_uchar_at] 20,002: zp[1]:32 [ print_uchar_at::$0 ] 10,001: zp[1]:33 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplift Scope [print_uint_at] 955: zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:4 [ print_uint_at::at#2 ]
|
||||
Uplift Scope [print_ulong_at] 71: zp[4]:24 [ print_ulong_at::dw#0 ]
|
||||
Uplift Scope [clock] 28: zp[4]:28 [ clock::return#0 ] 22: zp[4]:12 [ clock::return#2 ]
|
||||
Uplift Scope [main] 22: zp[4]:16 [ main::$1 ] 22: zp[4]:20 [ main::cyclecount#0 ]
|
||||
Uplift Scope [print_char_at] 150,006: zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 150,006: zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplift Scope [print_uchar_at] 20,002: zp[1]:5 [ print_uchar_at::$0 ] 10,001: zp[1]:6 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplift Scope [print_uint_at] 955: zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:12 [ print_uint_at::at#2 ]
|
||||
Uplift Scope [print_ulong_at] 71: zp[4]:14 [ print_ulong_at::dw#0 ]
|
||||
Uplift Scope [clock] 28: zp[4]:18 [ clock::return#0 ] 22: zp[4]:22 [ clock::return#2 ]
|
||||
Uplift Scope [main] 22: zp[4]:26 [ main::$1 ] 22: zp[4]:30 [ main::cyclecount#0 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
|
@ -631,27 +631,30 @@ Uplift Scope [clock_start]
|
|||
Uplift Scope [RADIX]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [print_char_at] best 1739 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplifting [print_uchar_at] best 1731 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uint_at] best 1731 combination zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:4 [ print_uint_at::at#2 ]
|
||||
Uplifting [print_ulong_at] best 1731 combination zp[4]:24 [ print_ulong_at::dw#0 ]
|
||||
Uplifting [clock] best 1731 combination zp[4]:28 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ]
|
||||
Uplifting [main] best 1731 combination zp[4]:16 [ main::$1 ] zp[4]:20 [ main::cyclecount#0 ]
|
||||
Uplifting [print_char_at] best 1739 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplifting [print_uchar_at] best 1731 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uint_at] best 1731 combination zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:12 [ print_uint_at::at#2 ]
|
||||
Uplifting [print_ulong_at] best 1731 combination zp[4]:14 [ print_ulong_at::dw#0 ]
|
||||
Uplifting [clock] best 1731 combination zp[4]:18 [ clock::return#0 ] zp[4]:22 [ clock::return#2 ]
|
||||
Uplifting [main] best 1731 combination zp[4]:26 [ main::$1 ] zp[4]:30 [ main::cyclecount#0 ]
|
||||
Uplifting [MOS6526_CIA] best 1731 combination
|
||||
Uplifting [MOS6569_VICII] best 1731 combination
|
||||
Uplifting [MOS6581_SID] best 1731 combination
|
||||
Uplifting [clock_start] best 1731 combination
|
||||
Uplifting [RADIX] best 1731 combination
|
||||
Uplifting [] best 1731 combination
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uchar_at] best 1731 combination zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Coalescing zero page register [ zp[2]:4 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 ] ] with [ zp[4]:16 [ main::$1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 main::$1 ] ] with [ zp[4]:28 [ clock::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:20 [ main::cyclecount#0 ] ] with [ zp[4]:24 [ print_ulong_at::dw#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 main::$1 clock::return#0 ] ] with [ zp[4]:20 [ main::cyclecount#0 print_ulong_at::dw#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:10) zp[2]:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated (was zp[4]:12) zp[4]:9 [ clock::return#2 main::$1 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uchar_at] best 1731 combination zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Coalescing zero page register [ zp[2]:12 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[4]:22 [ clock::return#2 ] ] with [ zp[4]:26 [ main::$1 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:22 [ clock::return#2 main::$1 ] ] with [ zp[4]:18 [ clock::return#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:30 [ main::cyclecount#0 ] ] with [ zp[4]:14 [ print_ulong_at::dw#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:22 [ clock::return#2 main::$1 clock::return#0 ] ] with [ zp[4]:30 [ main::cyclecount#0 print_ulong_at::dw#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated (was zp[2]:12) zp[2]:4 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
Allocated (was zp[1]:9) zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Allocated (was zp[2]:10) zp[2]:7 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
Allocated (was zp[4]:22) zp[4]:9 [ clock::return#2 main::$1 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -838,9 +841,9 @@ print_ulong_at: {
|
|||
}
|
||||
// print_uint_at
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
// void print_uint_at(__zp(2) unsigned int w, __zp(4) char *at)
|
||||
// void print_uint_at(__zp(7) unsigned int w, __zp(4) char *at)
|
||||
print_uint_at: {
|
||||
.label w = 2
|
||||
.label w = 7
|
||||
.label at = 4
|
||||
// [26] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||
lda.z w+1
|
||||
|
@ -936,9 +939,9 @@ print_uchar_at: {
|
|||
}
|
||||
// print_char_at
|
||||
// Print a single char
|
||||
// void print_char_at(__register(X) char ch, __zp(7) char *at)
|
||||
// void print_char_at(__register(X) char ch, __zp(2) char *at)
|
||||
print_char_at: {
|
||||
.label at = 7
|
||||
.label at = 2
|
||||
// [44] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||
txa
|
||||
ldy #0
|
||||
|
@ -1015,9 +1018,9 @@ unsigned long main::cyclecount
|
|||
unsigned long main::cyclecount#0 // cyclecount zp[4]:9 22.0
|
||||
void print_char_at(char ch , char *at)
|
||||
char *print_char_at::at
|
||||
char *print_char_at::at#0 // at zp[2]:7 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:7 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:7 120003.0
|
||||
char *print_char_at::at#0 // at zp[2]:2 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:2 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:2 120003.0
|
||||
char print_char_at::ch
|
||||
char print_char_at::ch#0 // reg byte x 10001.0
|
||||
char print_char_at::ch#1 // reg byte x 20002.0
|
||||
|
@ -1038,19 +1041,19 @@ void print_uint_at(unsigned int w , char *at)
|
|||
char *print_uint_at::at
|
||||
char *print_uint_at::at#2 // at zp[2]:4 400.4
|
||||
unsigned int print_uint_at::w
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:2 551.0
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:7 551.0
|
||||
void print_ulong_at(unsigned long dw , char *at)
|
||||
char *print_ulong_at::at
|
||||
unsigned long print_ulong_at::dw
|
||||
unsigned long print_ulong_at::dw#0 // dw zp[4]:9 71.0
|
||||
|
||||
zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:7 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:4 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
zp[2]:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[2]:2 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[4]:9 [ clock::return#2 main::$1 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
|
||||
reg byte a [ print_uchar_at::$0 ]
|
||||
reg byte y [ print_uchar_at::$2 ]
|
||||
|
@ -1244,9 +1247,9 @@ print_ulong_at: {
|
|||
}
|
||||
// print_uint_at
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
// void print_uint_at(__zp(2) unsigned int w, __zp(4) char *at)
|
||||
// void print_uint_at(__zp(7) unsigned int w, __zp(4) char *at)
|
||||
print_uint_at: {
|
||||
.label w = 2
|
||||
.label w = 7
|
||||
.label at = 4
|
||||
// print_uchar_at(BYTE1(w), at)
|
||||
// [26] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||
|
@ -1338,9 +1341,9 @@ print_uchar_at: {
|
|||
}
|
||||
// print_char_at
|
||||
// Print a single char
|
||||
// void print_char_at(__register(X) char ch, __zp(7) char *at)
|
||||
// void print_char_at(__register(X) char ch, __zp(2) char *at)
|
||||
print_char_at: {
|
||||
.label at = 7
|
||||
.label at = 2
|
||||
// *(at) = ch
|
||||
// [44] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||
txa
|
||||
|
|
|
@ -22,9 +22,9 @@ unsigned long main::cyclecount
|
|||
unsigned long main::cyclecount#0 // cyclecount zp[4]:9 22.0
|
||||
void print_char_at(char ch , char *at)
|
||||
char *print_char_at::at
|
||||
char *print_char_at::at#0 // at zp[2]:7 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:7 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:7 120003.0
|
||||
char *print_char_at::at#0 // at zp[2]:2 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:2 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:2 120003.0
|
||||
char print_char_at::ch
|
||||
char print_char_at::ch#0 // reg byte x 10001.0
|
||||
char print_char_at::ch#1 // reg byte x 20002.0
|
||||
|
@ -45,19 +45,19 @@ void print_uint_at(unsigned int w , char *at)
|
|||
char *print_uint_at::at
|
||||
char *print_uint_at::at#2 // at zp[2]:4 400.4
|
||||
unsigned int print_uint_at::w
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:2 551.0
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:7 551.0
|
||||
void print_ulong_at(unsigned long dw , char *at)
|
||||
char *print_ulong_at::at
|
||||
unsigned long print_ulong_at::dw
|
||||
unsigned long print_ulong_at::dw#0 // dw zp[4]:9 71.0
|
||||
|
||||
zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:7 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:4 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
zp[2]:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[2]:2 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[4]:9 [ clock::return#2 main::$1 clock::return#0 main::cyclecount#0 print_ulong_at::dw#0 ]
|
||||
reg byte a [ print_uchar_at::$0 ]
|
||||
reg byte y [ print_uchar_at::$2 ]
|
||||
|
|
|
@ -115,9 +115,9 @@ print_ulong_at: {
|
|||
rts
|
||||
}
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
// void print_uint_at(__zp(2) unsigned int w, __zp(4) char *at)
|
||||
// void print_uint_at(__zp(7) unsigned int w, __zp(4) char *at)
|
||||
print_uint_at: {
|
||||
.label w = 2
|
||||
.label w = 7
|
||||
.label at = 4
|
||||
// print_uchar_at(BYTE1(w), at)
|
||||
lda.z w+1
|
||||
|
@ -175,9 +175,9 @@ print_uchar_at: {
|
|||
rts
|
||||
}
|
||||
// Print a single char
|
||||
// void print_char_at(__register(X) char ch, __zp(7) char *at)
|
||||
// void print_char_at(__register(X) char ch, __zp(2) char *at)
|
||||
print_char_at: {
|
||||
.label at = 7
|
||||
.label at = 2
|
||||
// *(at) = ch
|
||||
txa
|
||||
ldy #0
|
||||
|
|
|
@ -527,17 +527,17 @@ Complete equivalence classes
|
|||
[ clock::return#0 ]
|
||||
[ print_uchar_at::$0 ]
|
||||
[ print_uchar_at::$2 ]
|
||||
Allocated zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
Allocated zp[2]:4 [ print_uint_at::at#2 ]
|
||||
Allocated zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Allocated zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Allocated zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated zp[1]:5 [ print_uchar_at::$0 ]
|
||||
Allocated zp[1]:6 [ print_uchar_at::$2 ]
|
||||
Allocated zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
Allocated zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Allocated zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated zp[4]:12 [ clock::return#2 ]
|
||||
Allocated zp[4]:16 [ print_ulong_at::dw#0 ]
|
||||
Allocated zp[4]:20 [ clock::return#0 ]
|
||||
Allocated zp[1]:24 [ print_uchar_at::$0 ]
|
||||
Allocated zp[1]:25 [ print_uchar_at::$2 ]
|
||||
Allocated zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Allocated zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
Allocated zp[2]:12 [ print_uint_at::at#2 ]
|
||||
Allocated zp[4]:14 [ print_ulong_at::dw#0 ]
|
||||
Allocated zp[4]:18 [ clock::return#0 ]
|
||||
Allocated zp[4]:22 [ clock::return#2 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [5] print_ulong_at::dw#0 = clock::return#2 [ print_ulong_at::dw#0 ] ( [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
|
@ -552,16 +552,16 @@ Statement [15] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_T
|
|||
Statement [17] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:6 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
Statement [19] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:6 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||
Statement [24] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:6::print_uint_at:18 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Statement [27] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:6::print_uint_at:18 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:6::print_uint_at:20 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||
Statement [33] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
Statement [35] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [36] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:25 [ print_uchar_at::$2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::$2 ]
|
||||
Statement [41] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:34 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:34 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:34 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:34 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:38 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:38 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:38 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:38 [ ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Statement [4] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [5] print_ulong_at::dw#0 = clock::return#2 [ print_ulong_at::dw#0 ] ( [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||
Statement [7] *((char *)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||
|
@ -581,24 +581,24 @@ Statement [33] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2
|
|||
Statement [35] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [36] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||
Statement [41] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:34 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:34 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:34 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:34 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:38 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:38 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:38 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:38 [ ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ print_uint_at::at#2 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:6 , reg byte x ,
|
||||
Potential registers zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[2]:12 [ print_uint_at::at#2 ] : zp[2]:12 ,
|
||||
Potential registers zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:9 , reg byte x ,
|
||||
Potential registers zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp[1]:9 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp[2]:10 ,
|
||||
Potential registers zp[4]:12 [ clock::return#2 ] : zp[4]:12 ,
|
||||
Potential registers zp[4]:16 [ print_ulong_at::dw#0 ] : zp[4]:16 ,
|
||||
Potential registers zp[4]:20 [ clock::return#0 ] : zp[4]:20 ,
|
||||
Potential registers zp[1]:24 [ print_uchar_at::$0 ] : zp[1]:24 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:25 [ print_uchar_at::$2 ] : zp[1]:25 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ] : zp[2]:3 ,
|
||||
Potential registers zp[4]:22 [ clock::return#2 ] : zp[4]:22 ,
|
||||
Potential registers zp[4]:14 [ print_ulong_at::dw#0 ] : zp[4]:14 ,
|
||||
Potential registers zp[4]:18 [ clock::return#0 ] : zp[4]:18 ,
|
||||
Potential registers zp[1]:5 [ print_uchar_at::$0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ print_uchar_at::$2 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [print_char_at] 150,006: zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 150,006: zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplift Scope [print_uchar_at] 20,002: zp[1]:24 [ print_uchar_at::$0 ] 10,001: zp[1]:25 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplift Scope [print_uint_at] 955: zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:4 [ print_uint_at::at#2 ]
|
||||
Uplift Scope [print_ulong_at] 71: zp[4]:16 [ print_ulong_at::dw#0 ]
|
||||
Uplift Scope [clock] 28: zp[4]:20 [ clock::return#0 ] 22: zp[4]:12 [ clock::return#2 ]
|
||||
Uplift Scope [print_char_at] 150,006: zp[1]:2 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] 150,006: zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplift Scope [print_uchar_at] 20,002: zp[1]:5 [ print_uchar_at::$0 ] 10,001: zp[1]:6 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplift Scope [print_uint_at] 955: zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:12 [ print_uint_at::at#2 ]
|
||||
Uplift Scope [print_ulong_at] 71: zp[4]:14 [ print_ulong_at::dw#0 ]
|
||||
Uplift Scope [clock] 28: zp[4]:18 [ clock::return#0 ] 22: zp[4]:22 [ clock::return#2 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
|
@ -607,11 +607,11 @@ Uplift Scope [RADIX]
|
|||
Uplift Scope [main]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [print_char_at] best 1055 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplifting [print_uchar_at] best 1047 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uint_at] best 1047 combination zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:4 [ print_uint_at::at#2 ]
|
||||
Uplifting [print_ulong_at] best 1047 combination zp[4]:16 [ print_ulong_at::dw#0 ]
|
||||
Uplifting [clock] best 1047 combination zp[4]:20 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ]
|
||||
Uplifting [print_char_at] best 1055 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:3 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Uplifting [print_uchar_at] best 1047 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uint_at] best 1047 combination zp[2]:10 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:12 [ print_uint_at::at#2 ]
|
||||
Uplifting [print_ulong_at] best 1047 combination zp[4]:14 [ print_ulong_at::dw#0 ]
|
||||
Uplifting [clock] best 1047 combination zp[4]:18 [ clock::return#0 ] zp[4]:22 [ clock::return#2 ]
|
||||
Uplifting [MOS6526_CIA] best 1047 combination
|
||||
Uplifting [MOS6569_VICII] best 1047 combination
|
||||
Uplifting [MOS6581_SID] best 1047 combination
|
||||
|
@ -619,13 +619,16 @@ Uplifting [clock_start] best 1047 combination
|
|||
Uplifting [RADIX] best 1047 combination
|
||||
Uplifting [main] best 1047 combination
|
||||
Uplifting [] best 1047 combination
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uchar_at] best 1047 combination zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Coalescing zero page register [ zp[2]:4 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 ] ] with [ zp[4]:16 [ print_ulong_at::dw#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 print_ulong_at::dw#0 ] ] with [ zp[4]:20 [ clock::return#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:10) zp[2]:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated (was zp[4]:12) zp[4]:9 [ clock::return#2 print_ulong_at::dw#0 clock::return#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Uplifting [print_uchar_at] best 1047 combination zp[1]:9 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Coalescing zero page register [ zp[2]:12 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
||||
Coalescing zero page register [ zp[4]:22 [ clock::return#2 ] ] with [ zp[4]:14 [ print_ulong_at::dw#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[4]:22 [ clock::return#2 print_ulong_at::dw#0 ] ] with [ zp[4]:18 [ clock::return#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
Allocated (was zp[2]:12) zp[2]:4 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
Allocated (was zp[1]:9) zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
Allocated (was zp[2]:10) zp[2]:7 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
Allocated (was zp[4]:22) zp[4]:9 [ clock::return#2 print_ulong_at::dw#0 clock::return#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -785,9 +788,9 @@ print_ulong_at: {
|
|||
}
|
||||
// print_uint_at
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
// void print_uint_at(__zp(2) unsigned int w, __zp(4) char *at)
|
||||
// void print_uint_at(__zp(7) unsigned int w, __zp(4) char *at)
|
||||
print_uint_at: {
|
||||
.label w = 2
|
||||
.label w = 7
|
||||
.label at = 4
|
||||
// [23] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||
lda.z w+1
|
||||
|
@ -883,9 +886,9 @@ print_uchar_at: {
|
|||
}
|
||||
// print_char_at
|
||||
// Print a single char
|
||||
// void print_char_at(__register(X) char ch, __zp(7) char *at)
|
||||
// void print_char_at(__register(X) char ch, __zp(2) char *at)
|
||||
print_char_at: {
|
||||
.label at = 7
|
||||
.label at = 2
|
||||
// [41] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||
txa
|
||||
ldy #0
|
||||
|
@ -956,9 +959,9 @@ void clock_start()
|
|||
void main()
|
||||
void print_char_at(char ch , char *at)
|
||||
char *print_char_at::at
|
||||
char *print_char_at::at#0 // at zp[2]:7 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:7 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:7 120003.0
|
||||
char *print_char_at::at#0 // at zp[2]:2 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:2 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:2 120003.0
|
||||
char print_char_at::ch
|
||||
char print_char_at::ch#0 // reg byte x 10001.0
|
||||
char print_char_at::ch#1 // reg byte x 20002.0
|
||||
|
@ -979,19 +982,19 @@ void print_uint_at(unsigned int w , char *at)
|
|||
char *print_uint_at::at
|
||||
char *print_uint_at::at#2 // at zp[2]:4 400.4
|
||||
unsigned int print_uint_at::w
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:2 551.0
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:7 551.0
|
||||
void print_ulong_at(unsigned long dw , char *at)
|
||||
char *print_ulong_at::at
|
||||
unsigned long print_ulong_at::dw
|
||||
unsigned long print_ulong_at::dw#0 // dw zp[4]:9 71.0
|
||||
|
||||
zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:7 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:4 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
zp[2]:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[2]:2 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[4]:9 [ clock::return#2 print_ulong_at::dw#0 clock::return#0 ]
|
||||
reg byte a [ print_uchar_at::$0 ]
|
||||
reg byte y [ print_uchar_at::$2 ]
|
||||
|
@ -1158,9 +1161,9 @@ print_ulong_at: {
|
|||
}
|
||||
// print_uint_at
|
||||
// Print a unsigned int as HEX at a specific position
|
||||
// void print_uint_at(__zp(2) unsigned int w, __zp(4) char *at)
|
||||
// void print_uint_at(__zp(7) unsigned int w, __zp(4) char *at)
|
||||
print_uint_at: {
|
||||
.label w = 2
|
||||
.label w = 7
|
||||
.label at = 4
|
||||
// print_uchar_at(BYTE1(w), at)
|
||||
// [23] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||
|
@ -1252,9 +1255,9 @@ print_uchar_at: {
|
|||
}
|
||||
// print_char_at
|
||||
// Print a single char
|
||||
// void print_char_at(__register(X) char ch, __zp(7) char *at)
|
||||
// void print_char_at(__register(X) char ch, __zp(2) char *at)
|
||||
print_char_at: {
|
||||
.label at = 7
|
||||
.label at = 2
|
||||
// *(at) = ch
|
||||
// [41] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||
txa
|
||||
|
|
|
@ -18,9 +18,9 @@ void clock_start()
|
|||
void main()
|
||||
void print_char_at(char ch , char *at)
|
||||
char *print_char_at::at
|
||||
char *print_char_at::at#0 // at zp[2]:7 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:7 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:7 120003.0
|
||||
char *print_char_at::at#0 // at zp[2]:2 20002.0
|
||||
char *print_char_at::at#1 // at zp[2]:2 10001.0
|
||||
char *print_char_at::at#2 // at zp[2]:2 120003.0
|
||||
char print_char_at::ch
|
||||
char print_char_at::ch#0 // reg byte x 10001.0
|
||||
char print_char_at::ch#1 // reg byte x 20002.0
|
||||
|
@ -41,19 +41,19 @@ void print_uint_at(unsigned int w , char *at)
|
|||
char *print_uint_at::at
|
||||
char *print_uint_at::at#2 // at zp[2]:4 400.4
|
||||
unsigned int print_uint_at::w
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:2 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:2 551.0
|
||||
unsigned int print_uint_at::w#0 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#1 // w zp[2]:7 202.0
|
||||
unsigned int print_uint_at::w#2 // w zp[2]:7 551.0
|
||||
void print_ulong_at(unsigned long dw , char *at)
|
||||
char *print_ulong_at::at
|
||||
unsigned long print_ulong_at::dw
|
||||
unsigned long print_ulong_at::dw#0 // dw zp[4]:9 71.0
|
||||
|
||||
zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:7 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ]
|
||||
zp[2]:4 [ print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ]
|
||||
zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||
reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||
zp[2]:7 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[2]:2 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||
zp[4]:9 [ clock::return#2 print_ulong_at::dw#0 clock::return#0 ]
|
||||
reg byte a [ print_uchar_at::$0 ]
|
||||
reg byte y [ print_uchar_at::$2 ]
|
||||
|
|
|
@ -204,34 +204,35 @@ Complete equivalence classes
|
|||
[ main::idx#2 main::idx#3 main::idx#1 ]
|
||||
[ main::f#0 ]
|
||||
[ main::g#0 ]
|
||||
Allocated zp[1]:2 [ main::a#4 main::a#1 ]
|
||||
Allocated zp[1]:2 [ main::f#0 ]
|
||||
Allocated zp[1]:3 [ main::d#0 main::b#1 ]
|
||||
Allocated zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||
Allocated zp[1]:5 [ main::f#0 ]
|
||||
Allocated zp[1]:6 [ main::g#0 ]
|
||||
Allocated zp[1]:4 [ main::g#0 ]
|
||||
Allocated zp[1]:5 [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||
Allocated zp[1]:6 [ main::a#4 main::a#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] main::f#0 = main::d#0 + main::a#4 [ main::a#4 main::d#0 main::idx#2 main::f#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::f#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#4 main::a#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::a#4 main::a#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::d#0 main::b#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||
Statement [4] main::g#0 = main::f#0 + main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a
|
||||
Statement [3] main::f#0 = main::d#0 + main::a#4 [ main::a#4 main::d#0 main::idx#2 main::f#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::f#0 ] { } ) always clobbers reg byte a
|
||||
Statement [4] main::g#0 = main::f#0 + main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::a#4 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::a#4 main::a#1 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::d#0 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::f#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::g#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::idx#2 main::idx#3 main::idx#1 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::f#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::g#0 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 303: zp[1]:5 [ main::f#0 ] 212.1: zp[1]:3 [ main::d#0 main::b#1 ] 202: zp[1]:6 [ main::g#0 ] 143.1: zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] 31.88: zp[1]:2 [ main::a#4 main::a#1 ]
|
||||
Uplift Scope [main] 303: zp[1]:2 [ main::f#0 ] 212.1: zp[1]:3 [ main::d#0 main::b#1 ] 202: zp[1]:4 [ main::g#0 ] 143.1: zp[1]:5 [ main::idx#2 main::idx#3 main::idx#1 ] 31.88: zp[1]:6 [ main::a#4 main::a#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 3641 combination reg byte a [ main::f#0 ] reg byte y [ main::d#0 main::b#1 ] reg byte a [ main::g#0 ] reg byte x [ main::idx#2 main::idx#3 main::idx#1 ] zp[1]:2 [ main::a#4 main::a#1 ]
|
||||
Uplifting [main] best 3641 combination reg byte a [ main::f#0 ] reg byte y [ main::d#0 main::b#1 ] reg byte a [ main::g#0 ] reg byte x [ main::idx#2 main::idx#3 main::idx#1 ] zp[1]:6 [ main::a#4 main::a#1 ]
|
||||
Limited combination testing to 100 combinations of 432 possible.
|
||||
Uplifting [] best 3641 combination
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::a#4 main::a#1 ]
|
||||
Uplifting [main] best 3641 combination zp[1]:2 [ main::a#4 main::a#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:6 [ main::a#4 main::a#1 ]
|
||||
Uplifting [main] best 3641 combination zp[1]:6 [ main::a#4 main::a#1 ]
|
||||
Allocated (was zp[1]:6) zp[1]:2 [ main::a#4 main::a#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -119,14 +119,14 @@ Initial phi equivalence classes
|
|||
Complete equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
[ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 30.25: zp[1]:3 [ main::j#2 main::j#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [main] 30.25: zp[1]:2 [ main::j#2 main::j#1 ] 25.67: zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 291 combination reg byte a [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ]
|
||||
|
|
|
@ -119,14 +119,14 @@ Initial phi equivalence classes
|
|||
Complete equivalence classes
|
||||
[ main::i#2 main::i#1 ]
|
||||
[ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:2 [ main::j#2 main::j#1 ]
|
||||
Allocated zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::j#2 main::j#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::j#2 main::j#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 30.25: zp[1]:3 [ main::j#2 main::j#1 ] 25.67: zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [main] 30.25: zp[1]:2 [ main::j#2 main::j#1 ] 25.67: zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 291 combination reg byte a [ main::j#2 main::j#1 ] reg byte x [ main::i#2 main::i#1 ]
|
||||
|
|
|
@ -429,16 +429,16 @@ Complete equivalence classes
|
|||
[ main::i1#10 main::i1#1 ]
|
||||
[ main::screen#2 main::screen#1 ]
|
||||
[ main::$3 ]
|
||||
Allocated zp[2]:2 [ main::sc#2 main::sc#1 ]
|
||||
Allocated zp[1]:4 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:3 [ main::sc#2 main::sc#1 ]
|
||||
Allocated zp[1]:5 [ main::i1#10 main::i1#1 ]
|
||||
Allocated zp[2]:6 [ main::screen#2 main::screen#1 ]
|
||||
Allocated zp[1]:8 [ main::$3 ]
|
||||
Allocated zp[1]:6 [ main::$3 ]
|
||||
Allocated zp[2]:7 [ main::screen#2 main::screen#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [2] *main::sc#2 = ' ' [ main::sc#2 ] ( [ main::sc#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [4] if(main::sc#1!=main::SCREEN+$3e8+1) goto main::@1 [ main::sc#1 ] ( [ main::sc#1 ] { } ) always clobbers reg byte a
|
||||
Statement [6] if(main::header[main::i#2]!=0) goto main::@3 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [10] main::screen#1 = main::screen#2 + $28 [ main::i1#10 main::screen#1 ] ( [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::i1#10 main::i1#1 ]
|
||||
Statement [11] main::$3 = '0' + main::i1#10 [ main::i1#10 main::screen#1 main::$3 ] ( [ main::i1#10 main::screen#1 main::$3 ] { } ) always clobbers reg byte a
|
||||
|
@ -462,19 +462,20 @@ Statement [18] main::screen#1[8] = '+' [ main::i1#10 main::screen#1 ] ( [ main:
|
|||
Statement [20] main::screen#1[$b] = '+' [ main::i1#10 main::screen#1 ] ( [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [22] main::screen#1[$e] = '+' [ main::i1#10 main::screen#1 ] ( [ main::i1#10 main::screen#1 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [24] main::SCREEN[main::i#2] = main::header[main::i#2] [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[2]:2 [ main::sc#2 main::sc#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ main::sc#2 main::sc#1 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::i1#10 main::i1#1 ] : zp[1]:5 , reg byte x ,
|
||||
Potential registers zp[2]:6 [ main::screen#2 main::screen#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:8 [ main::$3 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:7 [ main::screen#2 main::screen#1 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:6 [ main::$3 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 40.33: zp[1]:4 [ main::i#2 main::i#1 ] 33: zp[2]:2 [ main::sc#2 main::sc#1 ] 28.6: zp[1]:5 [ main::i1#10 main::i1#1 ] 22: zp[1]:8 [ main::$3 ] 17.29: zp[2]:6 [ main::screen#2 main::screen#1 ]
|
||||
Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] 33: zp[2]:3 [ main::sc#2 main::sc#1 ] 28.6: zp[1]:5 [ main::i1#10 main::i1#1 ] 22: zp[1]:6 [ main::$3 ] 17.29: zp[2]:7 [ main::screen#2 main::screen#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 2441 combination reg byte x [ main::i#2 main::i#1 ] zp[2]:2 [ main::sc#2 main::sc#1 ] reg byte x [ main::i1#10 main::i1#1 ] reg byte a [ main::$3 ] zp[2]:6 [ main::screen#2 main::screen#1 ]
|
||||
Uplifting [main] best 2441 combination reg byte x [ main::i#2 main::i#1 ] zp[2]:3 [ main::sc#2 main::sc#1 ] reg byte x [ main::i1#10 main::i1#1 ] reg byte a [ main::$3 ] zp[2]:7 [ main::screen#2 main::screen#1 ]
|
||||
Uplifting [] best 2441 combination
|
||||
Allocated (was zp[2]:6) zp[2]:4 [ main::screen#2 main::screen#1 ]
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ main::sc#2 main::sc#1 ]
|
||||
Allocated (was zp[2]:7) zp[2]:4 [ main::screen#2 main::screen#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -34,8 +34,8 @@ syscall1: {
|
|||
}
|
||||
main: {
|
||||
// Print message
|
||||
.label sc = 4
|
||||
.label msg = 2
|
||||
.label sc = 6
|
||||
.label msg = 4
|
||||
// *VICII_MEMORY = 0x14
|
||||
// Initialize screen memory
|
||||
lda #$14
|
||||
|
@ -103,11 +103,11 @@ main: {
|
|||
jmp __b1
|
||||
}
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = 6
|
||||
.label str = 6
|
||||
.label dst = 2
|
||||
.label str = 2
|
||||
// char* end = (char*)str + num
|
||||
lda.z str
|
||||
clc
|
||||
|
|
|
@ -449,12 +449,12 @@ Complete equivalence classes
|
|||
[ memset::c#4 ]
|
||||
[ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
[ memset::end#0 ]
|
||||
Allocated zp[2]:2 [ main::msg#2 main::msg#1 ]
|
||||
Allocated zp[2]:4 [ main::sc#2 main::sc#1 ]
|
||||
Allocated zp[2]:6 [ memset::str#3 ]
|
||||
Allocated zp[1]:8 [ memset::c#4 ]
|
||||
Allocated zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:11 [ memset::end#0 ]
|
||||
Allocated zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
Allocated zp[2]:4 [ main::msg#2 main::msg#1 ]
|
||||
Allocated zp[2]:6 [ main::sc#2 main::sc#1 ]
|
||||
Allocated zp[2]:8 [ memset::end#0 ]
|
||||
Allocated zp[1]:10 [ memset::c#4 ]
|
||||
Allocated zp[2]:11 [ memset::str#3 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [0] *(SCREEN+$4e) = '<' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *(SCREEN+$4f) = '>' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -466,11 +466,11 @@ Statement [12] *BG_COLOR = BLACK [ ] ( [ ] { } ) always clobbers reg byte a
|
|||
Statement [13] *BG_COLOR = WHITE [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [14] *main::sc#2 = *main::msg#2 [ main::msg#2 main::sc#2 ] ( [ main::msg#2 main::sc#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [18] memset::end#0 = (char *)memset::str#3 + (unsigned int)$28*$19 [ memset::str#3 memset::c#4 memset::end#0 ] ( memset:5 [ memset::str#3 memset::c#4 memset::end#0 ] { } memset:7 [ memset::str#3 memset::c#4 memset::end#0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:10 [ memset::c#4 ]
|
||||
Statement [19] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [21] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [23] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ memset::c#4 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:10 [ memset::c#4 ]
|
||||
Statement [0] *(SCREEN+$4e) = '<' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *(SCREEN+$4f) = '>' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [4] *VICII_MEMORY = $14 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -484,29 +484,29 @@ Statement [18] memset::end#0 = (char *)memset::str#3 + (unsigned int)$28*$19 [ m
|
|||
Statement [19] memset::dst#4 = (char *)memset::str#3 [ memset::c#4 memset::end#0 memset::dst#4 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#4 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#4 ] { } ) always clobbers reg byte a
|
||||
Statement [21] if(memset::dst#2!=memset::end#0) goto memset::@3 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a
|
||||
Statement [23] *memset::dst#2 = memset::c#4 [ memset::c#4 memset::end#0 memset::dst#2 ] ( memset:5 [ memset::c#4 memset::end#0 memset::dst#2 ] { } memset:7 [ memset::c#4 memset::end#0 memset::dst#2 ] { } ) always clobbers reg byte a reg byte y
|
||||
Potential registers zp[2]:2 [ main::msg#2 main::msg#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:4 [ main::sc#2 main::sc#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ memset::str#3 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:8 [ memset::c#4 ] : zp[1]:8 , reg byte x ,
|
||||
Potential registers zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ memset::end#0 ] : zp[2]:11 ,
|
||||
Potential registers zp[2]:4 [ main::msg#2 main::msg#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ main::sc#2 main::sc#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[2]:11 [ memset::str#3 ] : zp[2]:11 ,
|
||||
Potential registers zp[1]:10 [ memset::c#4 ] : zp[1]:10 , reg byte x ,
|
||||
Potential registers zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] : zp[2]:2 ,
|
||||
Potential registers zp[2]:8 [ memset::end#0 ] : zp[2]:8 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [memset] 362.33: zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 18.67: zp[2]:11 [ memset::end#0 ] 14.43: zp[1]:8 [ memset::c#4 ] 0: zp[2]:6 [ memset::str#3 ]
|
||||
Uplift Scope [main] 33: zp[2]:2 [ main::msg#2 main::msg#1 ] 22: zp[2]:4 [ main::sc#2 main::sc#1 ]
|
||||
Uplift Scope [memset] 362.33: zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] 18.67: zp[2]:8 [ memset::end#0 ] 14.43: zp[1]:10 [ memset::c#4 ] 0: zp[2]:11 [ memset::str#3 ]
|
||||
Uplift Scope [main] 33: zp[2]:4 [ main::msg#2 main::msg#1 ] 22: zp[2]:6 [ main::sc#2 main::sc#1 ]
|
||||
Uplift Scope [syscall1]
|
||||
Uplift Scope [syscall2]
|
||||
Uplift Scope [SysCall]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [memset] best 1851 combination zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:11 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:6 [ memset::str#3 ]
|
||||
Uplifting [main] best 1851 combination zp[2]:2 [ main::msg#2 main::msg#1 ] zp[2]:4 [ main::sc#2 main::sc#1 ]
|
||||
Uplifting [memset] best 1851 combination zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] zp[2]:8 [ memset::end#0 ] reg byte x [ memset::c#4 ] zp[2]:11 [ memset::str#3 ]
|
||||
Uplifting [main] best 1851 combination zp[2]:4 [ main::msg#2 main::msg#1 ] zp[2]:6 [ main::sc#2 main::sc#1 ]
|
||||
Uplifting [syscall1] best 1851 combination
|
||||
Uplifting [syscall2] best 1851 combination
|
||||
Uplifting [SysCall] best 1851 combination
|
||||
Uplifting [] best 1851 combination
|
||||
Coalescing zero page register [ zp[2]:6 [ memset::str#3 ] ] with [ zp[2]:9 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Allocated (was zp[2]:11) zp[2]:8 [ memset::end#0 ]
|
||||
Coalescing zero page register [ zp[2]:11 [ memset::str#3 ] ] with [ zp[2]:2 [ memset::dst#2 memset::dst#4 memset::dst#1 ] ] - score: 1
|
||||
Allocated (was zp[2]:11) zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -557,8 +557,8 @@ syscall1: {
|
|||
// main
|
||||
main: {
|
||||
// Print message
|
||||
.label sc = 4
|
||||
.label msg = 2
|
||||
.label sc = 6
|
||||
.label msg = 4
|
||||
// [4] *VICII_MEMORY = $14 -- _deref_pbuc1=vbuc2
|
||||
// Initialize screen memory
|
||||
lda #$14
|
||||
|
@ -663,11 +663,11 @@ main: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = 6
|
||||
.label str = 6
|
||||
.label dst = 2
|
||||
.label str = 2
|
||||
jmp __b1
|
||||
// memset::@1
|
||||
__b1:
|
||||
|
@ -774,30 +774,30 @@ __constant char * const VICII_MEMORY = (char *) 53272
|
|||
__constant const char WHITE = 1
|
||||
void main()
|
||||
char *main::msg
|
||||
char *main::msg#1 // msg zp[2]:2 22.0
|
||||
char *main::msg#2 // msg zp[2]:2 11.0
|
||||
char *main::msg#1 // msg zp[2]:4 22.0
|
||||
char *main::msg#2 // msg zp[2]:4 11.0
|
||||
char *main::sc
|
||||
char *main::sc#1 // sc zp[2]:4 11.0
|
||||
char *main::sc#2 // sc zp[2]:4 11.0
|
||||
char *main::sc#1 // sc zp[2]:6 11.0
|
||||
char *main::sc#2 // sc zp[2]:6 11.0
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 14.428571428571429
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:6 202.0
|
||||
char *memset::dst#2 // dst zp[2]:6 138.33333333333331
|
||||
char *memset::dst#4 // dst zp[2]:6 22.0
|
||||
char *memset::dst#1 // dst zp[2]:2 202.0
|
||||
char *memset::dst#2 // dst zp[2]:2 138.33333333333331
|
||||
char *memset::dst#4 // dst zp[2]:2 22.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:8 18.666666666666664
|
||||
unsigned int memset::num
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:6
|
||||
void *memset::str#3 // str zp[2]:2
|
||||
void syscall1()
|
||||
void syscall2()
|
||||
|
||||
zp[2]:2 [ main::msg#2 main::msg#1 ]
|
||||
zp[2]:4 [ main::sc#2 main::sc#1 ]
|
||||
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:4 [ main::msg#2 main::msg#1 ]
|
||||
zp[2]:6 [ main::sc#2 main::sc#1 ]
|
||||
zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:8 [ memset::end#0 ]
|
||||
|
||||
|
@ -853,8 +853,8 @@ syscall1: {
|
|||
// main
|
||||
main: {
|
||||
// Print message
|
||||
.label sc = 4
|
||||
.label msg = 2
|
||||
.label sc = 6
|
||||
.label msg = 4
|
||||
// *VICII_MEMORY = 0x14
|
||||
// [4] *VICII_MEMORY = $14 -- _deref_pbuc1=vbuc2
|
||||
// Initialize screen memory
|
||||
|
@ -954,11 +954,11 @@ main: {
|
|||
}
|
||||
// memset
|
||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||
// void * memset(__zp(6) void *str, __register(X) char c, unsigned int num)
|
||||
// void * memset(__zp(2) void *str, __register(X) char c, unsigned int num)
|
||||
memset: {
|
||||
.label end = 8
|
||||
.label dst = 6
|
||||
.label str = 6
|
||||
.label dst = 2
|
||||
.label str = 2
|
||||
// memset::@1
|
||||
// char* end = (char*)str + num
|
||||
// [18] memset::end#0 = (char *)memset::str#3 + (unsigned int)$28*$19 -- pbuz1=pbuz2_plus_vwuc1
|
||||
|
|
|
@ -12,29 +12,29 @@ __constant char * const VICII_MEMORY = (char *) 53272
|
|||
__constant const char WHITE = 1
|
||||
void main()
|
||||
char *main::msg
|
||||
char *main::msg#1 // msg zp[2]:2 22.0
|
||||
char *main::msg#2 // msg zp[2]:2 11.0
|
||||
char *main::msg#1 // msg zp[2]:4 22.0
|
||||
char *main::msg#2 // msg zp[2]:4 11.0
|
||||
char *main::sc
|
||||
char *main::sc#1 // sc zp[2]:4 11.0
|
||||
char *main::sc#2 // sc zp[2]:4 11.0
|
||||
char *main::sc#1 // sc zp[2]:6 11.0
|
||||
char *main::sc#2 // sc zp[2]:6 11.0
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
char memset::c#4 // reg byte x 14.428571428571429
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:6 202.0
|
||||
char *memset::dst#2 // dst zp[2]:6 138.33333333333331
|
||||
char *memset::dst#4 // dst zp[2]:6 22.0
|
||||
char *memset::dst#1 // dst zp[2]:2 202.0
|
||||
char *memset::dst#2 // dst zp[2]:2 138.33333333333331
|
||||
char *memset::dst#4 // dst zp[2]:2 22.0
|
||||
char *memset::end
|
||||
char *memset::end#0 // end zp[2]:8 18.666666666666664
|
||||
unsigned int memset::num
|
||||
void *memset::return
|
||||
void *memset::str
|
||||
void *memset::str#3 // str zp[2]:6
|
||||
void *memset::str#3 // str zp[2]:2
|
||||
void syscall1()
|
||||
void syscall2()
|
||||
|
||||
zp[2]:2 [ main::msg#2 main::msg#1 ]
|
||||
zp[2]:4 [ main::sc#2 main::sc#1 ]
|
||||
zp[2]:6 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
zp[2]:4 [ main::msg#2 main::msg#1 ]
|
||||
zp[2]:6 [ main::sc#2 main::sc#1 ]
|
||||
zp[2]:2 [ memset::str#3 memset::dst#2 memset::dst#4 memset::dst#1 ]
|
||||
reg byte x [ memset::c#4 ]
|
||||
zp[2]:8 [ memset::end#0 ]
|
||||
|
|
|
@ -339,19 +339,19 @@ Complete equivalence classes
|
|||
[ main::idx#10 main::idx#11 main::idx#4 ]
|
||||
[ main::i1#2 main::i1#1 ]
|
||||
[ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Allocated zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ]
|
||||
Allocated zp[2]:4 [ main::i1#2 main::i1#1 ]
|
||||
Allocated zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Allocated zp[1]:4 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:5 [ main::i1#2 main::i1#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] *SCREEN = '+' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *(SCREEN+1) = ' ' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] SCREEN[main::idx#10] = '+' [ main::i#2 main::idx#10 ] ( [ main::i#2 main::idx#10 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ]
|
||||
Statement [10] SCREEN[main::idx#11] = ' ' [ main::idx#11 ] ( [ main::idx#11 ] { } ) always clobbers reg byte a
|
||||
Statement [13] if(0==main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Statement [14] SCREEN[main::idx#12] = '+' [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Statement [18] if(main::i1#1!=3) goto main::@7 [ main::i1#1 main::idx#17 ] ( [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a
|
||||
Statement [1] *SCREEN = '+' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -361,18 +361,18 @@ Statement [10] SCREEN[main::idx#11] = ' ' [ main::idx#11 ] ( [ main::idx#11 ] {
|
|||
Statement [13] if(0==main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Statement [14] SCREEN[main::idx#12] = '+' [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Statement [18] if(main::i1#1!=3) goto main::@7 [ main::i1#1 main::idx#17 ] ( [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:4 [ main::i1#2 main::i1#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:5 [ main::i1#2 main::i1#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 52.33: zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 45.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 23.1: zp[2]:4 [ main::i1#2 main::i1#1 ]
|
||||
Uplift Scope [main] 52.33: zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 45.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 23.1: zp[1]:4 [ main::i#2 main::i#1 ] 23.1: zp[2]:5 [ main::i1#2 main::i1#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1130 combination reg byte y [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:4 [ main::i1#2 main::i1#1 ]
|
||||
Uplifting [main] best 1130 combination reg byte y [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:5 [ main::i1#2 main::i1#1 ]
|
||||
Uplifting [] best 1130 combination
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ main::i1#2 main::i1#1 ]
|
||||
Allocated (was zp[2]:5) zp[2]:2 [ main::i1#2 main::i1#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -341,19 +341,19 @@ Complete equivalence classes
|
|||
[ main::idx#10 main::idx#11 main::idx#4 ]
|
||||
[ main::i1#2 main::i1#1 ]
|
||||
[ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Allocated zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ]
|
||||
Allocated zp[2]:4 [ main::i1#2 main::i1#1 ]
|
||||
Allocated zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Allocated zp[1]:4 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[2]:5 [ main::i1#2 main::i1#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] *SCREEN = '0' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [2] *(SCREEN+1) = ' ' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [5] SCREEN[main::idx#10] = '0' [ main::i#2 main::idx#10 ] ( [ main::i#2 main::idx#10 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ]
|
||||
Statement [10] SCREEN[main::idx#11] = ' ' [ main::idx#11 ] ( [ main::idx#11 ] { } ) always clobbers reg byte a
|
||||
Statement [13] if(0!=main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ]
|
||||
Statement [14] SCREEN[main::idx#12] = '0' [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Statement [18] if(main::i1#1!=3) goto main::@7 [ main::i1#1 main::idx#17 ] ( [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a
|
||||
Statement [1] *SCREEN = '0' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
|
@ -363,18 +363,18 @@ Statement [10] SCREEN[main::idx#11] = ' ' [ main::idx#11 ] ( [ main::idx#11 ] {
|
|||
Statement [13] if(0!=main::i1#2) goto main::@8 [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Statement [14] SCREEN[main::idx#12] = '0' [ main::i1#2 main::idx#12 ] ( [ main::i1#2 main::idx#12 ] { } ) always clobbers reg byte a
|
||||
Statement [18] if(main::i1#1!=3) goto main::@7 [ main::i1#1 main::idx#17 ] ( [ main::i1#1 main::idx#17 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::i#2 main::i#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:4 [ main::i1#2 main::i1#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:5 [ main::i1#2 main::i1#1 ] : zp[2]:5 ,
|
||||
Potential registers zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 52.33: zp[1]:6 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 45.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 23.1: zp[1]:2 [ main::i#2 main::i#1 ] 23.1: zp[2]:4 [ main::i1#2 main::i1#1 ]
|
||||
Uplift Scope [main] 52.33: zp[1]:2 [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] 45.92: zp[1]:3 [ main::idx#10 main::idx#11 main::idx#4 ] 23.1: zp[1]:4 [ main::i#2 main::i#1 ] 23.1: zp[2]:5 [ main::i1#2 main::i1#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1130 combination reg byte y [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:4 [ main::i1#2 main::i1#1 ]
|
||||
Uplifting [main] best 1130 combination reg byte y [ main::idx#12 main::idx#17 main::idx#5 main::idx#6 ] reg byte y [ main::idx#10 main::idx#11 main::idx#4 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:5 [ main::i1#2 main::i1#1 ]
|
||||
Uplifting [] best 1130 combination
|
||||
Allocated (was zp[2]:4) zp[2]:2 [ main::i1#2 main::i1#1 ]
|
||||
Allocated (was zp[2]:5) zp[2]:2 [ main::i1#2 main::i1#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -287,44 +287,43 @@ Complete equivalence classes
|
|||
[ idx#13 idx#3 idx#14 ]
|
||||
[ main::j#1 ]
|
||||
[ main::k#1 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ idx#10 idx#0 ]
|
||||
Allocated zp[1]:4 [ main::j#2 main::j#4 ]
|
||||
Allocated zp[1]:5 [ idx#11 idx#1 idx#2 ]
|
||||
Allocated zp[1]:6 [ main::k#2 main::k#3 ]
|
||||
Allocated zp[1]:7 [ idx#13 idx#3 idx#14 ]
|
||||
Allocated zp[1]:8 [ main::j#1 ]
|
||||
Allocated zp[1]:9 [ main::k#1 ]
|
||||
Allocated zp[1]:2 [ main::j#2 main::j#4 ]
|
||||
Allocated zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:4 [ main::k#2 main::k#3 ]
|
||||
Allocated zp[1]:5 [ idx#13 idx#3 idx#14 ]
|
||||
Allocated zp[1]:6 [ idx#11 idx#1 idx#2 ]
|
||||
Allocated zp[1]:7 [ idx#10 idx#0 ]
|
||||
Allocated zp[1]:8 [ main::k#1 ]
|
||||
Allocated zp[1]:9 [ main::j#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] SCREEN[idx#10] = ' ' [ idx#10 ] ( [ idx#10 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ idx#10 idx#0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ idx#10 idx#0 ]
|
||||
Statement [8] SCREEN[idx#11] = ' ' [ idx#11 ] ( [ idx#11 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ idx#11 idx#1 idx#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ idx#11 idx#1 idx#2 ]
|
||||
Statement [3] SCREEN[idx#10] = ' ' [ idx#10 ] ( [ idx#10 ] { } ) always clobbers reg byte a
|
||||
Statement [8] SCREEN[idx#11] = ' ' [ idx#11 ] ( [ idx#11 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ idx#10 idx#0 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::j#2 main::j#4 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ idx#11 idx#1 idx#2 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::k#2 main::k#3 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ idx#13 idx#3 idx#14 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ main::j#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ main::k#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:7 [ idx#10 idx#0 ] : zp[1]:7 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::j#2 main::j#4 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ idx#11 idx#1 idx#2 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::k#2 main::k#3 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ idx#13 idx#3 idx#14 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:9 [ main::j#1 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:8 [ main::k#1 ] : zp[1]:8 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 38.5: zp[1]:4 [ main::j#2 main::j#4 ] 33: zp[1]:2 [ main::i#2 main::i#1 ] 33: zp[1]:6 [ main::k#2 main::k#3 ] 11: zp[1]:9 [ main::k#1 ] 8.25: zp[1]:8 [ main::j#1 ]
|
||||
Uplift Scope [] 27: zp[1]:7 [ idx#13 idx#3 idx#14 ] 22.8: zp[1]:5 [ idx#11 idx#1 idx#2 ] 20.25: zp[1]:3 [ idx#10 idx#0 ]
|
||||
Uplift Scope [main] 38.5: zp[1]:2 [ main::j#2 main::j#4 ] 33: zp[1]:3 [ main::i#2 main::i#1 ] 33: zp[1]:4 [ main::k#2 main::k#3 ] 11: zp[1]:8 [ main::k#1 ] 8.25: zp[1]:9 [ main::j#1 ]
|
||||
Uplift Scope [] 27: zp[1]:5 [ idx#13 idx#3 idx#14 ] 22.8: zp[1]:6 [ idx#11 idx#1 idx#2 ] 20.25: zp[1]:7 [ idx#10 idx#0 ]
|
||||
|
||||
Uplifting [main] best 1377 combination zp[1]:4 [ main::j#2 main::j#4 ] zp[1]:2 [ main::i#2 main::i#1 ] reg byte x [ main::k#2 main::k#3 ] reg byte a [ main::k#1 ] zp[1]:8 [ main::j#1 ]
|
||||
Uplifting [main] best 1377 combination zp[1]:2 [ main::j#2 main::j#4 ] zp[1]:3 [ main::i#2 main::i#1 ] reg byte x [ main::k#2 main::k#3 ] reg byte a [ main::k#1 ] zp[1]:9 [ main::j#1 ]
|
||||
Limited combination testing to 100 combinations of 1024 possible.
|
||||
Uplifting [] best 1153 combination reg byte y [ idx#13 idx#3 idx#14 ] reg byte x [ idx#11 idx#1 idx#2 ] reg byte x [ idx#10 idx#0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::j#2 main::j#4 ]
|
||||
Uplifting [main] best 1153 combination zp[1]:4 [ main::j#2 main::j#4 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::j#2 main::j#4 ]
|
||||
Uplifting [main] best 1153 combination zp[1]:2 [ main::j#2 main::j#4 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Uplifting [main] best 1073 combination reg byte a [ main::i#2 main::i#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ main::j#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:9 [ main::j#1 ]
|
||||
Uplifting [main] best 1003 combination reg byte y [ main::j#1 ]
|
||||
Allocated (was zp[1]:4) zp[1]:2 [ main::j#2 main::j#4 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -11,8 +11,8 @@
|
|||
.label SCREEN = $400
|
||||
.segment Code
|
||||
main: {
|
||||
.label __4 = 2
|
||||
.label __5 = 3
|
||||
.label __4 = 3
|
||||
.label __5 = 2
|
||||
ldy #0
|
||||
ldx #0
|
||||
__b1:
|
||||
|
|
|
@ -347,16 +347,16 @@ Complete equivalence classes
|
|||
[ main::$5 ]
|
||||
Allocated zp[1]:2 [ main::i#10 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::idx#10 main::idx#1 ]
|
||||
Allocated zp[1]:4 [ main::$4 ]
|
||||
Allocated zp[1]:5 [ main::$5 ]
|
||||
Allocated zp[1]:4 [ main::$5 ]
|
||||
Allocated zp[1]:5 [ main::$4 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] SCREEN[main::idx#10] = '+' [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#10 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::idx#10 main::idx#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$4 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$4 ]
|
||||
Statement [5] main::$5 = main::i#10 & 2 [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [7] (SCREEN+$28*1)[main::idx#10] = '+' [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$5 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::$5 ]
|
||||
Statement [10] (SCREEN+$28*2)[main::idx#10] = '+' [ main::i#10 main::idx#10 main::$4 main::$5 ] ( [ main::i#10 main::idx#10 main::$4 main::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [13] (SCREEN+$28*3)[main::idx#10] = '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a
|
||||
Statement [2] main::$4 = main::i#10 & 1 [ main::i#10 main::idx#10 main::$4 ] ( [ main::i#10 main::idx#10 main::$4 ] { } ) always clobbers reg byte a
|
||||
|
@ -367,21 +367,21 @@ Statement [10] (SCREEN+$28*2)[main::idx#10] = '+' [ main::i#10 main::idx#10 main
|
|||
Statement [13] (SCREEN+$28*3)[main::idx#10] = '+' [ main::i#10 main::idx#10 ] ( [ main::i#10 main::idx#10 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#10 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::idx#10 main::idx#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::$4 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::$5 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ main::$4 ] : zp[1]:5 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::$5 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 19.64: zp[1]:2 [ main::i#10 main::i#1 ] 12.41: zp[1]:3 [ main::idx#10 main::idx#1 ] 6.29: zp[1]:5 [ main::$5 ] 4.89: zp[1]:4 [ main::$4 ]
|
||||
Uplift Scope [main] 19.64: zp[1]:2 [ main::i#10 main::i#1 ] 12.41: zp[1]:3 [ main::idx#10 main::idx#1 ] 6.29: zp[1]:4 [ main::$5 ] 4.89: zp[1]:5 [ main::$4 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 1231 combination reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::idx#10 main::idx#1 ] zp[1]:5 [ main::$5 ] zp[1]:4 [ main::$4 ]
|
||||
Uplifting [main] best 1231 combination reg byte x [ main::i#10 main::i#1 ] reg byte y [ main::idx#10 main::idx#1 ] zp[1]:4 [ main::$5 ] zp[1]:5 [ main::$4 ]
|
||||
Uplifting [] best 1231 combination
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ main::$5 ]
|
||||
Uplifting [main] best 1231 combination zp[1]:5 [ main::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::$4 ]
|
||||
Uplifting [main] best 1231 combination zp[1]:4 [ main::$4 ]
|
||||
Allocated (was zp[1]:4) zp[1]:2 [ main::$4 ]
|
||||
Allocated (was zp[1]:5) zp[1]:3 [ main::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ main::$5 ]
|
||||
Uplifting [main] best 1231 combination zp[1]:4 [ main::$5 ]
|
||||
Attempting to uplift remaining variables inzp[1]:5 [ main::$4 ]
|
||||
Uplifting [main] best 1231 combination zp[1]:5 [ main::$4 ]
|
||||
Allocated (was zp[1]:4) zp[1]:2 [ main::$5 ]
|
||||
Allocated (was zp[1]:5) zp[1]:3 [ main::$4 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -401,8 +401,8 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label __4 = 2
|
||||
.label __5 = 3
|
||||
.label __4 = 3
|
||||
.label __5 = 2
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
__b1_from_main:
|
||||
// [1] phi main::idx#10 = 0 [phi:main->main::@1#0] -- vbuyy=vbuc1
|
||||
|
@ -529,8 +529,8 @@ Succesful ASM optimization Pass5NextJumpElimination
|
|||
FINAL SYMBOL TABLE
|
||||
__constant char * const SCREEN = (char *) 1024
|
||||
void main()
|
||||
char main::$4 // zp[1]:2 4.888888888888889
|
||||
char main::$5 // zp[1]:3 6.285714285714286
|
||||
char main::$4 // zp[1]:3 4.888888888888889
|
||||
char main::$5 // zp[1]:2 6.285714285714286
|
||||
char main::i
|
||||
char main::i#1 // reg byte x 16.5
|
||||
char main::i#10 // reg byte x 3.142857142857143
|
||||
|
@ -540,8 +540,8 @@ char main::idx#10 // reg byte y 5.076923076923077
|
|||
|
||||
reg byte x [ main::i#10 main::i#1 ]
|
||||
reg byte y [ main::idx#10 main::idx#1 ]
|
||||
zp[1]:2 [ main::$4 ]
|
||||
zp[1]:3 [ main::$5 ]
|
||||
zp[1]:3 [ main::$4 ]
|
||||
zp[1]:2 [ main::$5 ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
|
@ -564,8 +564,8 @@ Score: 841
|
|||
.segment Code
|
||||
// main
|
||||
main: {
|
||||
.label __4 = 2
|
||||
.label __5 = 3
|
||||
.label __4 = 3
|
||||
.label __5 = 2
|
||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||
// [1] phi main::idx#10 = 0 [phi:main->main::@1#0] -- vbuyy=vbuc1
|
||||
ldy #0
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
__constant char * const SCREEN = (char *) 1024
|
||||
void main()
|
||||
char main::$4 // zp[1]:2 4.888888888888889
|
||||
char main::$5 // zp[1]:3 6.285714285714286
|
||||
char main::$4 // zp[1]:3 4.888888888888889
|
||||
char main::$5 // zp[1]:2 6.285714285714286
|
||||
char main::i
|
||||
char main::i#1 // reg byte x 16.5
|
||||
char main::i#10 // reg byte x 3.142857142857143
|
||||
|
@ -11,5 +11,5 @@ char main::idx#10 // reg byte y 5.076923076923077
|
|||
|
||||
reg byte x [ main::i#10 main::i#1 ]
|
||||
reg byte y [ main::idx#10 main::idx#1 ]
|
||||
zp[1]:2 [ main::$4 ]
|
||||
zp[1]:3 [ main::$5 ]
|
||||
zp[1]:3 [ main::$4 ]
|
||||
zp[1]:2 [ main::$5 ]
|
||||
|
|
|
@ -185,36 +185,36 @@ Complete equivalence classes
|
|||
[ main::$1 ]
|
||||
[ main::$2 ]
|
||||
[ main::sc#0 ]
|
||||
Allocated zp[1]:2 [ main::COLS#2 main::COLS#1 ]
|
||||
Allocated zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:4 [ main::$1 ]
|
||||
Allocated zp[2]:5 [ main::$2 ]
|
||||
Allocated zp[2]:7 [ main::sc#0 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ main::COLS#2 main::COLS#1 ]
|
||||
Allocated zp[2]:4 [ main::sc#0 ]
|
||||
Allocated zp[1]:6 [ main::$1 ]
|
||||
Allocated zp[2]:7 [ main::$2 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [4] main::$1 = main::COLS#2 << 2 [ main::COLS#2 main::$1 ] ( [ main::COLS#2 main::$1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::COLS#2 main::COLS#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::COLS#2 main::COLS#1 ]
|
||||
Statement [5] main::$2 = SCREEN + main::$1 [ main::COLS#2 main::$2 ] ( [ main::COLS#2 main::$2 ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::sc#0 = main::$2 + 2 [ main::COLS#2 main::sc#0 ] ( [ main::COLS#2 main::sc#0 ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::sc#0[main::i#2] = main::COLS#2 [ main::COLS#2 main::sc#0 main::i#2 ] ( [ main::COLS#2 main::sc#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Statement [4] main::$1 = main::COLS#2 << 2 [ main::COLS#2 main::$1 ] ( [ main::COLS#2 main::$1 ] { } ) always clobbers reg byte a
|
||||
Statement [5] main::$2 = SCREEN + main::$1 [ main::COLS#2 main::$2 ] ( [ main::COLS#2 main::$2 ] { } ) always clobbers reg byte a
|
||||
Statement [6] main::sc#0 = main::$2 + 2 [ main::COLS#2 main::sc#0 ] ( [ main::COLS#2 main::sc#0 ] { } ) always clobbers reg byte a
|
||||
Statement [10] main::sc#0[main::i#2] = main::COLS#2 [ main::COLS#2 main::sc#0 main::i#2 ] ( [ main::COLS#2 main::sc#0 main::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::COLS#2 main::COLS#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ main::i#2 main::i#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ main::$1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:5 [ main::$2 ] : zp[2]:5 ,
|
||||
Potential registers zp[2]:7 [ main::sc#0 ] : zp[2]:7 ,
|
||||
Potential registers zp[1]:3 [ main::COLS#2 main::COLS#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::$1 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:7 [ main::$2 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:4 [ main::sc#0 ] : zp[2]:4 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [main] 336.67: zp[1]:3 [ main::i#2 main::i#1 ] 38.11: zp[1]:2 [ main::COLS#2 main::COLS#1 ] 22.4: zp[2]:7 [ main::sc#0 ] 22: zp[1]:4 [ main::$1 ] 22: zp[2]:5 [ main::$2 ]
|
||||
Uplift Scope [main] 336.67: zp[1]:2 [ main::i#2 main::i#1 ] 38.11: zp[1]:3 [ main::COLS#2 main::COLS#1 ] 22.4: zp[2]:4 [ main::sc#0 ] 22: zp[1]:6 [ main::$1 ] 22: zp[2]:7 [ main::$2 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [main] best 3111 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::COLS#2 main::COLS#1 ] zp[2]:7 [ main::sc#0 ] reg byte a [ main::$1 ] zp[2]:5 [ main::$2 ]
|
||||
Uplifting [main] best 3111 combination reg byte y [ main::i#2 main::i#1 ] reg byte x [ main::COLS#2 main::COLS#1 ] zp[2]:4 [ main::sc#0 ] reg byte a [ main::$1 ] zp[2]:7 [ main::$2 ]
|
||||
Uplifting [] best 3111 combination
|
||||
Coalescing zero page register [ zp[2]:5 [ main::$2 ] ] with [ zp[2]:7 [ main::sc#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:5) zp[2]:2 [ main::$2 main::sc#0 ]
|
||||
Coalescing zero page register [ zp[2]:7 [ main::$2 ] ] with [ zp[2]:4 [ main::sc#0 ] ] - score: 1
|
||||
Allocated (was zp[2]:7) zp[2]:2 [ main::$2 main::sc#0 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -151,29 +151,30 @@ Added variable sub::D#0 to live range equivalence class [ sub::D#0 ]
|
|||
Complete equivalence classes
|
||||
[ A ]
|
||||
[ sub::D#0 ]
|
||||
Allocated zp[1]:2 [ A ]
|
||||
Allocated zp[1]:3 [ sub::D#0 ]
|
||||
Allocated zp[1]:2 [ sub::D#0 ]
|
||||
Allocated zp[1]:3 [ A ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] A = 'a' [ A ] ( [ A ] { } ) always clobbers reg byte a
|
||||
Statement [5] *SCREEN = A [ A ] ( main:3 [ A ] { } ) always clobbers reg byte a
|
||||
Statement [6] *(SCREEN+1) = main::B [ A ] ( main:3 [ A ] { } ) always clobbers reg byte a
|
||||
Statement [7] *(SCREEN+2) = *main::addrA [ A ] ( main:3 [ A ] { } ) always clobbers reg byte a
|
||||
Statement [10] *(SCREEN+3) = sub::C [ A ] ( main:3::sub:8 [ A ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ A ] : zp[1]:2 ,
|
||||
Potential registers zp[1]:3 [ sub::D#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ A ] : zp[1]:3 ,
|
||||
Potential registers zp[1]:2 [ sub::D#0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [sub] 202: zp[1]:3 [ sub::D#0 ]
|
||||
Uplift Scope [] 19: zp[1]:2 [ A ]
|
||||
Uplift Scope [sub] 202: zp[1]:2 [ sub::D#0 ]
|
||||
Uplift Scope [] 19: zp[1]:3 [ A ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [__start]
|
||||
|
||||
Uplifting [sub] best 112 combination reg byte x [ sub::D#0 ]
|
||||
Uplifting [] best 112 combination zp[1]:2 [ A ]
|
||||
Uplifting [] best 112 combination zp[1]:3 [ A ]
|
||||
Uplifting [main] best 112 combination
|
||||
Uplifting [__start] best 112 combination
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ A ]
|
||||
Uplifting [] best 112 combination zp[1]:2 [ A ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ A ]
|
||||
Uplifting [] best 112 combination zp[1]:3 [ A ]
|
||||
Allocated (was zp[1]:3) zp[1]:2 [ A ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
|
|
@ -304,26 +304,26 @@ Complete equivalence classes
|
|||
[ plot::x#1 ]
|
||||
[ plot::idx#0 ]
|
||||
[ plot::$0 ]
|
||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Allocated zp[1]:3 [ line::x#2 line::x#1 ]
|
||||
Allocated zp[1]:2 [ plot::$0 ]
|
||||
Allocated zp[1]:3 [ plot::idx#0 ]
|
||||
Allocated zp[1]:4 [ plot::x#1 ]
|
||||
Allocated zp[1]:5 [ plot::idx#0 ]
|
||||
Allocated zp[1]:6 [ plot::$0 ]
|
||||
Allocated zp[1]:5 [ line::x#2 line::x#1 ]
|
||||
Allocated zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] SCREEN[main::i#2] = 0 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Statement [2] plots[main::i#2] = main::i#2 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Statement [3] SCREEN[main::i#2] = 0 [ main::i#2 ] ( [ main::i#2 ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ line::x#2 line::x#1 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ main::i#2 main::i#1 ] : zp[1]:6 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ line::x#2 line::x#1 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:4 [ plot::x#1 ] : zp[1]:4 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:5 [ plot::idx#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:6 [ plot::$0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:3 [ plot::idx#0 ] : zp[1]:3 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:2 [ plot::$0 ] : zp[1]:2 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [plot] 200,002: zp[1]:6 [ plot::$0 ] 150,001.5: zp[1]:5 [ plot::idx#0 ] 110,002: zp[1]:4 [ plot::x#1 ]
|
||||
Uplift Scope [line] 30,003: zp[1]:3 [ line::x#2 line::x#1 ]
|
||||
Uplift Scope [main] 34.83: zp[1]:2 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope [plot] 200,002: zp[1]:2 [ plot::$0 ] 150,001.5: zp[1]:3 [ plot::idx#0 ] 110,002: zp[1]:4 [ plot::x#1 ]
|
||||
Uplift Scope [line] 30,003: zp[1]:5 [ line::x#2 line::x#1 ]
|
||||
Uplift Scope [main] 34.83: zp[1]:6 [ main::i#2 main::i#1 ]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [plot] best 4356 combination reg byte a [ plot::$0 ] reg byte y [ plot::idx#0 ] reg byte x [ plot::x#1 ]
|
||||
|
|
|
@ -13,9 +13,9 @@
|
|||
:BasicUpstart(__start)
|
||||
.label IRQ = $314
|
||||
.label PLEX_SCREEN_PTR2 = $500
|
||||
.label idx = 4
|
||||
.label idx = 2
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR1 = 2
|
||||
.label PLEX_SCREEN_PTR1 = 3
|
||||
.segment Code
|
||||
__start: {
|
||||
// volatile char idx = 0
|
||||
|
|
|
@ -145,28 +145,28 @@ Added variable idx to live range equivalence class [ idx ]
|
|||
Complete equivalence classes
|
||||
[ PLEX_SCREEN_PTR1#6 ]
|
||||
[ idx ]
|
||||
Allocated zp[2]:2 [ PLEX_SCREEN_PTR1#6 ]
|
||||
Allocated zp[1]:4 [ idx ]
|
||||
Allocated zp[1]:2 [ idx ]
|
||||
Allocated zp[2]:3 [ PLEX_SCREEN_PTR1#6 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [1] idx = 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [6] PLEX_SCREEN_PTR1#6[idx] = ++ PLEX_SCREEN_PTR1#6[idx] [ idx ] ( [ idx ] { } ) always clobbers reg byte a reg byte y
|
||||
Statement [7] PLEX_SCREEN_PTR2[idx] = ++ PLEX_SCREEN_PTR2[idx] [ idx ] ( [ idx ] { } ) always clobbers reg byte x
|
||||
Statement [10] *IRQ = &irq [ ] ( main:3 [ ] { } ) always clobbers reg byte a
|
||||
Potential registers zp[2]:2 [ PLEX_SCREEN_PTR1#6 ] : zp[2]:2 ,
|
||||
Potential registers zp[1]:4 [ idx ] : zp[1]:4 ,
|
||||
Potential registers zp[2]:3 [ PLEX_SCREEN_PTR1#6 ] : zp[2]:3 ,
|
||||
Potential registers zp[1]:2 [ idx ] : zp[1]:2 ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [] 4.67: zp[1]:4 [ idx ] 4: zp[2]:2 [ PLEX_SCREEN_PTR1#6 ]
|
||||
Uplift Scope [] 4.67: zp[1]:2 [ idx ] 4: zp[2]:3 [ PLEX_SCREEN_PTR1#6 ]
|
||||
Uplift Scope [main]
|
||||
Uplift Scope [irq]
|
||||
Uplift Scope [__start]
|
||||
|
||||
Uplifting [] best 140 combination zp[1]:4 [ idx ] zp[2]:2 [ PLEX_SCREEN_PTR1#6 ]
|
||||
Uplifting [] best 140 combination zp[1]:2 [ idx ] zp[2]:3 [ PLEX_SCREEN_PTR1#6 ]
|
||||
Uplifting [main] best 140 combination
|
||||
Uplifting [irq] best 140 combination
|
||||
Uplifting [__start] best 140 combination
|
||||
Attempting to uplift remaining variables inzp[1]:4 [ idx ]
|
||||
Uplifting [] best 140 combination zp[1]:4 [ idx ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ idx ]
|
||||
Uplifting [] best 140 combination zp[1]:2 [ idx ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -187,9 +187,9 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
// Global Constants & labels
|
||||
.label IRQ = $314
|
||||
.label PLEX_SCREEN_PTR2 = $500
|
||||
.label idx = 4
|
||||
.label idx = 2
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR1 = 2
|
||||
.label PLEX_SCREEN_PTR1 = 3
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
@ -268,15 +268,15 @@ Succesful ASM optimization Pass5UnusedLabelElimination
|
|||
FINAL SYMBOL TABLE
|
||||
__constant void (** const IRQ)() = (void (**)()) 788
|
||||
char *PLEX_SCREEN_PTR1
|
||||
char *PLEX_SCREEN_PTR1#6 // PLEX_SCREEN_PTR1 zp[2]:2 4.0
|
||||
char *PLEX_SCREEN_PTR1#6 // PLEX_SCREEN_PTR1 zp[2]:3 4.0
|
||||
__constant char *PLEX_SCREEN_PTR2 = (char *) 1280
|
||||
void __start()
|
||||
__loadstore volatile char idx // zp[1]:4 4.666666666666666
|
||||
__loadstore volatile char idx // zp[1]:2 4.666666666666666
|
||||
__interrupt(rom_sys_c64) void irq()
|
||||
void main()
|
||||
|
||||
zp[2]:2 [ PLEX_SCREEN_PTR1#6 ]
|
||||
zp[1]:4 [ idx ]
|
||||
zp[2]:3 [ PLEX_SCREEN_PTR1#6 ]
|
||||
zp[1]:2 [ idx ]
|
||||
|
||||
|
||||
FINAL ASSEMBLER
|
||||
|
@ -300,9 +300,9 @@ Score: 98
|
|||
// Global Constants & labels
|
||||
.label IRQ = $314
|
||||
.label PLEX_SCREEN_PTR2 = $500
|
||||
.label idx = 4
|
||||
.label idx = 2
|
||||
// The address of the sprite pointers on the current screen (screen+0x3f8).
|
||||
.label PLEX_SCREEN_PTR1 = 2
|
||||
.label PLEX_SCREEN_PTR1 = 3
|
||||
.segment Code
|
||||
// __start
|
||||
__start: {
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
__constant void (** const IRQ)() = (void (**)()) 788
|
||||
char *PLEX_SCREEN_PTR1
|
||||
char *PLEX_SCREEN_PTR1#6 // PLEX_SCREEN_PTR1 zp[2]:2 4.0
|
||||
char *PLEX_SCREEN_PTR1#6 // PLEX_SCREEN_PTR1 zp[2]:3 4.0
|
||||
__constant char *PLEX_SCREEN_PTR2 = (char *) 1280
|
||||
void __start()
|
||||
__loadstore volatile char idx // zp[1]:4 4.666666666666666
|
||||
__loadstore volatile char idx // zp[1]:2 4.666666666666666
|
||||
__interrupt(rom_sys_c64) void irq()
|
||||
void main()
|
||||
|
||||
zp[2]:2 [ PLEX_SCREEN_PTR1#6 ]
|
||||
zp[1]:4 [ idx ]
|
||||
zp[2]:3 [ PLEX_SCREEN_PTR1#6 ]
|
||||
zp[1]:2 [ idx ]
|
||||
|
|
|
@ -14,8 +14,8 @@
|
|||
.const RED = 2
|
||||
.label BG_COLOR = $d021
|
||||
.label print_screen = $400
|
||||
.label print_char_cursor = 5
|
||||
.label print_line_cursor = 7
|
||||
.label print_char_cursor = 2
|
||||
.label print_line_cursor = 6
|
||||
.segment Code
|
||||
main: {
|
||||
// print_cls()
|
||||
|
@ -162,7 +162,7 @@ memset: {
|
|||
.const num = $3e8
|
||||
.label str = print_screen
|
||||
.label end = str+num
|
||||
.label dst = 2
|
||||
.label dst = 4
|
||||
lda #<str
|
||||
sta.z dst
|
||||
lda #>str
|
||||
|
@ -189,10 +189,10 @@ memset: {
|
|||
!:
|
||||
jmp __b1
|
||||
}
|
||||
// void assert_byte(__zp(2) char *msg, __register(X) char b, __zp(4) char c)
|
||||
// void assert_byte(__zp(4) char *msg, __register(X) char b, __zp(8) char c)
|
||||
assert_byte: {
|
||||
.label msg = 2
|
||||
.label c = 4
|
||||
.label msg = 4
|
||||
.label c = 8
|
||||
// print_str(msg)
|
||||
jsr print_str
|
||||
// print_str(" ")
|
||||
|
@ -227,10 +227,10 @@ assert_byte: {
|
|||
jsr print_str
|
||||
jmp __b2
|
||||
}
|
||||
// void assert_sbyte(__zp(2) char *msg, __register(X) signed char b, __zp(4) signed char c)
|
||||
// void assert_sbyte(__zp(4) char *msg, __register(X) signed char b, __zp(8) signed char c)
|
||||
assert_sbyte: {
|
||||
.label msg = 2
|
||||
.label c = 4
|
||||
.label msg = 4
|
||||
.label c = 8
|
||||
// print_str(msg)
|
||||
lda.z print_line_cursor
|
||||
sta.z print_char_cursor
|
||||
|
@ -271,9 +271,9 @@ assert_sbyte: {
|
|||
jmp __b2
|
||||
}
|
||||
// Print a zero-terminated string
|
||||
// void print_str(__zp(2) char *str)
|
||||
// void print_str(__zp(4) char *str)
|
||||
print_str: {
|
||||
.label str = 2
|
||||
.label str = 4
|
||||
__b1:
|
||||
// while(*str)
|
||||
ldy #0
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -9,23 +9,23 @@ void assert_byte(char *msg , char b , char c)
|
|||
char assert_byte::b
|
||||
char assert_byte::b#3 // reg byte x 20.2
|
||||
char assert_byte::c
|
||||
char assert_byte::c#3 // c zp[1]:4 20.2
|
||||
char assert_byte::c#3 // c zp[1]:8 20.2
|
||||
char *assert_byte::msg
|
||||
char *assert_byte::msg#3 // msg zp[2]:2 101.0
|
||||
char *assert_byte::msg#3 // msg zp[2]:4 101.0
|
||||
void assert_sbyte(char *msg , signed char b , signed char c)
|
||||
signed char assert_sbyte::b
|
||||
signed char assert_sbyte::b#5 // reg byte x 16.833333333333332
|
||||
signed char assert_sbyte::c
|
||||
signed char assert_sbyte::c#5 // c zp[1]:4 16.833333333333332
|
||||
signed char assert_sbyte::c#5 // c zp[1]:8 16.833333333333332
|
||||
char *assert_sbyte::msg
|
||||
char *assert_sbyte::msg#5 // msg zp[2]:2 101.0
|
||||
char *assert_sbyte::msg#5 // msg zp[2]:4 101.0
|
||||
void main()
|
||||
void * memset(void *str , char c , unsigned int num)
|
||||
char memset::c
|
||||
__constant char memset::c#0 = ' ' // c
|
||||
char *memset::dst
|
||||
char *memset::dst#1 // dst zp[2]:2 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:2 1334.6666666666667
|
||||
char *memset::dst#1 // dst zp[2]:4 2002.0
|
||||
char *memset::dst#2 // dst zp[2]:4 1334.6666666666667
|
||||
char *memset::end
|
||||
__constant char *memset::end#0 = (char *)memset::str#0+memset::num#0 // end
|
||||
unsigned int memset::num
|
||||
|
@ -39,29 +39,29 @@ void print_char(char ch)
|
|||
char print_char::ch
|
||||
char print_char::ch#0 // reg byte a 110002.0
|
||||
char *print_char_cursor
|
||||
char *print_char_cursor#1 // print_char_cursor zp[2]:5 8207.814814814814
|
||||
char *print_char_cursor#4 // print_char_cursor zp[2]:5 27500.5
|
||||
char *print_char_cursor#77 // print_char_cursor zp[2]:5 61.5
|
||||
char *print_char_cursor#87 // print_char_cursor zp[2]:5 1809.0
|
||||
char *print_char_cursor#92 // print_char_cursor zp[2]:5 202.0
|
||||
char *print_char_cursor#98 // print_char_cursor zp[2]:5 22.0
|
||||
char *print_char_cursor#99 // print_char_cursor zp[2]:5 22.0
|
||||
char *print_char_cursor#1 // print_char_cursor zp[2]:2 8207.814814814814
|
||||
char *print_char_cursor#4 // print_char_cursor zp[2]:2 27500.5
|
||||
char *print_char_cursor#77 // print_char_cursor zp[2]:2 61.5
|
||||
char *print_char_cursor#87 // print_char_cursor zp[2]:2 1809.0
|
||||
char *print_char_cursor#92 // print_char_cursor zp[2]:2 202.0
|
||||
char *print_char_cursor#98 // print_char_cursor zp[2]:2 22.0
|
||||
char *print_char_cursor#99 // print_char_cursor zp[2]:2 22.0
|
||||
void print_cls()
|
||||
char *print_line_cursor
|
||||
char *print_line_cursor#0 // print_line_cursor zp[2]:7 840.2499999999999
|
||||
char *print_line_cursor#25 // print_line_cursor zp[2]:7 21003.0
|
||||
char *print_line_cursor#49 // print_line_cursor zp[2]:7 1203.0
|
||||
char *print_line_cursor#52 // print_line_cursor zp[2]:7 11.181818181818182
|
||||
char *print_line_cursor#0 // print_line_cursor zp[2]:6 840.2499999999999
|
||||
char *print_line_cursor#25 // print_line_cursor zp[2]:6 21003.0
|
||||
char *print_line_cursor#49 // print_line_cursor zp[2]:6 1203.0
|
||||
char *print_line_cursor#52 // print_line_cursor zp[2]:6 11.181818181818182
|
||||
void print_ln()
|
||||
char *print_screen
|
||||
__constant char *print_screen#0 = (char *) 1024 // print_screen
|
||||
void print_str(char *str)
|
||||
char *print_str::str
|
||||
char *print_str::str#0 // str zp[2]:2 20002.0
|
||||
char *print_str::str#1 // str zp[2]:2 202.0
|
||||
char *print_str::str#10 // str zp[2]:2 10251.25
|
||||
char *print_str::str#12 // str zp[2]:2 1203.0
|
||||
char *print_str::str#5 // str zp[2]:2 101.0
|
||||
char *print_str::str#0 // str zp[2]:4 20002.0
|
||||
char *print_str::str#1 // str zp[2]:4 202.0
|
||||
char *print_str::str#10 // str zp[2]:4 10251.25
|
||||
char *print_str::str#12 // str zp[2]:4 1203.0
|
||||
char *print_str::str#5 // str zp[2]:4 101.0
|
||||
__constant char str[2] = " "
|
||||
__constant char str1[6] = "fail!"
|
||||
__constant char str2[3] = "ok"
|
||||
|
@ -85,10 +85,10 @@ __constant char test_sbytes::msg2[9] = "0+2-4=-2"
|
|||
__constant char test_sbytes::msg3[$b] = "-(0+2-4)=2"
|
||||
__constant char test_sbytes::msg4[$b] = "-127-127=2"
|
||||
|
||||
zp[2]:2 [ assert_byte::msg#3 print_str::str#10 print_str::str#12 print_str::str#1 print_str::str#5 print_str::str#0 assert_sbyte::msg#5 memset::dst#2 memset::dst#1 ]
|
||||
zp[2]:4 [ assert_byte::msg#3 print_str::str#10 print_str::str#12 print_str::str#1 print_str::str#5 print_str::str#0 assert_sbyte::msg#5 memset::dst#2 memset::dst#1 ]
|
||||
reg byte x [ assert_byte::b#3 ]
|
||||
reg byte x [ assert_sbyte::b#5 ]
|
||||
zp[1]:4 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
zp[2]:5 [ print_char_cursor#87 print_char_cursor#77 print_char_cursor#98 print_char_cursor#99 print_char_cursor#1 print_char_cursor#92 print_char_cursor#4 ]
|
||||
zp[2]:7 [ print_line_cursor#25 print_line_cursor#49 print_line_cursor#52 print_line_cursor#0 ]
|
||||
zp[1]:8 [ assert_sbyte::c#5 assert_byte::c#3 ]
|
||||
zp[2]:2 [ print_char_cursor#87 print_char_cursor#77 print_char_cursor#98 print_char_cursor#99 print_char_cursor#1 print_char_cursor#92 print_char_cursor#4 ]
|
||||
zp[2]:6 [ print_line_cursor#25 print_line_cursor#49 print_line_cursor#52 print_line_cursor#0 ]
|
||||
reg byte a [ print_char::ch#0 ]
|
||||
|
|
|
@ -21,13 +21,13 @@
|
|||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __5 = $d
|
||||
.label xw = $13
|
||||
.label yw = $15
|
||||
.label angle_w = $d
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label __5 = 6
|
||||
.label xw = $11
|
||||
.label yw = $13
|
||||
.label angle_w = 6
|
||||
.label screen = $15
|
||||
.label x = $f
|
||||
.label y = $17
|
||||
// init_font_hex(CHARSET)
|
||||
jsr init_font_hex
|
||||
// *D018 = toD018(SCREEN, CHARSET)
|
||||
|
@ -88,15 +88,15 @@ main: {
|
|||
jmp __b4
|
||||
}
|
||||
// Make charset from proto chars
|
||||
// void init_font_hex(__zp($b) char *charset)
|
||||
// void init_font_hex(__zp($a) char *charset)
|
||||
init_font_hex: {
|
||||
.label __0 = $17
|
||||
.label idx = 8
|
||||
.label proto_lo = $d
|
||||
.label charset = $b
|
||||
.label c1 = 7
|
||||
.label proto_hi = 9
|
||||
.label c = 6
|
||||
.label __0 = $d
|
||||
.label idx = $c
|
||||
.label proto_lo = 6
|
||||
.label charset = $a
|
||||
.label c1 = $e
|
||||
.label proto_hi = 8
|
||||
.label c = $10
|
||||
lda #0
|
||||
sta.z c
|
||||
lda #<FONT_HEX_PROTO
|
||||
|
@ -196,18 +196,18 @@ init_font_hex: {
|
|||
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
||||
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
|
||||
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
|
||||
// __zp($d) unsigned int atan2_16(__zp($13) int x, __zp($15) int y)
|
||||
// __zp(6) unsigned int atan2_16(__zp($11) int x, __zp($13) int y)
|
||||
atan2_16: {
|
||||
.label __2 = 9
|
||||
.label __7 = $b
|
||||
.label yi = 9
|
||||
.label xi = $b
|
||||
.label angle = $d
|
||||
.label xd = $11
|
||||
.label yd = $f
|
||||
.label return = $d
|
||||
.label x = $13
|
||||
.label y = $15
|
||||
.label __2 = 8
|
||||
.label __7 = $a
|
||||
.label yi = 8
|
||||
.label xi = $a
|
||||
.label angle = 6
|
||||
.label xd = 4
|
||||
.label yd = 2
|
||||
.label return = 6
|
||||
.label x = $11
|
||||
.label y = $13
|
||||
// (y>=0)?y:-y
|
||||
lda.z y+1
|
||||
bmi !__b1+
|
||||
|
|
|
@ -1501,60 +1501,60 @@ Complete equivalence classes
|
|||
[ init_font_hex::idx#3 ]
|
||||
[ atan2_16::$23 ]
|
||||
[ atan2_16::$22 ]
|
||||
Allocated zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Allocated zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
Allocated zp[2]:6 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
Allocated zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Allocated zp[2]:9 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
Allocated zp[2]:11 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
Allocated zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Allocated zp[1]:14 [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
Allocated zp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Allocated zp[2]:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
|
||||
Allocated zp[2]:18 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
|
||||
Allocated zp[1]:20 [ atan2_16::i#2 atan2_16::i#1 ]
|
||||
Allocated zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
|
||||
Allocated zp[2]:23 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
|
||||
Allocated zp[1]:25 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
||||
Allocated zp[2]:26 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
Allocated zp[2]:28 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
Allocated zp[2]:30 [ main::xw#0 ]
|
||||
Allocated zp[2]:32 [ main::yw#0 ]
|
||||
Allocated zp[2]:34 [ atan2_16::x#0 ]
|
||||
Allocated zp[2]:36 [ atan2_16::y#0 ]
|
||||
Allocated zp[2]:38 [ atan2_16::return#2 ]
|
||||
Allocated zp[2]:40 [ main::angle_w#0 ]
|
||||
Allocated zp[2]:42 [ main::$5 ]
|
||||
Allocated zp[1]:44 [ main::ang_w#0 ]
|
||||
Allocated zp[1]:45 [ init_font_hex::$0 ]
|
||||
Allocated zp[1]:46 [ init_font_hex::$1 ]
|
||||
Allocated zp[1]:47 [ init_font_hex::$2 ]
|
||||
Allocated zp[1]:48 [ init_font_hex::idx#3 ]
|
||||
Allocated zp[1]:49 [ atan2_16::$23 ]
|
||||
Allocated zp[1]:50 [ atan2_16::$22 ]
|
||||
Allocated zp[1]:2 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
||||
Allocated zp[2]:3 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
Allocated zp[2]:5 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
Allocated zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ]
|
||||
Allocated zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ]
|
||||
Allocated zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ]
|
||||
Allocated zp[1]:13 [ atan2_16::$23 ]
|
||||
Allocated zp[1]:14 [ atan2_16::$22 ]
|
||||
Allocated zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ]
|
||||
Allocated zp[1]:16 [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
Allocated zp[1]:17 [ init_font_hex::$1 ]
|
||||
Allocated zp[1]:18 [ init_font_hex::$2 ]
|
||||
Allocated zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Allocated zp[1]:20 [ init_font_hex::$0 ]
|
||||
Allocated zp[2]:21 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ]
|
||||
Allocated zp[1]:23 [ init_font_hex::idx#3 ]
|
||||
Allocated zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Allocated zp[2]:25 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
Allocated zp[2]:27 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
Allocated zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
Allocated zp[2]:31 [ atan2_16::return#2 ]
|
||||
Allocated zp[2]:33 [ main::angle_w#0 ]
|
||||
Allocated zp[2]:35 [ main::$5 ]
|
||||
Allocated zp[1]:37 [ main::ang_w#0 ]
|
||||
Allocated zp[1]:38 [ main::x#2 main::x#1 ]
|
||||
Allocated zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Allocated zp[2]:40 [ atan2_16::x#0 ]
|
||||
Allocated zp[2]:42 [ atan2_16::y#0 ]
|
||||
Allocated zp[2]:44 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
Allocated zp[2]:46 [ main::xw#0 ]
|
||||
Allocated zp[2]:48 [ main::yw#0 ]
|
||||
Allocated zp[1]:50 [ main::y#4 main::y#1 ]
|
||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||
Statement [3] *D018 = main::toD0181_return#0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||
Statement [8] atan2_16::x#0 = (int)main::xw#0 [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::yw#0 atan2_16::x#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:50 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:38 [ main::x#2 main::x#1 ]
|
||||
Statement [9] atan2_16::y#0 = (int)main::yw#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] ( [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [11] atan2_16::return#2 = atan2_16::return#0 [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] ( [ main::y#4 main::x#2 main::screen#2 atan2_16::return#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [12] main::angle_w#0 = atan2_16::return#2 [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] ( [ main::y#4 main::x#2 main::screen#2 main::angle_w#0 ] { } ) always clobbers reg byte a
|
||||
Statement [13] main::$5 = main::angle_w#0 + $80 [ main::y#4 main::x#2 main::screen#2 main::$5 ] ( [ main::y#4 main::x#2 main::screen#2 main::$5 ] { } ) always clobbers reg byte a
|
||||
Statement [15] *main::screen#2 = main::ang_w#0 [ main::y#4 main::x#2 main::screen#2 ] ( [ main::y#4 main::x#2 main::screen#2 ] { } ) always clobbers reg byte y
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:50 [ main::y#4 main::y#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:38 [ main::x#2 main::x#1 ]
|
||||
Statement [25] *init_font_hex::charset#2 = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a reg byte y
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Removing always clobbered register reg byte y as potential for zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Statement [27] init_font_hex::$0 = init_font_hex::proto_hi#6[init_font_hex::i#2] << 4 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:14 [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:16 [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Statement [28] init_font_hex::$1 = init_font_hex::proto_lo#4[init_font_hex::i#2] << 1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::i#2 init_font_hex::idx#5 init_font_hex::$0 init_font_hex::$1 ] { } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:45 [ init_font_hex::$0 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ init_font_hex::$0 ]
|
||||
Statement [34] init_font_hex::charset#2[init_font_hex::idx#2] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 init_font_hex::idx#2 ] { } ) always clobbers reg byte a
|
||||
Statement [36] init_font_hex::charset#2[init_font_hex::idx#3] = 0 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::proto_lo#4 init_font_hex::c1#4 ] { } ) always clobbers reg byte a
|
||||
Statement [37] init_font_hex::proto_lo#1 = init_font_hex::proto_lo#4 + 5 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] ( init_font_hex:1 [ init_font_hex::proto_hi#6 init_font_hex::c#6 init_font_hex::charset#2 init_font_hex::c1#4 init_font_hex::proto_lo#1 ] { } ) always clobbers reg byte a
|
||||
|
@ -1565,14 +1565,14 @@ Statement [46] atan2_16::$2 = - atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan
|
|||
Statement [48] if(atan2_16::x#0>=0) goto atan2_16::@4 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [49] atan2_16::$7 = - atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::$7 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [52] if(atan2_16::yi#3!=0) goto atan2_16::@11 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:20 [ atan2_16::i#2 atan2_16::i#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ]
|
||||
Statement [54] atan2_16::angle#1 = atan2_16::angle#6 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [55] if(atan2_16::x#0>=0) goto atan2_16::@7 [ atan2_16::y#0 atan2_16::angle#1 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [56] atan2_16::angle#4 = $8000 - atan2_16::angle#1 [ atan2_16::y#0 atan2_16::angle#4 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::y#0 atan2_16::angle#4 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [58] if(atan2_16::y#0>=0) goto atan2_16::@8 [ atan2_16::angle#11 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#11 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [59] atan2_16::angle#5 = - atan2_16::angle#11 [ atan2_16::angle#5 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::angle#5 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [63] atan2_16::xd#10 = atan2_16::xi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:25 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
||||
Statement [64] atan2_16::yd#10 = atan2_16::yi#3 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#5 atan2_16::xd#10 atan2_16::yd#10 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [68] atan2_16::xd#2 = atan2_16::xd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::yd#3 atan2_16::xd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [69] atan2_16::yd#2 = atan2_16::yd#3 >> 1 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::xd#2 atan2_16::yd#2 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
|
@ -1633,91 +1633,94 @@ Statement [83] atan2_16::xd#1 = atan2_16::xd#3 >> 2 [ atan2_16::x#0 atan2_16::y#
|
|||
Statement [84] atan2_16::yd#1 = atan2_16::yd#3 >> 2 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#3 atan2_16::xi#3 atan2_16::i#2 atan2_16::angle#12 atan2_16::shift#2 atan2_16::xd#1 atan2_16::yd#1 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [86] atan2_16::xi#13 = atan2_16::x#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#0 atan2_16::xi#13 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Statement [87] atan2_16::yi#16 = atan2_16::y#0 [ atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] ( atan2_16:10 [ main::y#4 main::x#2 main::screen#2 atan2_16::x#0 atan2_16::y#0 atan2_16::yi#16 ] { { atan2_16::return#0 = atan2_16::return#2 } } ) always clobbers reg byte a
|
||||
Potential registers zp[1]:2 [ main::y#4 main::y#1 ] : zp[1]:2 , reg byte x ,
|
||||
Potential registers zp[1]:3 [ main::x#2 main::x#1 ] : zp[1]:3 , reg byte x ,
|
||||
Potential registers zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] : zp[2]:4 ,
|
||||
Potential registers zp[2]:6 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] : zp[2]:6 ,
|
||||
Potential registers zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ] : zp[1]:8 , reg byte x ,
|
||||
Potential registers zp[2]:9 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] : zp[2]:11 ,
|
||||
Potential registers zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ] : zp[1]:13 , reg byte x ,
|
||||
Potential registers zp[1]:14 [ init_font_hex::i#2 init_font_hex::i#1 ] : zp[1]:14 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ] : zp[1]:15 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp[2]:16 ,
|
||||
Potential registers zp[2]:18 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp[2]:18 ,
|
||||
Potential registers zp[1]:20 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:20 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] : zp[2]:21 ,
|
||||
Potential registers zp[2]:23 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] : zp[2]:23 ,
|
||||
Potential registers zp[1]:25 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] : zp[1]:25 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:26 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] : zp[2]:26 ,
|
||||
Potential registers zp[2]:28 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] : zp[2]:28 ,
|
||||
Potential registers zp[2]:30 [ main::xw#0 ] : zp[2]:30 ,
|
||||
Potential registers zp[2]:32 [ main::yw#0 ] : zp[2]:32 ,
|
||||
Potential registers zp[2]:34 [ atan2_16::x#0 ] : zp[2]:34 ,
|
||||
Potential registers zp[2]:36 [ atan2_16::y#0 ] : zp[2]:36 ,
|
||||
Potential registers zp[2]:38 [ atan2_16::return#2 ] : zp[2]:38 ,
|
||||
Potential registers zp[2]:40 [ main::angle_w#0 ] : zp[2]:40 ,
|
||||
Potential registers zp[2]:42 [ main::$5 ] : zp[2]:42 ,
|
||||
Potential registers zp[1]:44 [ main::ang_w#0 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:45 [ init_font_hex::$0 ] : zp[1]:45 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:46 [ init_font_hex::$1 ] : zp[1]:46 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:47 [ init_font_hex::$2 ] : zp[1]:47 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:48 [ init_font_hex::idx#3 ] : zp[1]:48 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:49 [ atan2_16::$23 ] : zp[1]:49 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:50 [ atan2_16::$22 ] : zp[1]:50 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:50 [ main::y#4 main::y#1 ] : zp[1]:50 , reg byte x ,
|
||||
Potential registers zp[1]:38 [ main::x#2 main::x#1 ] : zp[1]:38 , reg byte x ,
|
||||
Potential registers zp[2]:44 [ main::screen#2 main::screen#4 main::screen#1 ] : zp[2]:44 ,
|
||||
Potential registers zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] : zp[2]:29 ,
|
||||
Potential registers zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ] : zp[1]:39 , reg byte x ,
|
||||
Potential registers zp[2]:25 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] : zp[2]:25 ,
|
||||
Potential registers zp[2]:27 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] : zp[2]:27 ,
|
||||
Potential registers zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ] : zp[1]:24 , reg byte x ,
|
||||
Potential registers zp[1]:16 [ init_font_hex::i#2 init_font_hex::i#1 ] : zp[1]:16 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ] : zp[1]:19 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] : zp[2]:9 ,
|
||||
Potential registers zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] : zp[2]:11 ,
|
||||
Potential registers zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ] : zp[1]:15 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] : zp[2]:7 ,
|
||||
Potential registers zp[2]:21 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] : zp[2]:21 ,
|
||||
Potential registers zp[1]:2 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||
Potential registers zp[2]:3 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] : zp[2]:3 ,
|
||||
Potential registers zp[2]:5 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] : zp[2]:5 ,
|
||||
Potential registers zp[2]:46 [ main::xw#0 ] : zp[2]:46 ,
|
||||
Potential registers zp[2]:48 [ main::yw#0 ] : zp[2]:48 ,
|
||||
Potential registers zp[2]:40 [ atan2_16::x#0 ] : zp[2]:40 ,
|
||||
Potential registers zp[2]:42 [ atan2_16::y#0 ] : zp[2]:42 ,
|
||||
Potential registers zp[2]:31 [ atan2_16::return#2 ] : zp[2]:31 ,
|
||||
Potential registers zp[2]:33 [ main::angle_w#0 ] : zp[2]:33 ,
|
||||
Potential registers zp[2]:35 [ main::$5 ] : zp[2]:35 ,
|
||||
Potential registers zp[1]:37 [ main::ang_w#0 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:20 [ init_font_hex::$0 ] : zp[1]:20 , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:17 [ init_font_hex::$1 ] : zp[1]:17 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:18 [ init_font_hex::$2 ] : zp[1]:18 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:23 [ init_font_hex::idx#3 ] : zp[1]:23 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:13 [ atan2_16::$23 ] : zp[1]:13 , reg byte a , reg byte x , reg byte y ,
|
||||
Potential registers zp[1]:14 [ atan2_16::$22 ] : zp[1]:14 , reg byte a , reg byte x , reg byte y ,
|
||||
|
||||
REGISTER UPLIFT SCOPES
|
||||
Uplift Scope [atan2_16] 28,666,670.58: zp[1]:25 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,600,008: zp[2]:26 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,333,338.67: zp[2]:28 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,524,818.05: zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,690,940.68: zp[2]:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,273,742.67: zp[2]:18 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,000,002: zp[1]:49 [ atan2_16::$23 ] 2,000,002: zp[1]:50 [ atan2_16::$22 ] 1,708,335.04: zp[1]:20 [ atan2_16::i#2 atan2_16::i#1 ] 8,208.5: zp[2]:23 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 202: zp[2]:38 [ atan2_16::return#2 ] 108.03: zp[2]:34 [ atan2_16::x#0 ] 102.62: zp[2]:36 [ atan2_16::y#0 ]
|
||||
Uplift Scope [init_font_hex] 21,668.83: zp[1]:14 [ init_font_hex::i#2 init_font_hex::i#1 ] 20,002: zp[1]:46 [ init_font_hex::$1 ] 20,002: zp[1]:47 [ init_font_hex::$2 ] 11,501.6: zp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 10,001: zp[1]:45 [ init_font_hex::$0 ] 2,002: zp[1]:48 [ init_font_hex::idx#3 ] 1,634.97: zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 1,631.57: zp[2]:9 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 1,423.81: zp[2]:11 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 634.17: zp[2]:6 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 162.13: zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Uplift Scope [main] 202: zp[2]:40 [ main::angle_w#0 ] 202: zp[2]:42 [ main::$5 ] 202: zp[1]:44 [ main::ang_w#0 ] 168.33: zp[1]:3 [ main::x#2 main::x#1 ] 93.15: zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] 50.5: zp[2]:30 [ main::xw#0 ] 50.5: zp[2]:32 [ main::yw#0 ] 17.97: zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Uplift Scope [atan2_16] 28,666,670.58: zp[1]:2 [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] 20,600,008: zp[2]:3 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] 17,333,338.67: zp[2]:5 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] 7,524,818.05: zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] 2,690,940.68: zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] 2,273,742.67: zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] 2,000,002: zp[1]:13 [ atan2_16::$23 ] 2,000,002: zp[1]:14 [ atan2_16::$22 ] 1,708,335.04: zp[1]:15 [ atan2_16::i#2 atan2_16::i#1 ] 8,208.5: zp[2]:21 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] 202: zp[2]:31 [ atan2_16::return#2 ] 108.03: zp[2]:40 [ atan2_16::x#0 ] 102.62: zp[2]:42 [ atan2_16::y#0 ]
|
||||
Uplift Scope [init_font_hex] 21,668.83: zp[1]:16 [ init_font_hex::i#2 init_font_hex::i#1 ] 20,002: zp[1]:17 [ init_font_hex::$1 ] 20,002: zp[1]:18 [ init_font_hex::$2 ] 11,501.6: zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ] 10,001: zp[1]:20 [ init_font_hex::$0 ] 2,002: zp[1]:23 [ init_font_hex::idx#3 ] 1,634.97: zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ] 1,631.57: zp[2]:25 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] 1,423.81: zp[2]:27 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] 634.17: zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] 162.13: zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Uplift Scope [main] 202: zp[2]:33 [ main::angle_w#0 ] 202: zp[2]:35 [ main::$5 ] 202: zp[1]:37 [ main::ang_w#0 ] 168.33: zp[1]:38 [ main::x#2 main::x#1 ] 93.15: zp[2]:44 [ main::screen#2 main::screen#4 main::screen#1 ] 50.5: zp[2]:46 [ main::xw#0 ] 50.5: zp[2]:48 [ main::yw#0 ] 17.97: zp[1]:50 [ main::y#4 main::y#1 ]
|
||||
Uplift Scope [MOS6526_CIA]
|
||||
Uplift Scope [MOS6569_VICII]
|
||||
Uplift Scope [MOS6581_SID]
|
||||
Uplift Scope []
|
||||
|
||||
Uplifting [atan2_16] best 1147297 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:26 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:28 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:18 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:23 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:38 [ atan2_16::return#2 ] zp[2]:34 [ atan2_16::x#0 ] zp[2]:36 [ atan2_16::y#0 ]
|
||||
Uplifting [atan2_16] best 1147297 combination reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ] zp[2]:3 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ] zp[2]:5 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ] zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] reg byte a [ atan2_16::$23 ] reg byte a [ atan2_16::$22 ] reg byte x [ atan2_16::i#2 atan2_16::i#1 ] zp[2]:21 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] zp[2]:31 [ atan2_16::return#2 ] zp[2]:40 [ atan2_16::x#0 ] zp[2]:42 [ atan2_16::y#0 ]
|
||||
Limited combination testing to 100 combinations of 144 possible.
|
||||
Uplifting [init_font_hex] best 1128297 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:45 [ init_font_hex::$0 ] zp[1]:48 [ init_font_hex::idx#3 ] zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:9 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:11 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:6 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Uplifting [init_font_hex] best 1128297 combination reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ] reg byte a [ init_font_hex::$1 ] reg byte a [ init_font_hex::$2 ] zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ] zp[1]:20 [ init_font_hex::$0 ] zp[1]:23 [ init_font_hex::idx#3 ] zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ] zp[2]:25 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] zp[2]:27 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Limited combination testing to 100 combinations of 6912 possible.
|
||||
Uplifting [main] best 1127697 combination zp[2]:40 [ main::angle_w#0 ] zp[2]:42 [ main::$5 ] reg byte a [ main::ang_w#0 ] zp[1]:3 [ main::x#2 main::x#1 ] zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ] zp[2]:30 [ main::xw#0 ] zp[2]:32 [ main::yw#0 ] zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1127697 combination zp[2]:33 [ main::angle_w#0 ] zp[2]:35 [ main::$5 ] reg byte a [ main::ang_w#0 ] zp[1]:38 [ main::x#2 main::x#1 ] zp[2]:44 [ main::screen#2 main::screen#4 main::screen#1 ] zp[2]:46 [ main::xw#0 ] zp[2]:48 [ main::yw#0 ] zp[1]:50 [ main::y#4 main::y#1 ]
|
||||
Uplifting [MOS6526_CIA] best 1127697 combination
|
||||
Uplifting [MOS6569_VICII] best 1127697 combination
|
||||
Uplifting [MOS6581_SID] best 1127697 combination
|
||||
Uplifting [] best 1127697 combination
|
||||
Attempting to uplift remaining variables inzp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Uplifting [init_font_hex] best 1127697 combination zp[1]:15 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Attempting to uplift remaining variables inzp[1]:45 [ init_font_hex::$0 ]
|
||||
Uplifting [init_font_hex] best 1127697 combination zp[1]:45 [ init_font_hex::$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:48 [ init_font_hex::idx#3 ]
|
||||
Attempting to uplift remaining variables inzp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Uplifting [init_font_hex] best 1127697 combination zp[1]:19 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Attempting to uplift remaining variables inzp[1]:20 [ init_font_hex::$0 ]
|
||||
Uplifting [init_font_hex] best 1127697 combination zp[1]:20 [ init_font_hex::$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:23 [ init_font_hex::idx#3 ]
|
||||
Uplifting [init_font_hex] best 1127097 combination reg byte y [ init_font_hex::idx#3 ]
|
||||
Attempting to uplift remaining variables inzp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Uplifting [init_font_hex] best 1127097 combination zp[1]:13 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1127097 combination zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Uplifting [init_font_hex] best 1127097 combination zp[1]:8 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1127097 combination zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
Coalescing zero page register [ zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:23 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:30 [ main::xw#0 ] ] with [ zp[2]:34 [ atan2_16::x#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:32 [ main::yw#0 ] ] with [ zp[2]:36 [ atan2_16::y#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:38 [ atan2_16::return#2 ] ] with [ zp[2]:40 [ main::angle_w#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:38 [ atan2_16::return#2 main::angle_w#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 ] ] with [ zp[2]:42 [ main::$5 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:16 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:6 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:18 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:9 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:21 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 ] ] with [ zp[2]:11 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
|
||||
Allocated (was zp[1]:8) zp[1]:6 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Allocated (was zp[1]:13) zp[1]:7 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Allocated (was zp[1]:15) zp[1]:8 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Allocated (was zp[2]:16) zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
Allocated (was zp[2]:18) zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
Allocated (was zp[2]:21) zp[2]:13 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
Allocated (was zp[2]:26) zp[2]:15 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
Allocated (was zp[2]:28) zp[2]:17 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
Allocated (was zp[2]:30) zp[2]:19 [ main::xw#0 atan2_16::x#0 ]
|
||||
Allocated (was zp[2]:32) zp[2]:21 [ main::yw#0 atan2_16::y#0 ]
|
||||
Allocated (was zp[1]:45) zp[1]:23 [ init_font_hex::$0 ]
|
||||
Attempting to uplift remaining variables inzp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Uplifting [init_font_hex] best 1127097 combination zp[1]:24 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:38 [ main::x#2 main::x#1 ]
|
||||
Uplifting [main] best 1127097 combination zp[1]:38 [ main::x#2 main::x#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Uplifting [init_font_hex] best 1127097 combination zp[1]:39 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Attempting to uplift remaining variables inzp[1]:50 [ main::y#4 main::y#1 ]
|
||||
Uplifting [main] best 1127097 combination zp[1]:50 [ main::y#4 main::y#1 ]
|
||||
Coalescing zero page register [ zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 ] ] with [ zp[2]:21 [ atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:46 [ main::xw#0 ] ] with [ zp[2]:40 [ atan2_16::x#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:48 [ main::yw#0 ] ] with [ zp[2]:42 [ atan2_16::y#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:31 [ atan2_16::return#2 ] ] with [ zp[2]:33 [ main::angle_w#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 ] ] with [ zp[2]:31 [ atan2_16::return#2 main::angle_w#0 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 ] ] with [ zp[2]:35 [ main::$5 ] ] - score: 1
|
||||
Coalescing zero page register [ zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 ] ] with [ zp[2]:29 [ init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ] ]
|
||||
Coalescing zero page register [ zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 ] ] with [ zp[2]:25 [ init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ] ]
|
||||
Coalescing zero page register [ zp[2]:7 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 ] ] with [ zp[2]:27 [ init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ] ]
|
||||
Allocated (was zp[2]:3) zp[2]:2 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
Allocated (was zp[2]:5) zp[2]:4 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
Allocated (was zp[2]:7) zp[2]:6 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
Allocated (was zp[2]:9) zp[2]:8 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
Allocated (was zp[2]:11) zp[2]:10 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
Allocated (was zp[1]:19) zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
Allocated (was zp[1]:20) zp[1]:13 [ init_font_hex::$0 ]
|
||||
Allocated (was zp[1]:24) zp[1]:14 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
Allocated (was zp[1]:38) zp[1]:15 [ main::x#2 main::x#1 ]
|
||||
Allocated (was zp[1]:39) zp[1]:16 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
Allocated (was zp[2]:46) zp[2]:17 [ main::xw#0 atan2_16::x#0 ]
|
||||
Allocated (was zp[2]:48) zp[2]:19 [ main::yw#0 atan2_16::y#0 ]
|
||||
Allocated (was zp[2]:44) zp[2]:21 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
Allocated (was zp[1]:50) zp[1]:23 [ main::y#4 main::y#1 ]
|
||||
|
||||
ASSEMBLER BEFORE OPTIMIZATION
|
||||
// File Comments
|
||||
|
@ -1747,13 +1750,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __5 = $d
|
||||
.label xw = $13
|
||||
.label yw = $15
|
||||
.label angle_w = $d
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label __5 = 6
|
||||
.label xw = $11
|
||||
.label yw = $13
|
||||
.label angle_w = 6
|
||||
.label screen = $15
|
||||
.label x = $f
|
||||
.label y = $17
|
||||
// [1] call init_font_hex
|
||||
// [22] phi from main to init_font_hex [phi:main->init_font_hex]
|
||||
init_font_hex_from_main:
|
||||
|
@ -1862,15 +1865,15 @@ main: {
|
|||
}
|
||||
// init_font_hex
|
||||
// Make charset from proto chars
|
||||
// void init_font_hex(__zp($b) char *charset)
|
||||
// void init_font_hex(__zp($a) char *charset)
|
||||
init_font_hex: {
|
||||
.label __0 = $17
|
||||
.label idx = 8
|
||||
.label proto_lo = $d
|
||||
.label charset = $b
|
||||
.label c1 = 7
|
||||
.label proto_hi = 9
|
||||
.label c = 6
|
||||
.label __0 = $d
|
||||
.label idx = $c
|
||||
.label proto_lo = 6
|
||||
.label charset = $a
|
||||
.label c1 = $e
|
||||
.label proto_hi = 8
|
||||
.label c = $10
|
||||
// [23] phi from init_font_hex to init_font_hex::@1 [phi:init_font_hex->init_font_hex::@1]
|
||||
__b1_from_init_font_hex:
|
||||
// [23] phi init_font_hex::c#6 = 0 [phi:init_font_hex->init_font_hex::@1#0] -- vbuz1=vbuc1
|
||||
|
@ -2022,18 +2025,18 @@ init_font_hex: {
|
|||
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
||||
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
|
||||
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
|
||||
// __zp($d) unsigned int atan2_16(__zp($13) int x, __zp($15) int y)
|
||||
// __zp(6) unsigned int atan2_16(__zp($11) int x, __zp($13) int y)
|
||||
atan2_16: {
|
||||
.label __2 = 9
|
||||
.label __7 = $b
|
||||
.label yi = 9
|
||||
.label xi = $b
|
||||
.label angle = $d
|
||||
.label xd = $11
|
||||
.label yd = $f
|
||||
.label return = $d
|
||||
.label x = $13
|
||||
.label y = $15
|
||||
.label __2 = 8
|
||||
.label __7 = $a
|
||||
.label yi = 8
|
||||
.label xi = $a
|
||||
.label angle = 6
|
||||
.label xd = 4
|
||||
.label yd = 2
|
||||
.label return = 6
|
||||
.label x = $11
|
||||
.label y = $13
|
||||
// [45] if(atan2_16::y#0>=0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1
|
||||
lda.z y+1
|
||||
bpl __b1
|
||||
|
@ -2462,131 +2465,131 @@ __constant char * const D018 = (char *) 53272
|
|||
__constant char FONT_HEX_PROTO[] = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 }
|
||||
__constant char * const SCREEN = (char *) 10240
|
||||
unsigned int atan2_16(int x , int y)
|
||||
int atan2_16::$2 // zp[2]:9 2002.0
|
||||
int atan2_16::$2 // zp[2]:8 2002.0
|
||||
char atan2_16::$22 // reg byte a 2000002.0
|
||||
char atan2_16::$23 // reg byte a 2000002.0
|
||||
int atan2_16::$7 // zp[2]:11 2002.0
|
||||
int atan2_16::$7 // zp[2]:10 2002.0
|
||||
unsigned int atan2_16::angle
|
||||
unsigned int atan2_16::angle#1 // angle zp[2]:13 1501.5
|
||||
unsigned int atan2_16::angle#11 // angle zp[2]:13 2002.0
|
||||
unsigned int atan2_16::angle#12 // angle zp[2]:13 190476.38095238095
|
||||
unsigned int atan2_16::angle#13 // angle zp[2]:13 1333334.6666666667
|
||||
unsigned int atan2_16::angle#2 // angle zp[2]:13 2000002.0
|
||||
unsigned int atan2_16::angle#3 // angle zp[2]:13 2000002.0
|
||||
unsigned int atan2_16::angle#4 // angle zp[2]:13 2002.0
|
||||
unsigned int atan2_16::angle#5 // angle zp[2]:13 2002.0
|
||||
unsigned int atan2_16::angle#6 // angle zp[2]:13 2001003.0
|
||||
unsigned int atan2_16::angle#1 // angle zp[2]:6 1501.5
|
||||
unsigned int atan2_16::angle#11 // angle zp[2]:6 2002.0
|
||||
unsigned int atan2_16::angle#12 // angle zp[2]:6 190476.38095238095
|
||||
unsigned int atan2_16::angle#13 // angle zp[2]:6 1333334.6666666667
|
||||
unsigned int atan2_16::angle#2 // angle zp[2]:6 2000002.0
|
||||
unsigned int atan2_16::angle#3 // angle zp[2]:6 2000002.0
|
||||
unsigned int atan2_16::angle#4 // angle zp[2]:6 2002.0
|
||||
unsigned int atan2_16::angle#5 // angle zp[2]:6 2002.0
|
||||
unsigned int atan2_16::angle#6 // angle zp[2]:6 2001003.0
|
||||
char atan2_16::i
|
||||
char atan2_16::i#1 // reg byte x 1500001.5
|
||||
char atan2_16::i#2 // reg byte x 208333.5416666667
|
||||
unsigned int atan2_16::return
|
||||
unsigned int atan2_16::return#0 // return zp[2]:13 701.0
|
||||
unsigned int atan2_16::return#2 // return zp[2]:13 202.0
|
||||
unsigned int atan2_16::return#0 // return zp[2]:6 701.0
|
||||
unsigned int atan2_16::return#2 // return zp[2]:6 202.0
|
||||
char atan2_16::shift
|
||||
char atan2_16::shift#1 // reg byte y 2.0000002E7
|
||||
char atan2_16::shift#2 // reg byte y 8000001.25
|
||||
char atan2_16::shift#5 // reg byte y 666667.3333333334
|
||||
int atan2_16::x
|
||||
int atan2_16::x#0 // x zp[2]:19 108.02631578947367
|
||||
int atan2_16::x#0 // x zp[2]:17 108.02631578947367
|
||||
int atan2_16::xd
|
||||
int atan2_16::xd#1 // xd zp[2]:17 6666667.333333333
|
||||
int atan2_16::xd#10 // xd zp[2]:17 1000001.0
|
||||
int atan2_16::xd#2 // xd zp[2]:17 1000001.0
|
||||
int atan2_16::xd#3 // xd zp[2]:17 7666668.333333332
|
||||
int atan2_16::xd#5 // xd zp[2]:17 1000001.0
|
||||
int atan2_16::xd#1 // xd zp[2]:4 6666667.333333333
|
||||
int atan2_16::xd#10 // xd zp[2]:4 1000001.0
|
||||
int atan2_16::xd#2 // xd zp[2]:4 1000001.0
|
||||
int atan2_16::xd#3 // xd zp[2]:4 7666668.333333332
|
||||
int atan2_16::xd#5 // xd zp[2]:4 1000001.0
|
||||
int atan2_16::xi
|
||||
int atan2_16::xi#0 // xi zp[2]:11 3003.0
|
||||
int atan2_16::xi#1 // xi zp[2]:11 500000.5
|
||||
int atan2_16::xi#13 // xi zp[2]:11 2002.0
|
||||
int atan2_16::xi#2 // xi zp[2]:11 500000.5
|
||||
int atan2_16::xi#3 // xi zp[2]:11 266733.6666666667
|
||||
int atan2_16::xi#8 // xi zp[2]:11 1000001.0
|
||||
int atan2_16::xi#0 // xi zp[2]:10 3003.0
|
||||
int atan2_16::xi#1 // xi zp[2]:10 500000.5
|
||||
int atan2_16::xi#13 // xi zp[2]:10 2002.0
|
||||
int atan2_16::xi#2 // xi zp[2]:10 500000.5
|
||||
int atan2_16::xi#3 // xi zp[2]:10 266733.6666666667
|
||||
int atan2_16::xi#8 // xi zp[2]:10 1000001.0
|
||||
int atan2_16::y
|
||||
int atan2_16::y#0 // y zp[2]:21 102.625
|
||||
int atan2_16::y#0 // y zp[2]:19 102.625
|
||||
int atan2_16::yd
|
||||
int atan2_16::yd#1 // yd zp[2]:15 1.0000001E7
|
||||
int atan2_16::yd#10 // yd zp[2]:15 2000002.0
|
||||
int atan2_16::yd#2 // yd zp[2]:15 2000002.0
|
||||
int atan2_16::yd#3 // yd zp[2]:15 4600001.0
|
||||
int atan2_16::yd#5 // yd zp[2]:15 2000002.0
|
||||
int atan2_16::yd#1 // yd zp[2]:2 1.0000001E7
|
||||
int atan2_16::yd#10 // yd zp[2]:2 2000002.0
|
||||
int atan2_16::yd#2 // yd zp[2]:2 2000002.0
|
||||
int atan2_16::yd#3 // yd zp[2]:2 4600001.0
|
||||
int atan2_16::yd#5 // yd zp[2]:2 2000002.0
|
||||
int atan2_16::yi
|
||||
int atan2_16::yi#0 // yi zp[2]:9 600.5999999999999
|
||||
int atan2_16::yi#1 // yi zp[2]:9 666667.3333333334
|
||||
int atan2_16::yi#16 // yi zp[2]:9 2002.0
|
||||
int atan2_16::yi#2 // yi zp[2]:9 666667.3333333334
|
||||
int atan2_16::yi#3 // yi zp[2]:9 353000.41176470584
|
||||
int atan2_16::yi#8 // yi zp[2]:9 1000001.0
|
||||
int atan2_16::yi#0 // yi zp[2]:8 600.5999999999999
|
||||
int atan2_16::yi#1 // yi zp[2]:8 666667.3333333334
|
||||
int atan2_16::yi#16 // yi zp[2]:8 2002.0
|
||||
int atan2_16::yi#2 // yi zp[2]:8 666667.3333333334
|
||||
int atan2_16::yi#3 // yi zp[2]:8 353000.41176470584
|
||||
int atan2_16::yi#8 // yi zp[2]:8 1000001.0
|
||||
void init_font_hex(char *charset)
|
||||
char init_font_hex::$0 // zp[1]:23 10001.0
|
||||
char init_font_hex::$0 // zp[1]:13 10001.0
|
||||
char init_font_hex::$1 // reg byte a 20002.0
|
||||
char init_font_hex::$2 // reg byte a 20002.0
|
||||
char init_font_hex::c
|
||||
char init_font_hex::c#1 // c zp[1]:6 151.5
|
||||
char init_font_hex::c#6 // c zp[1]:6 10.631578947368421
|
||||
char init_font_hex::c#1 // c zp[1]:16 151.5
|
||||
char init_font_hex::c#6 // c zp[1]:16 10.631578947368421
|
||||
char init_font_hex::c1
|
||||
char init_font_hex::c1#1 // c1 zp[1]:7 1501.5
|
||||
char init_font_hex::c1#4 // c1 zp[1]:7 133.46666666666667
|
||||
char init_font_hex::c1#1 // c1 zp[1]:14 1501.5
|
||||
char init_font_hex::c1#4 // c1 zp[1]:14 133.46666666666667
|
||||
char *init_font_hex::charset
|
||||
char *init_font_hex::charset#0 // charset zp[2]:11 350.5
|
||||
char *init_font_hex::charset#2 // charset zp[2]:11 1079.0714285714287
|
||||
char *init_font_hex::charset#5 // charset zp[2]:11 202.0
|
||||
char *init_font_hex::charset#0 // charset zp[2]:10 350.5
|
||||
char *init_font_hex::charset#2 // charset zp[2]:10 1079.0714285714287
|
||||
char *init_font_hex::charset#5 // charset zp[2]:10 202.0
|
||||
char init_font_hex::i
|
||||
char init_font_hex::i#1 // reg byte x 15001.5
|
||||
char init_font_hex::i#2 // reg byte x 6667.333333333333
|
||||
char init_font_hex::idx
|
||||
char init_font_hex::idx#2 // idx zp[1]:8 5501.0
|
||||
char init_font_hex::idx#2 // idx zp[1]:12 5501.0
|
||||
char init_font_hex::idx#3 // reg byte y 2002.0
|
||||
char init_font_hex::idx#5 // idx zp[1]:8 6000.6
|
||||
char init_font_hex::idx#5 // idx zp[1]:12 6000.6
|
||||
char *init_font_hex::proto_hi
|
||||
char *init_font_hex::proto_hi#1 // proto_hi zp[2]:9 67.33333333333333
|
||||
char *init_font_hex::proto_hi#6 // proto_hi zp[2]:9 566.8333333333333
|
||||
char *init_font_hex::proto_hi#1 // proto_hi zp[2]:8 67.33333333333333
|
||||
char *init_font_hex::proto_hi#6 // proto_hi zp[2]:8 566.8333333333333
|
||||
char *init_font_hex::proto_lo
|
||||
char *init_font_hex::proto_lo#1 // proto_lo zp[2]:13 500.5
|
||||
char *init_font_hex::proto_lo#4 // proto_lo zp[2]:13 923.3076923076923
|
||||
char *init_font_hex::proto_lo#1 // proto_lo zp[2]:6 500.5
|
||||
char *init_font_hex::proto_lo#4 // proto_lo zp[2]:6 923.3076923076923
|
||||
void main()
|
||||
unsigned int main::$5 // zp[2]:13 202.0
|
||||
unsigned int main::$5 // zp[2]:6 202.0
|
||||
char main::ang_w
|
||||
char main::ang_w#0 // reg byte a 202.0
|
||||
unsigned int main::angle_w
|
||||
unsigned int main::angle_w#0 // angle_w zp[2]:13 202.0
|
||||
unsigned int main::angle_w#0 // angle_w zp[2]:6 202.0
|
||||
__constant char *main::col00 = COLS+(unsigned int)$c*$28+$13
|
||||
char *main::screen
|
||||
char *main::screen#1 // screen zp[2]:4 42.599999999999994
|
||||
char *main::screen#2 // screen zp[2]:4 28.545454545454547
|
||||
char *main::screen#4 // screen zp[2]:4 22.0
|
||||
char *main::screen#1 // screen zp[2]:21 42.599999999999994
|
||||
char *main::screen#2 // screen zp[2]:21 28.545454545454547
|
||||
char *main::screen#4 // screen zp[2]:21 22.0
|
||||
char *main::toD0181_gfx
|
||||
char main::toD0181_return
|
||||
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)CHARSET/4&$f // toD0181_return
|
||||
char *main::toD0181_screen
|
||||
signed char main::x
|
||||
signed char main::x#1 // x zp[1]:3 151.5
|
||||
signed char main::x#2 // x zp[1]:3 16.833333333333332
|
||||
signed char main::x#1 // x zp[1]:15 151.5
|
||||
signed char main::x#2 // x zp[1]:15 16.833333333333332
|
||||
int main::xw
|
||||
unsigned int main::xw#0 // xw zp[2]:19 50.5
|
||||
unsigned int main::xw#0 // xw zp[2]:17 50.5
|
||||
signed char main::y
|
||||
signed char main::y#1 // y zp[1]:2 16.5
|
||||
signed char main::y#4 // y zp[1]:2 1.4666666666666666
|
||||
signed char main::y#1 // y zp[1]:23 16.5
|
||||
signed char main::y#4 // y zp[1]:23 1.4666666666666666
|
||||
int main::yw
|
||||
unsigned int main::yw#0 // yw zp[2]:21 50.5
|
||||
unsigned int main::yw#0 // yw zp[2]:19 50.5
|
||||
|
||||
zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
zp[1]:6 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
zp[1]:7 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
zp[1]:23 [ main::y#4 main::y#1 ]
|
||||
zp[1]:15 [ main::x#2 main::x#1 ]
|
||||
zp[2]:21 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
zp[1]:16 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
zp[1]:14 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
zp[1]:8 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
zp[2]:8 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
zp[2]:10 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
|
||||
zp[2]:13 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
zp[2]:6 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
||||
zp[2]:15 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
zp[2]:17 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
zp[2]:19 [ main::xw#0 atan2_16::x#0 ]
|
||||
zp[2]:21 [ main::yw#0 atan2_16::y#0 ]
|
||||
zp[2]:2 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
zp[2]:4 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
zp[2]:17 [ main::xw#0 atan2_16::x#0 ]
|
||||
zp[2]:19 [ main::yw#0 atan2_16::y#0 ]
|
||||
reg byte a [ main::ang_w#0 ]
|
||||
zp[1]:23 [ init_font_hex::$0 ]
|
||||
zp[1]:13 [ init_font_hex::$0 ]
|
||||
reg byte a [ init_font_hex::$1 ]
|
||||
reg byte a [ init_font_hex::$2 ]
|
||||
reg byte y [ init_font_hex::idx#3 ]
|
||||
|
@ -2624,13 +2627,13 @@ Score: 1036177
|
|||
main: {
|
||||
.const toD0181_return = (>(SCREEN&$3fff)*4)|(>CHARSET)/4&$f
|
||||
.label col00 = COLS+$c*$28+$13
|
||||
.label __5 = $d
|
||||
.label xw = $13
|
||||
.label yw = $15
|
||||
.label angle_w = $d
|
||||
.label screen = 4
|
||||
.label x = 3
|
||||
.label y = 2
|
||||
.label __5 = 6
|
||||
.label xw = $11
|
||||
.label yw = $13
|
||||
.label angle_w = 6
|
||||
.label screen = $15
|
||||
.label x = $f
|
||||
.label y = $17
|
||||
// init_font_hex(CHARSET)
|
||||
// [1] call init_font_hex
|
||||
// [22] phi from main to init_font_hex [phi:main->init_font_hex]
|
||||
|
@ -2731,15 +2734,15 @@ main: {
|
|||
}
|
||||
// init_font_hex
|
||||
// Make charset from proto chars
|
||||
// void init_font_hex(__zp($b) char *charset)
|
||||
// void init_font_hex(__zp($a) char *charset)
|
||||
init_font_hex: {
|
||||
.label __0 = $17
|
||||
.label idx = 8
|
||||
.label proto_lo = $d
|
||||
.label charset = $b
|
||||
.label c1 = 7
|
||||
.label proto_hi = 9
|
||||
.label c = 6
|
||||
.label __0 = $d
|
||||
.label idx = $c
|
||||
.label proto_lo = 6
|
||||
.label charset = $a
|
||||
.label c1 = $e
|
||||
.label proto_hi = 8
|
||||
.label c = $10
|
||||
// [23] phi from init_font_hex to init_font_hex::@1 [phi:init_font_hex->init_font_hex::@1]
|
||||
// [23] phi init_font_hex::c#6 = 0 [phi:init_font_hex->init_font_hex::@1#0] -- vbuz1=vbuc1
|
||||
lda #0
|
||||
|
@ -2887,18 +2890,18 @@ init_font_hex: {
|
|||
// Find the atan2(x, y) - which is the angle of the line from (0,0) to (x,y)
|
||||
// Finding the angle requires a binary search using CORDIC_ITERATIONS_16
|
||||
// Returns the angle in hex-degrees (0=0, 0x8000=PI, 0x10000=2*PI)
|
||||
// __zp($d) unsigned int atan2_16(__zp($13) int x, __zp($15) int y)
|
||||
// __zp(6) unsigned int atan2_16(__zp($11) int x, __zp($13) int y)
|
||||
atan2_16: {
|
||||
.label __2 = 9
|
||||
.label __7 = $b
|
||||
.label yi = 9
|
||||
.label xi = $b
|
||||
.label angle = $d
|
||||
.label xd = $11
|
||||
.label yd = $f
|
||||
.label return = $d
|
||||
.label x = $13
|
||||
.label y = $15
|
||||
.label __2 = 8
|
||||
.label __7 = $a
|
||||
.label yi = 8
|
||||
.label xi = $a
|
||||
.label angle = 6
|
||||
.label xd = 4
|
||||
.label yd = 2
|
||||
.label return = 6
|
||||
.label x = $11
|
||||
.label y = $13
|
||||
// (y>=0)?y:-y
|
||||
// [45] if(atan2_16::y#0>=0) goto atan2_16::@1 -- vwsz1_ge_0_then_la1
|
||||
lda.z y+1
|
||||
|
|
|
@ -8,131 +8,131 @@ __constant char * const D018 = (char *) 53272
|
|||
__constant char FONT_HEX_PROTO[] = { 2, 5, 5, 5, 2, 6, 2, 2, 2, 7, 6, 1, 2, 4, 7, 6, 1, 2, 1, 6, 5, 5, 7, 1, 1, 7, 4, 6, 1, 6, 3, 4, 6, 5, 2, 7, 1, 1, 1, 1, 2, 5, 2, 5, 2, 2, 5, 3, 1, 1, 2, 5, 7, 5, 5, 6, 5, 6, 5, 6, 2, 5, 4, 5, 2, 6, 5, 5, 5, 6, 7, 4, 6, 4, 7, 7, 4, 6, 4, 4 }
|
||||
__constant char * const SCREEN = (char *) 10240
|
||||
unsigned int atan2_16(int x , int y)
|
||||
int atan2_16::$2 // zp[2]:9 2002.0
|
||||
int atan2_16::$2 // zp[2]:8 2002.0
|
||||
char atan2_16::$22 // reg byte a 2000002.0
|
||||
char atan2_16::$23 // reg byte a 2000002.0
|
||||
int atan2_16::$7 // zp[2]:11 2002.0
|
||||
int atan2_16::$7 // zp[2]:10 2002.0
|
||||
unsigned int atan2_16::angle
|
||||
unsigned int atan2_16::angle#1 // angle zp[2]:13 1501.5
|
||||
unsigned int atan2_16::angle#11 // angle zp[2]:13 2002.0
|
||||
unsigned int atan2_16::angle#12 // angle zp[2]:13 190476.38095238095
|
||||
unsigned int atan2_16::angle#13 // angle zp[2]:13 1333334.6666666667
|
||||
unsigned int atan2_16::angle#2 // angle zp[2]:13 2000002.0
|
||||
unsigned int atan2_16::angle#3 // angle zp[2]:13 2000002.0
|
||||
unsigned int atan2_16::angle#4 // angle zp[2]:13 2002.0
|
||||
unsigned int atan2_16::angle#5 // angle zp[2]:13 2002.0
|
||||
unsigned int atan2_16::angle#6 // angle zp[2]:13 2001003.0
|
||||
unsigned int atan2_16::angle#1 // angle zp[2]:6 1501.5
|
||||
unsigned int atan2_16::angle#11 // angle zp[2]:6 2002.0
|
||||
unsigned int atan2_16::angle#12 // angle zp[2]:6 190476.38095238095
|
||||
unsigned int atan2_16::angle#13 // angle zp[2]:6 1333334.6666666667
|
||||
unsigned int atan2_16::angle#2 // angle zp[2]:6 2000002.0
|
||||
unsigned int atan2_16::angle#3 // angle zp[2]:6 2000002.0
|
||||
unsigned int atan2_16::angle#4 // angle zp[2]:6 2002.0
|
||||
unsigned int atan2_16::angle#5 // angle zp[2]:6 2002.0
|
||||
unsigned int atan2_16::angle#6 // angle zp[2]:6 2001003.0
|
||||
char atan2_16::i
|
||||
char atan2_16::i#1 // reg byte x 1500001.5
|
||||
char atan2_16::i#2 // reg byte x 208333.5416666667
|
||||
unsigned int atan2_16::return
|
||||
unsigned int atan2_16::return#0 // return zp[2]:13 701.0
|
||||
unsigned int atan2_16::return#2 // return zp[2]:13 202.0
|
||||
unsigned int atan2_16::return#0 // return zp[2]:6 701.0
|
||||
unsigned int atan2_16::return#2 // return zp[2]:6 202.0
|
||||
char atan2_16::shift
|
||||
char atan2_16::shift#1 // reg byte y 2.0000002E7
|
||||
char atan2_16::shift#2 // reg byte y 8000001.25
|
||||
char atan2_16::shift#5 // reg byte y 666667.3333333334
|
||||
int atan2_16::x
|
||||
int atan2_16::x#0 // x zp[2]:19 108.02631578947367
|
||||
int atan2_16::x#0 // x zp[2]:17 108.02631578947367
|
||||
int atan2_16::xd
|
||||
int atan2_16::xd#1 // xd zp[2]:17 6666667.333333333
|
||||
int atan2_16::xd#10 // xd zp[2]:17 1000001.0
|
||||
int atan2_16::xd#2 // xd zp[2]:17 1000001.0
|
||||
int atan2_16::xd#3 // xd zp[2]:17 7666668.333333332
|
||||
int atan2_16::xd#5 // xd zp[2]:17 1000001.0
|
||||
int atan2_16::xd#1 // xd zp[2]:4 6666667.333333333
|
||||
int atan2_16::xd#10 // xd zp[2]:4 1000001.0
|
||||
int atan2_16::xd#2 // xd zp[2]:4 1000001.0
|
||||
int atan2_16::xd#3 // xd zp[2]:4 7666668.333333332
|
||||
int atan2_16::xd#5 // xd zp[2]:4 1000001.0
|
||||
int atan2_16::xi
|
||||
int atan2_16::xi#0 // xi zp[2]:11 3003.0
|
||||
int atan2_16::xi#1 // xi zp[2]:11 500000.5
|
||||
int atan2_16::xi#13 // xi zp[2]:11 2002.0
|
||||
int atan2_16::xi#2 // xi zp[2]:11 500000.5
|
||||
int atan2_16::xi#3 // xi zp[2]:11 266733.6666666667
|
||||
int atan2_16::xi#8 // xi zp[2]:11 1000001.0
|
||||
int atan2_16::xi#0 // xi zp[2]:10 3003.0
|
||||
int atan2_16::xi#1 // xi zp[2]:10 500000.5
|
||||
int atan2_16::xi#13 // xi zp[2]:10 2002.0
|
||||
int atan2_16::xi#2 // xi zp[2]:10 500000.5
|
||||
int atan2_16::xi#3 // xi zp[2]:10 266733.6666666667
|
||||
int atan2_16::xi#8 // xi zp[2]:10 1000001.0
|
||||
int atan2_16::y
|
||||
int atan2_16::y#0 // y zp[2]:21 102.625
|
||||
int atan2_16::y#0 // y zp[2]:19 102.625
|
||||
int atan2_16::yd
|
||||
int atan2_16::yd#1 // yd zp[2]:15 1.0000001E7
|
||||
int atan2_16::yd#10 // yd zp[2]:15 2000002.0
|
||||
int atan2_16::yd#2 // yd zp[2]:15 2000002.0
|
||||
int atan2_16::yd#3 // yd zp[2]:15 4600001.0
|
||||
int atan2_16::yd#5 // yd zp[2]:15 2000002.0
|
||||
int atan2_16::yd#1 // yd zp[2]:2 1.0000001E7
|
||||
int atan2_16::yd#10 // yd zp[2]:2 2000002.0
|
||||
int atan2_16::yd#2 // yd zp[2]:2 2000002.0
|
||||
int atan2_16::yd#3 // yd zp[2]:2 4600001.0
|
||||
int atan2_16::yd#5 // yd zp[2]:2 2000002.0
|
||||
int atan2_16::yi
|
||||
int atan2_16::yi#0 // yi zp[2]:9 600.5999999999999
|
||||
int atan2_16::yi#1 // yi zp[2]:9 666667.3333333334
|
||||
int atan2_16::yi#16 // yi zp[2]:9 2002.0
|
||||
int atan2_16::yi#2 // yi zp[2]:9 666667.3333333334
|
||||
int atan2_16::yi#3 // yi zp[2]:9 353000.41176470584
|
||||
int atan2_16::yi#8 // yi zp[2]:9 1000001.0
|
||||
int atan2_16::yi#0 // yi zp[2]:8 600.5999999999999
|
||||
int atan2_16::yi#1 // yi zp[2]:8 666667.3333333334
|
||||
int atan2_16::yi#16 // yi zp[2]:8 2002.0
|
||||
int atan2_16::yi#2 // yi zp[2]:8 666667.3333333334
|
||||
int atan2_16::yi#3 // yi zp[2]:8 353000.41176470584
|
||||
int atan2_16::yi#8 // yi zp[2]:8 1000001.0
|
||||
void init_font_hex(char *charset)
|
||||
char init_font_hex::$0 // zp[1]:23 10001.0
|
||||
char init_font_hex::$0 // zp[1]:13 10001.0
|
||||
char init_font_hex::$1 // reg byte a 20002.0
|
||||
char init_font_hex::$2 // reg byte a 20002.0
|
||||
char init_font_hex::c
|
||||
char init_font_hex::c#1 // c zp[1]:6 151.5
|
||||
char init_font_hex::c#6 // c zp[1]:6 10.631578947368421
|
||||
char init_font_hex::c#1 // c zp[1]:16 151.5
|
||||
char init_font_hex::c#6 // c zp[1]:16 10.631578947368421
|
||||
char init_font_hex::c1
|
||||
char init_font_hex::c1#1 // c1 zp[1]:7 1501.5
|
||||
char init_font_hex::c1#4 // c1 zp[1]:7 133.46666666666667
|
||||
char init_font_hex::c1#1 // c1 zp[1]:14 1501.5
|
||||
char init_font_hex::c1#4 // c1 zp[1]:14 133.46666666666667
|
||||
char *init_font_hex::charset
|
||||
char *init_font_hex::charset#0 // charset zp[2]:11 350.5
|
||||
char *init_font_hex::charset#2 // charset zp[2]:11 1079.0714285714287
|
||||
char *init_font_hex::charset#5 // charset zp[2]:11 202.0
|
||||
char *init_font_hex::charset#0 // charset zp[2]:10 350.5
|
||||
char *init_font_hex::charset#2 // charset zp[2]:10 1079.0714285714287
|
||||
char *init_font_hex::charset#5 // charset zp[2]:10 202.0
|
||||
char init_font_hex::i
|
||||
char init_font_hex::i#1 // reg byte x 15001.5
|
||||
char init_font_hex::i#2 // reg byte x 6667.333333333333
|
||||
char init_font_hex::idx
|
||||
char init_font_hex::idx#2 // idx zp[1]:8 5501.0
|
||||
char init_font_hex::idx#2 // idx zp[1]:12 5501.0
|
||||
char init_font_hex::idx#3 // reg byte y 2002.0
|
||||
char init_font_hex::idx#5 // idx zp[1]:8 6000.6
|
||||
char init_font_hex::idx#5 // idx zp[1]:12 6000.6
|
||||
char *init_font_hex::proto_hi
|
||||
char *init_font_hex::proto_hi#1 // proto_hi zp[2]:9 67.33333333333333
|
||||
char *init_font_hex::proto_hi#6 // proto_hi zp[2]:9 566.8333333333333
|
||||
char *init_font_hex::proto_hi#1 // proto_hi zp[2]:8 67.33333333333333
|
||||
char *init_font_hex::proto_hi#6 // proto_hi zp[2]:8 566.8333333333333
|
||||
char *init_font_hex::proto_lo
|
||||
char *init_font_hex::proto_lo#1 // proto_lo zp[2]:13 500.5
|
||||
char *init_font_hex::proto_lo#4 // proto_lo zp[2]:13 923.3076923076923
|
||||
char *init_font_hex::proto_lo#1 // proto_lo zp[2]:6 500.5
|
||||
char *init_font_hex::proto_lo#4 // proto_lo zp[2]:6 923.3076923076923
|
||||
void main()
|
||||
unsigned int main::$5 // zp[2]:13 202.0
|
||||
unsigned int main::$5 // zp[2]:6 202.0
|
||||
char main::ang_w
|
||||
char main::ang_w#0 // reg byte a 202.0
|
||||
unsigned int main::angle_w
|
||||
unsigned int main::angle_w#0 // angle_w zp[2]:13 202.0
|
||||
unsigned int main::angle_w#0 // angle_w zp[2]:6 202.0
|
||||
__constant char *main::col00 = COLS+(unsigned int)$c*$28+$13
|
||||
char *main::screen
|
||||
char *main::screen#1 // screen zp[2]:4 42.599999999999994
|
||||
char *main::screen#2 // screen zp[2]:4 28.545454545454547
|
||||
char *main::screen#4 // screen zp[2]:4 22.0
|
||||
char *main::screen#1 // screen zp[2]:21 42.599999999999994
|
||||
char *main::screen#2 // screen zp[2]:21 28.545454545454547
|
||||
char *main::screen#4 // screen zp[2]:21 22.0
|
||||
char *main::toD0181_gfx
|
||||
char main::toD0181_return
|
||||
__constant char main::toD0181_return#0 = byte1 (unsigned int)SCREEN&$3fff*4|byte1 (unsigned int)CHARSET/4&$f // toD0181_return
|
||||
char *main::toD0181_screen
|
||||
signed char main::x
|
||||
signed char main::x#1 // x zp[1]:3 151.5
|
||||
signed char main::x#2 // x zp[1]:3 16.833333333333332
|
||||
signed char main::x#1 // x zp[1]:15 151.5
|
||||
signed char main::x#2 // x zp[1]:15 16.833333333333332
|
||||
int main::xw
|
||||
unsigned int main::xw#0 // xw zp[2]:19 50.5
|
||||
unsigned int main::xw#0 // xw zp[2]:17 50.5
|
||||
signed char main::y
|
||||
signed char main::y#1 // y zp[1]:2 16.5
|
||||
signed char main::y#4 // y zp[1]:2 1.4666666666666666
|
||||
signed char main::y#1 // y zp[1]:23 16.5
|
||||
signed char main::y#4 // y zp[1]:23 1.4666666666666666
|
||||
int main::yw
|
||||
unsigned int main::yw#0 // yw zp[2]:21 50.5
|
||||
unsigned int main::yw#0 // yw zp[2]:19 50.5
|
||||
|
||||
zp[1]:2 [ main::y#4 main::y#1 ]
|
||||
zp[1]:3 [ main::x#2 main::x#1 ]
|
||||
zp[2]:4 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
zp[1]:6 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
zp[1]:7 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
zp[1]:23 [ main::y#4 main::y#1 ]
|
||||
zp[1]:15 [ main::x#2 main::x#1 ]
|
||||
zp[2]:21 [ main::screen#2 main::screen#4 main::screen#1 ]
|
||||
zp[1]:16 [ init_font_hex::c#6 init_font_hex::c#1 ]
|
||||
zp[1]:14 [ init_font_hex::c1#4 init_font_hex::c1#1 ]
|
||||
reg byte x [ init_font_hex::i#2 init_font_hex::i#1 ]
|
||||
zp[1]:8 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
zp[2]:9 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
zp[2]:11 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
zp[1]:12 [ init_font_hex::idx#5 init_font_hex::idx#2 ]
|
||||
zp[2]:8 [ atan2_16::yi#3 atan2_16::yi#8 atan2_16::yi#0 atan2_16::yi#16 atan2_16::$2 atan2_16::yi#1 atan2_16::yi#2 init_font_hex::proto_hi#6 init_font_hex::proto_hi#1 ]
|
||||
zp[2]:10 [ atan2_16::xi#3 atan2_16::xi#8 atan2_16::xi#0 atan2_16::xi#13 atan2_16::$7 atan2_16::xi#1 atan2_16::xi#2 init_font_hex::charset#2 init_font_hex::charset#5 init_font_hex::charset#0 ]
|
||||
reg byte x [ atan2_16::i#2 atan2_16::i#1 ]
|
||||
zp[2]:13 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
zp[2]:6 [ atan2_16::angle#6 atan2_16::angle#12 atan2_16::angle#13 atan2_16::angle#2 atan2_16::angle#3 atan2_16::return#0 atan2_16::angle#11 atan2_16::angle#1 atan2_16::angle#4 atan2_16::angle#5 atan2_16::return#2 main::angle_w#0 main::$5 init_font_hex::proto_lo#4 init_font_hex::proto_lo#1 ]
|
||||
reg byte y [ atan2_16::shift#2 atan2_16::shift#5 atan2_16::shift#1 ]
|
||||
zp[2]:15 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
zp[2]:17 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
zp[2]:19 [ main::xw#0 atan2_16::x#0 ]
|
||||
zp[2]:21 [ main::yw#0 atan2_16::y#0 ]
|
||||
zp[2]:2 [ atan2_16::yd#5 atan2_16::yd#3 atan2_16::yd#10 atan2_16::yd#1 atan2_16::yd#2 ]
|
||||
zp[2]:4 [ atan2_16::xd#5 atan2_16::xd#3 atan2_16::xd#10 atan2_16::xd#1 atan2_16::xd#2 ]
|
||||
zp[2]:17 [ main::xw#0 atan2_16::x#0 ]
|
||||
zp[2]:19 [ main::yw#0 atan2_16::y#0 ]
|
||||
reg byte a [ main::ang_w#0 ]
|
||||
zp[1]:23 [ init_font_hex::$0 ]
|
||||
zp[1]:13 [ init_font_hex::$0 ]
|
||||
reg byte a [ init_font_hex::$1 ]
|
||||
reg byte a [ init_font_hex::$2 ]
|
||||
reg byte y [ init_font_hex::idx#3 ]
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user