1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-11-29 18:49:42 +00:00

try again update test reference. maven config for tests in parallel.

This commit is contained in:
Travis Fisher 2019-04-02 21:41:57 -04:00
parent c78aef2312
commit 54e79d91a1
30 changed files with 36971 additions and 36968 deletions

1
.idea/encodings.xml generated
View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

View File

@ -82,6 +82,8 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<useSystemClassLoader>false</useSystemClassLoader>
<parallel>classes</parallel>
<threadCount>5</threadCount>
</configuration>
</plugin>
<plugin>

View File

@ -66,15 +66,15 @@ public class Pass5DoubleJumpElimination extends Pass5AsmOptimization {
AsmInstruction asmInstruction = (AsmInstruction) line;
if(asmInstruction.getType().isJump()) {
String immediateJmpTarget = immediateJumps.get(currentScope + "::" + asmInstruction.getParameter());
if (immediateJmpTarget == "rts" && asmInstruction.getType().getMnemnonic()=="jmp") {
getLog().append("Replacing jump to rts with rts in " + asmInstruction.toString());
AsmInstructionType rtsType = AsmInstructionSet.getInstructionType("rts", AsmAddressingMode.NON, false);
asmInstruction.setType(rtsType);
optimized = true;
} else if(immediateJmpTarget != null && immediateJmpTarget != "rts" && !immediateJmpTarget.equals(asmInstruction.getParameter())) {
getLog().append("Skipping double jump to " + immediateJmpTarget + " in " + asmInstruction.toString());
asmInstruction.setParameter(immediateJmpTarget);
optimized = true;
if(immediateJmpTarget == "rts" && asmInstruction.getType().getMnemnonic() == "jmp") {
getLog().append("Replacing jump to rts with rts in " + asmInstruction.toString());
AsmInstructionType rtsType = AsmInstructionSet.getInstructionType("rts", AsmAddressingMode.NON, false);
asmInstruction.setType(rtsType);
optimized = true;
} else if(immediateJmpTarget != null && immediateJmpTarget != "rts" && !immediateJmpTarget.equals(asmInstruction.getParameter())) {
getLog().append("Skipping double jump to " + immediateJmpTarget + " in " + asmInstruction.toString());
asmInstruction.setParameter(immediateJmpTarget);
optimized = true;
}
}
}

View File

@ -5,151 +5,151 @@ Identified constant variable (byte) RED
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte[]) ref#0 ? { (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) $12, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte*) screen1#0 ? ((byte*)) (word/signed word/dword/signed dword) $400
(byte*~) $0 ? (byte*) screen1#0 + (byte/signed byte/word/signed word/dword/signed dword) $28
(byte*) screen2#0 ? (byte*~) $0
(byte*) cols#0 ? ((byte*)) (word/dword/signed dword) $d800
(byte) GREEN#0 ? (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) RED#0 ? (byte/signed byte/word/signed word/dword/signed dword) 2
(byte[]) ref#0 { (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) $12, (byte/signed byte/word/signed word/dword/signed dword) 9, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5, (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte*) screen1#0 ((byte*)) (word/signed word/dword/signed dword) $400
(byte*~) $0 (byte*) screen1#0 + (byte/signed byte/word/signed word/dword/signed dword) $28
(byte*) screen2#0 (byte*~) $0
(byte*) cols#0 ((byte*)) (word/dword/signed dword) $d800
(byte) GREEN#0 (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) RED#0 (byte/signed byte/word/signed word/dword/signed dword) 2
to:@2
main: scope:[main] from @2
(byte*) screen2#2 ? phi( @2/(byte*) screen2#13 )
(byte) main::i#0 ? (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) main::a#0 ? (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) test::i#0 ? (byte) main::i#0
(byte) test::a#0 ? (byte) main::a#0
(byte*) screen2#2 phi( @2/(byte*) screen2#13 )
(byte) main::i#0 (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) main::a#0 (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) test::i#0 (byte) main::i#0
(byte) test::a#0 (byte) main::a#0
call test
to:main::@1
main::@1: scope:[main] from main
(byte*) screen2#3 ? phi( main/(byte*) screen2#2 )
(byte) main::a#11 ? phi( main/(byte) main::a#0 )
(byte) main::i#12 ? phi( main/(byte) main::i#0 )
(byte) main::i#1 ? ++ (byte) main::i#12
(byte) main::a#1 ? (byte) main::a#11 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#1 ? (byte) main::i#1
(byte) test::a#1 ? (byte) main::a#1
(byte*) screen2#3 phi( main/(byte*) screen2#2 )
(byte) main::a#11 phi( main/(byte) main::a#0 )
(byte) main::i#12 phi( main/(byte) main::i#0 )
(byte) main::i#1 ++ (byte) main::i#12
(byte) main::a#1 (byte) main::a#11 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#1 (byte) main::i#1
(byte) test::a#1 (byte) main::a#1
call test
to:main::@2
main::@2: scope:[main] from main::@1
(byte*) screen2#5 ? phi( main::@1/(byte*) screen2#3 )
(byte) main::a#12 ? phi( main::@1/(byte) main::a#1 )
(byte) main::i#13 ? phi( main::@1/(byte) main::i#1 )
(byte) main::i#2 ? ++ (byte) main::i#13
(byte) main::a#2 ? (byte) main::a#12 - (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#2 ? (byte) main::i#2
(byte) test::a#2 ? (byte) main::a#2
(byte*) screen2#5 phi( main::@1/(byte*) screen2#3 )
(byte) main::a#12 phi( main::@1/(byte) main::a#1 )
(byte) main::i#13 phi( main::@1/(byte) main::i#1 )
(byte) main::i#2 ++ (byte) main::i#13
(byte) main::a#2 (byte) main::a#12 - (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#2 (byte) main::i#2
(byte) test::a#2 (byte) main::a#2
call test
to:main::@3
main::@3: scope:[main] from main::@2
(byte*) screen2#6 ? phi( main::@2/(byte*) screen2#5 )
(byte) main::a#13 ? phi( main::@2/(byte) main::a#2 )
(byte) main::i#14 ? phi( main::@2/(byte) main::i#2 )
(byte) main::i#3 ? ++ (byte) main::i#14
(byte) main::a#3 ? (byte) main::a#13 * (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) test::i#3 ? (byte) main::i#3
(byte) test::a#3 ? (byte) main::a#3
(byte*) screen2#6 phi( main::@2/(byte*) screen2#5 )
(byte) main::a#13 phi( main::@2/(byte) main::a#2 )
(byte) main::i#14 phi( main::@2/(byte) main::i#2 )
(byte) main::i#3 ++ (byte) main::i#14
(byte) main::a#3 (byte) main::a#13 * (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) test::i#3 (byte) main::i#3
(byte) test::a#3 (byte) main::a#3
call test
to:main::@4
main::@4: scope:[main] from main::@3
(byte*) screen2#7 ? phi( main::@3/(byte*) screen2#6 )
(byte) main::a#14 ? phi( main::@3/(byte) main::a#3 )
(byte) main::i#15 ? phi( main::@3/(byte) main::i#3 )
(byte) main::i#4 ? ++ (byte) main::i#15
(byte) main::a#4 ? (byte) main::a#14 / (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test::i#4 ? (byte) main::i#4
(byte) test::a#4 ? (byte) main::a#4
(byte*) screen2#7 phi( main::@3/(byte*) screen2#6 )
(byte) main::a#14 phi( main::@3/(byte) main::a#3 )
(byte) main::i#15 phi( main::@3/(byte) main::i#3 )
(byte) main::i#4 ++ (byte) main::i#15
(byte) main::a#4 (byte) main::a#14 / (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test::i#4 (byte) main::i#4
(byte) test::a#4 (byte) main::a#4
call test
to:main::@5
main::@5: scope:[main] from main::@4
(byte*) screen2#8 ? phi( main::@4/(byte*) screen2#7 )
(byte) main::a#15 ? phi( main::@4/(byte) main::a#4 )
(byte) main::i#16 ? phi( main::@4/(byte) main::i#4 )
(byte) main::i#5 ? ++ (byte) main::i#16
(byte) main::a#5 ? (byte) main::a#15 % (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test::i#5 ? (byte) main::i#5
(byte) test::a#5 ? (byte) main::a#5
(byte*) screen2#8 phi( main::@4/(byte*) screen2#7 )
(byte) main::a#15 phi( main::@4/(byte) main::a#4 )
(byte) main::i#16 phi( main::@4/(byte) main::i#4 )
(byte) main::i#5 ++ (byte) main::i#16
(byte) main::a#5 (byte) main::a#15 % (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test::i#5 (byte) main::i#5
(byte) test::a#5 (byte) main::a#5
call test
to:main::@6
main::@6: scope:[main] from main::@5
(byte*) screen2#9 ? phi( main::@5/(byte*) screen2#8 )
(byte) main::a#16 ? phi( main::@5/(byte) main::a#5 )
(byte) main::i#17 ? phi( main::@5/(byte) main::i#5 )
(byte) main::i#6 ? ++ (byte) main::i#17
(byte) main::a#6 ? (byte) main::a#16 << (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test::i#6 ? (byte) main::i#6
(byte) test::a#6 ? (byte) main::a#6
(byte*) screen2#9 phi( main::@5/(byte*) screen2#8 )
(byte) main::a#16 phi( main::@5/(byte) main::a#5 )
(byte) main::i#17 phi( main::@5/(byte) main::i#5 )
(byte) main::i#6 ++ (byte) main::i#17
(byte) main::a#6 (byte) main::a#16 << (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test::i#6 (byte) main::i#6
(byte) test::a#6 (byte) main::a#6
call test
to:main::@7
main::@7: scope:[main] from main::@6
(byte*) screen2#10 ? phi( main::@6/(byte*) screen2#9 )
(byte) main::a#17 ? phi( main::@6/(byte) main::a#6 )
(byte) main::i#18 ? phi( main::@6/(byte) main::i#6 )
(byte) main::i#7 ? ++ (byte) main::i#18
(byte) main::a#7 ? (byte) main::a#17 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#7 ? (byte) main::i#7
(byte) test::a#7 ? (byte) main::a#7
(byte*) screen2#10 phi( main::@6/(byte*) screen2#9 )
(byte) main::a#17 phi( main::@6/(byte) main::a#6 )
(byte) main::i#18 phi( main::@6/(byte) main::i#6 )
(byte) main::i#7 ++ (byte) main::i#18
(byte) main::a#7 (byte) main::a#17 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#7 (byte) main::i#7
(byte) test::a#7 (byte) main::a#7
call test
to:main::@8
main::@8: scope:[main] from main::@7
(byte*) screen2#11 ? phi( main::@7/(byte*) screen2#10 )
(byte) main::a#18 ? phi( main::@7/(byte) main::a#7 )
(byte) main::i#19 ? phi( main::@7/(byte) main::i#7 )
(byte) main::i#8 ? ++ (byte) main::i#19
(byte) main::a#8 ? (byte) main::a#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) test::i#8 ? (byte) main::i#8
(byte) test::a#8 ? (byte) main::a#8
(byte*) screen2#11 phi( main::@7/(byte*) screen2#10 )
(byte) main::a#18 phi( main::@7/(byte) main::a#7 )
(byte) main::i#19 phi( main::@7/(byte) main::i#7 )
(byte) main::i#8 ++ (byte) main::i#19
(byte) main::a#8 (byte) main::a#18 ^ (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) test::i#8 (byte) main::i#8
(byte) test::a#8 (byte) main::a#8
call test
to:main::@9
main::@9: scope:[main] from main::@8
(byte*) screen2#12 ? phi( main::@8/(byte*) screen2#11 )
(byte) main::a#19 ? phi( main::@8/(byte) main::a#8 )
(byte) main::i#20 ? phi( main::@8/(byte) main::i#8 )
(byte) main::i#9 ? ++ (byte) main::i#20
(byte) main::a#9 ? (byte) main::a#19 | (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#9 ? (byte) main::i#9
(byte) test::a#9 ? (byte) main::a#9
(byte*) screen2#12 phi( main::@8/(byte*) screen2#11 )
(byte) main::a#19 phi( main::@8/(byte) main::a#8 )
(byte) main::i#20 phi( main::@8/(byte) main::i#8 )
(byte) main::i#9 ++ (byte) main::i#20
(byte) main::a#9 (byte) main::a#19 | (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#9 (byte) main::i#9
(byte) test::a#9 (byte) main::a#9
call test
to:main::@10
main::@10: scope:[main] from main::@9
(byte*) screen2#4 ? phi( main::@9/(byte*) screen2#12 )
(byte) main::a#20 ? phi( main::@9/(byte) main::a#9 )
(byte) main::i#21 ? phi( main::@9/(byte) main::i#9 )
(byte) main::i#10 ? ++ (byte) main::i#21
(byte) main::a#10 ? (byte) main::a#20 & (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#10 ? (byte) main::i#10
(byte) test::a#10 ? (byte) main::a#10
(byte*) screen2#4 phi( main::@9/(byte*) screen2#12 )
(byte) main::a#20 phi( main::@9/(byte) main::a#9 )
(byte) main::i#21 phi( main::@9/(byte) main::i#9 )
(byte) main::i#10 ++ (byte) main::i#21
(byte) main::a#10 (byte) main::a#20 & (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) test::i#10 (byte) main::i#10
(byte) test::a#10 (byte) main::a#10
call test
to:main::@11
main::@11: scope:[main] from main::@10
(byte) main::i#22 ? phi( main::@10/(byte) main::i#10 )
(byte) main::i#11 ? ++ (byte) main::i#22
(byte) main::i#22 phi( main::@10/(byte) main::i#10 )
(byte) main::i#11 ++ (byte) main::i#22
to:main::@return
main::@return: scope:[main] from main::@11
return
to:@return
test: scope:[test] from main main::@1 main::@10 main::@2 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9
(byte*) screen2#1 ? phi( main/(byte*) screen2#2 main::@1/(byte*) screen2#3 main::@10/(byte*) screen2#4 main::@2/(byte*) screen2#5 main::@3/(byte*) screen2#6 main::@4/(byte*) screen2#7 main::@5/(byte*) screen2#8 main::@6/(byte*) screen2#9 main::@7/(byte*) screen2#10 main::@8/(byte*) screen2#11 main::@9/(byte*) screen2#12 )
(byte) test::i#11 ? phi( main/(byte) test::i#0 main::@1/(byte) test::i#1 main::@10/(byte) test::i#10 main::@2/(byte) test::i#2 main::@3/(byte) test::i#3 main::@4/(byte) test::i#4 main::@5/(byte) test::i#5 main::@6/(byte) test::i#6 main::@7/(byte) test::i#7 main::@8/(byte) test::i#8 main::@9/(byte) test::i#9 )
(byte) test::a#11 ? phi( main/(byte) test::a#0 main::@1/(byte) test::a#1 main::@10/(byte) test::a#10 main::@2/(byte) test::a#2 main::@3/(byte) test::a#3 main::@4/(byte) test::a#4 main::@5/(byte) test::a#5 main::@6/(byte) test::a#6 main::@7/(byte) test::a#7 main::@8/(byte) test::a#8 main::@9/(byte) test::a#9 )
*((byte*) screen1#0 + (byte) test::i#11) ? (byte) test::a#11
*((byte*) screen2#1 + (byte) test::i#11) ? *((byte[]) ref#0 + (byte) test::i#11)
(bool~) test::$0 ? *((byte[]) ref#0 + (byte) test::i#11) == (byte) test::a#11
(byte*) screen2#1 phi( main/(byte*) screen2#2 main::@1/(byte*) screen2#3 main::@10/(byte*) screen2#4 main::@2/(byte*) screen2#5 main::@3/(byte*) screen2#6 main::@4/(byte*) screen2#7 main::@5/(byte*) screen2#8 main::@6/(byte*) screen2#9 main::@7/(byte*) screen2#10 main::@8/(byte*) screen2#11 main::@9/(byte*) screen2#12 )
(byte) test::i#11 phi( main/(byte) test::i#0 main::@1/(byte) test::i#1 main::@10/(byte) test::i#10 main::@2/(byte) test::i#2 main::@3/(byte) test::i#3 main::@4/(byte) test::i#4 main::@5/(byte) test::i#5 main::@6/(byte) test::i#6 main::@7/(byte) test::i#7 main::@8/(byte) test::i#8 main::@9/(byte) test::i#9 )
(byte) test::a#11 phi( main/(byte) test::a#0 main::@1/(byte) test::a#1 main::@10/(byte) test::a#10 main::@2/(byte) test::a#2 main::@3/(byte) test::a#3 main::@4/(byte) test::a#4 main::@5/(byte) test::a#5 main::@6/(byte) test::a#6 main::@7/(byte) test::a#7 main::@8/(byte) test::a#8 main::@9/(byte) test::a#9 )
*((byte*) screen1#0 + (byte) test::i#11) (byte) test::a#11
*((byte*) screen2#1 + (byte) test::i#11) *((byte[]) ref#0 + (byte) test::i#11)
(bool~) test::$0 *((byte[]) ref#0 + (byte) test::i#11) == (byte) test::a#11
if((bool~) test::$0) goto test::@1
to:test::@3
test::@1: scope:[test] from test
(byte) test::i#12 ? phi( test/(byte) test::i#11 )
*((byte*) cols#0 + (byte) test::i#12) ? (byte) GREEN#0
(byte) test::i#12 phi( test/(byte) test::i#11 )
*((byte*) cols#0 + (byte) test::i#12) (byte) GREEN#0
to:test::@return
test::@3: scope:[test] from test
(byte) test::i#13 ? phi( test/(byte) test::i#11 )
*((byte*) cols#0 + (byte) test::i#13) ? (byte) RED#0
(byte) test::i#13 phi( test/(byte) test::i#11 )
*((byte*) cols#0 + (byte) test::i#13) (byte) RED#0
to:test::@return
test::@return: scope:[test] from test::@1 test::@3
return
to:@return
@2: scope:[] from @begin
(byte*) screen2#13 ? phi( @begin/(byte*) screen2#0 )
(byte*) screen2#13 phi( @begin/(byte*) screen2#0 )
call main
to:@3
@3: scope:[] from @2
@ -584,20 +584,20 @@ main::@return: scope:[main] from main::@10
[26] return
to:@return
test: scope:[test] from main main::@1 main::@10 main::@2 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9
[27] (byte) test::i#11 ? phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 main::@10/(byte/signed byte/word/signed word/dword/signed dword) $a main::@2/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 4 main::@5/(byte/signed byte/word/signed word/dword/signed dword) 5 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 6 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 7 main::@8/(byte/signed byte/word/signed word/dword/signed dword) 8 main::@9/(byte/signed byte/word/signed word/dword/signed dword) 9 )
[27] (byte) test::a#11 ? phi( main/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@1/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 main::@10/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 main::@2/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@5/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 main::@8/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 main::@9/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 )
[28] *((const byte*) screen1#0 + (byte) test::i#11) ? (byte) test::a#11
[29] *((const byte*) screen2#0 + (byte) test::i#11) ? *((const byte[]) ref#0 + (byte) test::i#11)
[27] (byte) test::i#11 phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte/signed byte/word/signed word/dword/signed dword) 1 main::@10/(byte/signed byte/word/signed word/dword/signed dword) $a main::@2/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 4 main::@5/(byte/signed byte/word/signed word/dword/signed dword) 5 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 6 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 7 main::@8/(byte/signed byte/word/signed word/dword/signed dword) 8 main::@9/(byte/signed byte/word/signed word/dword/signed dword) 9 )
[27] (byte) test::a#11 phi( main/(byte/signed byte/word/signed word/dword/signed dword) 3 main::@1/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1 main::@10/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1&(byte/signed byte/word/signed word/dword/signed dword) 1 main::@2/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6 main::@4/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2 main::@5/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2 main::@6/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1 main::@8/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6 main::@9/(byte/signed byte/word/signed word/dword/signed dword) 3+(byte/signed byte/word/signed word/dword/signed dword) 1-(byte/signed byte/word/signed word/dword/signed dword) 1*(byte/signed byte/word/signed word/dword/signed dword) 6/(byte/signed byte/word/signed word/dword/signed dword) 2%(byte/signed byte/word/signed word/dword/signed dword) 2<<(byte/signed byte/word/signed word/dword/signed dword) 2>>(byte/signed byte/word/signed word/dword/signed dword) 1^(byte/signed byte/word/signed word/dword/signed dword) 6|(byte/signed byte/word/signed word/dword/signed dword) 1 )
[28] *((const byte*) screen1#0 + (byte) test::i#11) (byte) test::a#11
[29] *((const byte*) screen2#0 + (byte) test::i#11) *((const byte[]) ref#0 + (byte) test::i#11)
[30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1
to:test::@2
test::@2: scope:[test] from test
[31] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) RED#0
[31] *((const byte*) cols#0 + (byte) test::i#11) (const byte) RED#0
to:test::@return
test::@return: scope:[test] from test::@1 test::@2
[32] return
to:@return
test::@1: scope:[test] from test
[33] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) GREEN#0
[33] *((const byte*) cols#0 + (byte) test::i#11) (const byte) GREEN#0
to:test::@return
@ -828,11 +828,11 @@ main: {
test: {
.label a = 2
.label i = 3
//SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) ? (byte) test::a#11 -- pbuc1_derefidx_vbuz1=vbuz2
//SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) (byte) test::a#11 -- pbuc1_derefidx_vbuz1=vbuz2
lda a
ldy i
sta screen1,y
//SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) ? *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
//SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1
ldy i
lda ref,y
sta screen2,y
@ -844,7 +844,7 @@ test: {
jmp b2
//SEG81 test::@2
b2:
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) RED#0 -- pbuc1_derefidx_vbuz1=vbuc2
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) (const byte) RED#0 -- pbuc1_derefidx_vbuz1=vbuc2
lda #RED
ldy i
sta cols,y
@ -855,7 +855,7 @@ test: {
rts
//SEG85 test::@1
b1:
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) (const byte) GREEN#0 -- pbuc1_derefidx_vbuz1=vbuc2
lda #GREEN
ldy i
sta cols,y
@ -864,17 +864,17 @@ test: {
ref: .byte 3, 4, 3, $12, 9, 1, 4, 2, 4, 5, 1, 0
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ? *((const byte[]) ref#0 + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) *((const byte[]) ref#0 + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ test::a#11 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ test::i#11 ]
Statement [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] main:2::test:7 [ test::i#11 ] main:2::test:9 [ test::i#11 ] main:2::test:11 [ test::i#11 ] main:2::test:13 [ test::i#11 ] main:2::test:15 [ test::i#11 ] main:2::test:17 [ test::i#11 ] main:2::test:19 [ test::i#11 ] main:2::test:21 [ test::i#11 ] main:2::test:23 [ test::i#11 ] main:2::test:25 [ test::i#11 ] ) always clobbers reg byte a
Statement [31] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) RED#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [33] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) GREEN#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [28] *((const byte*) screen1#0 + (byte) test::i#11) ? (byte) test::a#11 [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) ? *((const byte[]) ref#0 + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
Statement [31] *((const byte*) cols#0 + (byte) test::i#11) (const byte) RED#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [33] *((const byte*) cols#0 + (byte) test::i#11) (const byte) GREEN#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [28] *((const byte*) screen1#0 + (byte) test::i#11) (byte) test::a#11 [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
Statement [29] *((const byte*) screen2#0 + (byte) test::i#11) *((const byte[]) ref#0 + (byte) test::i#11) [ test::a#11 test::i#11 ] ( main:2::test:5 [ test::a#11 test::i#11 ] main:2::test:7 [ test::a#11 test::i#11 ] main:2::test:9 [ test::a#11 test::i#11 ] main:2::test:11 [ test::a#11 test::i#11 ] main:2::test:13 [ test::a#11 test::i#11 ] main:2::test:15 [ test::a#11 test::i#11 ] main:2::test:17 [ test::a#11 test::i#11 ] main:2::test:19 [ test::a#11 test::i#11 ] main:2::test:21 [ test::a#11 test::i#11 ] main:2::test:23 [ test::a#11 test::i#11 ] main:2::test:25 [ test::a#11 test::i#11 ] ) always clobbers reg byte a
Statement [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 [ test::i#11 ] ( main:2::test:5 [ test::i#11 ] main:2::test:7 [ test::i#11 ] main:2::test:9 [ test::i#11 ] main:2::test:11 [ test::i#11 ] main:2::test:13 [ test::i#11 ] main:2::test:15 [ test::i#11 ] main:2::test:17 [ test::i#11 ] main:2::test:19 [ test::i#11 ] main:2::test:21 [ test::i#11 ] main:2::test:23 [ test::i#11 ] main:2::test:25 [ test::i#11 ] ) always clobbers reg byte a
Statement [31] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) RED#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [33] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) GREEN#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [31] *((const byte*) cols#0 + (byte) test::i#11) (const byte) RED#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Statement [33] *((const byte*) cols#0 + (byte) test::i#11) (const byte) GREEN#0 [ ] ( main:2::test:5 [ ] main:2::test:7 [ ] main:2::test:9 [ ] main:2::test:11 [ ] main:2::test:13 [ ] main:2::test:15 [ ] main:2::test:17 [ ] main:2::test:19 [ ] main:2::test:21 [ ] main:2::test:23 [ ] main:2::test:25 [ ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ test::a#11 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_BYTE:3 [ test::i#11 ] : zp ZP_BYTE:3 , reg byte x , reg byte y ,
@ -1079,10 +1079,10 @@ main: {
// test(byte register(X) i, byte zeropage(2) a)
test: {
.label a = 2
//SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) ? (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1
//SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1
lda a
sta screen1,x
//SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) ? *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
//SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
lda ref,x
sta screen2,x
//SEG80 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1
@ -1092,7 +1092,7 @@ test: {
jmp b2
//SEG81 test::@2
b2:
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #RED
sta cols,x
jmp breturn
@ -1102,7 +1102,7 @@ test: {
rts
//SEG85 test::@1
b1:
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #GREEN
sta cols,x
jmp breturn
@ -1358,10 +1358,10 @@ main: {
// test(byte register(X) i, byte zeropage(2) a)
test: {
.label a = 2
//SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) ? (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1
//SEG78 [28] *((const byte*) screen1#0 + (byte) test::i#11) (byte) test::a#11 -- pbuc1_derefidx_vbuxx=vbuz1
lda a
sta screen1,x
//SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) ? *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
//SEG79 [29] *((const byte*) screen2#0 + (byte) test::i#11) *((const byte[]) ref#0 + (byte) test::i#11) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx
lda ref,x
sta screen2,x
//SEG80 [30] if(*((const byte[]) ref#0 + (byte) test::i#11)==(byte) test::a#11) goto test::@1 -- pbuc1_derefidx_vbuxx_eq_vbuz1_then_la1
@ -1369,7 +1369,7 @@ test: {
cmp a
beq b1
//SEG81 test::@2
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2
//SEG82 [31] *((const byte*) cols#0 + (byte) test::i#11) (const byte) RED#0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #RED
sta cols,x
//SEG83 test::@return
@ -1377,7 +1377,7 @@ test: {
rts
//SEG85 test::@1
b1:
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) ? (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2
//SEG86 [33] *((const byte*) cols#0 + (byte) test::i#11) (const byte) GREEN#0 -- pbuc1_derefidx_vbuxx=vbuc2
lda #GREEN
sta cols,x
rts

View File

@ -3,21 +3,21 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(bool*) main::bscreen#0 ? ((bool*)) (word/signed word/dword/signed dword) $400
*((bool*) main::bscreen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ? true
*((bool*) main::bscreen#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ? false
(bool*~) main::$0 ? (bool*) main::bscreen#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
(bool*) main::bscreen#1 ? (bool*~) main::$0
*((bool*) main::bscreen#1) ? true
(bool~) main::$1 ? ! *((bool*) main::bscreen#1)
(bool*) main::bscreen#0 ((bool*)) (word/signed word/dword/signed dword) $400
*((bool*) main::bscreen#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) true
*((bool*) main::bscreen#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) false
(bool*~) main::$0 (bool*) main::bscreen#0 + (byte/signed byte/word/signed word/dword/signed dword) 2
(bool*) main::bscreen#1 (bool*~) main::$0
*((bool*) main::bscreen#1) true
(bool~) main::$1 ! *((bool*) main::bscreen#1)
if((bool~) main::$1) goto main::@1
to:main::@2
main::@1: scope:[main] from main
to:main::@return
main::@2: scope:[main] from main
(bool*) main::bscreen#3 ? phi( main/(bool*) main::bscreen#1 )
(bool*) main::bscreen#2 ? ++ (bool*) main::bscreen#3
*((bool*) main::bscreen#2) ? true
(bool*) main::bscreen#3 phi( main/(bool*) main::bscreen#1 )
(bool*) main::bscreen#2 ++ (bool*) main::bscreen#3
*((bool*) main::bscreen#2) true
to:main::@return
main::@return: scope:[main] from main::@1 main::@2
return
@ -51,7 +51,7 @@ Culled Empty Block (label) @2
Successful SSA optimization Pass2CullEmptyBlocks
Alias (bool*) main::bscreen#1 = (bool*~) main::$0 (bool*) main::bscreen#3
Successful SSA optimization Pass2AliasElimination
Rewriting ! if()-condition to reversed if() [6] (bool~) main::$1 ? ! *((bool*) main::bscreen#1)
Rewriting ! if()-condition to reversed if() [6] (bool~) main::$1 ! *((bool*) main::bscreen#1)
Successful SSA optimization Pass2ConditionalAndOrRewriting
Constant (const bool*) main::bscreen#0 = ((bool*))$400
Successful SSA optimization Pass2ConstantIdentification
@ -94,16 +94,16 @@ FINAL CONTROL FLOW GRAPH
@end: scope:[] from @1
[3] phi()
main: scope:[main] from @1
[4] *(((bool*))(word/signed word/dword/signed dword) $400) ? true
[5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) ? false
[6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true
[4] *(((bool*))(word/signed word/dword/signed dword) $400) true
[5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) false
[6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true
[7] if(*(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@1
to:main::@return
main::@return: scope:[main] from main main::@1
[8] return
to:@return
main::@1: scope:[main] from main
[9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true
[9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true
to:main::@return
@ -138,13 +138,13 @@ bend_from_b1:
bend:
//SEG9 main
main: {
//SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) $400) ? true -- _deref_pboc1=vboc2
//SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) $400) true -- _deref_pboc1=vboc2
lda #1
sta $400
//SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) ? false -- _deref_pboc1=vboc2
//SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) false -- _deref_pboc1=vboc2
lda #0
sta $400+1
//SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true -- _deref_pboc1=vboc2
//SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true -- _deref_pboc1=vboc2
lda #1
sta $400+2
//SEG13 [7] if(*(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@1 -- _deref_pboc1_then_la1
@ -158,18 +158,18 @@ main: {
rts
//SEG16 main::@1
b1:
//SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true -- _deref_pboc1=vboc2
//SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true -- _deref_pboc1=vboc2
lda #1
sta $400+2+1
jmp breturn
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *(((bool*))(word/signed word/dword/signed dword) $400) ? true [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) ? false [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [4] *(((bool*))(word/signed word/dword/signed dword) $400) true [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) false [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [7] if(*(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true [ ] ( main:2 [ ] ) always clobbers reg byte a
REGISTER UPLIFT SCOPES
Uplift Scope [main]
@ -202,13 +202,13 @@ bend_from_b1:
bend:
//SEG9 main
main: {
//SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) $400) ? true -- _deref_pboc1=vboc2
//SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) $400) true -- _deref_pboc1=vboc2
lda #1
sta $400
//SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) ? false -- _deref_pboc1=vboc2
//SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) false -- _deref_pboc1=vboc2
lda #0
sta $400+1
//SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true -- _deref_pboc1=vboc2
//SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true -- _deref_pboc1=vboc2
lda #1
sta $400+2
//SEG13 [7] if(*(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@1 -- _deref_pboc1_then_la1
@ -222,7 +222,7 @@ main: {
rts
//SEG16 main::@1
b1:
//SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true -- _deref_pboc1=vboc2
//SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true -- _deref_pboc1=vboc2
lda #1
sta $400+2+1
jmp breturn
@ -279,13 +279,13 @@ Score: 40
//SEG8 @end
//SEG9 main
main: {
//SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) $400) ? true -- _deref_pboc1=vboc2
//SEG10 [4] *(((bool*))(word/signed word/dword/signed dword) $400) true -- _deref_pboc1=vboc2
lda #1
sta $400
//SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) ? false -- _deref_pboc1=vboc2
//SEG11 [5] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 1) false -- _deref_pboc1=vboc2
lda #0
sta $400+1
//SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true -- _deref_pboc1=vboc2
//SEG12 [6] *(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true -- _deref_pboc1=vboc2
lda #1
sta $400+2
//SEG13 [7] if(*(((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2)) goto main::@1 -- _deref_pboc1_then_la1
@ -296,7 +296,7 @@ main: {
rts
//SEG16 main::@1
b1:
//SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) ? true -- _deref_pboc1=vboc2
//SEG17 [9] *(++((bool*))(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) 2) true -- _deref_pboc1=vboc2
lda #1
sta $400+2+1
rts

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -7,31 +7,31 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte*) main::SCREEN#0 ? ((byte*)) (word/signed word/dword/signed dword) $400
(byte) main::min#0 ? (byte/signed byte/word/signed word/dword/signed dword) $a
(byte) main::max#0 ? (byte/word/signed word/dword/signed dword) $c8
(byte~) main::$0 ? (byte) main::min#0 + (byte) main::max#0
(word) main::sumw#0 ? ((word)) (byte~) main::$0
(word~) main::$1 ? (word) main::sumw#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) main::$2 ? ((byte)) (word~) main::$1
(byte/signed word/word/dword/signed dword~) main::$3 ? (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw#0 ? (byte/signed word/word/dword/signed dword~) main::$3
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) ? (byte) main::midw#0
(byte~) main::$4 ? (byte) main::min#0 + (byte) main::max#0
(byte) main::sumb#0 ? (byte~) main::$4
(byte~) main::$5 ? (byte) main::sumb#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte/signed word/word/dword/signed dword~) main::$6 ? (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midb#0 ? (byte/signed word/word/dword/signed dword~) main::$6
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) ? (byte) main::midb#0
(byte*) main::BGCOL#0 ? ((byte*)) (word/dword/signed dword) $d021
(bool~) main::$7 ? *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
(byte*) main::SCREEN#0 ((byte*)) (word/signed word/dword/signed dword) $400
(byte) main::min#0 (byte/signed byte/word/signed word/dword/signed dword) $a
(byte) main::max#0 (byte/word/signed word/dword/signed dword) $c8
(byte~) main::$0 (byte) main::min#0 + (byte) main::max#0
(word) main::sumw#0 ((word)) (byte~) main::$0
(word~) main::$1 (word) main::sumw#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) main::$2 ((byte)) (word~) main::$1
(byte/signed word/word/dword/signed dword~) main::$3 (byte~) main::$2 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midw#0 (byte/signed word/word/dword/signed dword~) main::$3
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) (byte) main::midw#0
(byte~) main::$4 (byte) main::min#0 + (byte) main::max#0
(byte) main::sumb#0 (byte~) main::$4
(byte~) main::$5 (byte) main::sumb#0 >> (byte/signed byte/word/signed word/dword/signed dword) 1
(byte/signed word/word/dword/signed dword~) main::$6 (byte~) main::$5 + (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) main::midb#0 (byte/signed word/word/dword/signed dword~) main::$6
*((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1) (byte) main::midb#0
(byte*) main::BGCOL#0 ((byte*)) (word/dword/signed dword) $d021
(bool~) main::$7 *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 0) == *((byte*) main::SCREEN#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
if((bool~) main::$7) goto main::@1
to:main::@3
main::@1: scope:[main] from main
*((byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5
*((byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 5
to:main::@return
main::@3: scope:[main] from main
*((byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2
*((byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 2
to:main::@return
main::@return: scope:[main] from main::@1 main::@3
return
@ -139,18 +139,18 @@ FINAL CONTROL FLOW GRAPH
@end: scope:[] from @1
[3] phi()
main: scope:[main] from @1
[4] *((const byte*) main::SCREEN#0) ? (const byte) main::midw#0
[5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ? (const byte) main::midb#0
[4] *((const byte*) main::SCREEN#0) (const byte) main::midw#0
[5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) (const byte) main::midb#0
[6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1
to:main::@2
main::@2: scope:[main] from main
[7] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2
[7] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 2
to:main::@return
main::@return: scope:[main] from main::@1 main::@2
[8] return
to:@return
main::@1: scope:[main] from main
[9] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5
[9] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 5
to:main::@return
@ -200,10 +200,10 @@ main: {
.const sumw = min+max
.const midb = (sumb>>1)+1
.const midw = (sumw>>1)+1
//SEG10 [4] *((const byte*) main::SCREEN#0) ? (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
//SEG10 [4] *((const byte*) main::SCREEN#0) (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN
//SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ? (const byte) main::midb#0 -- _deref_pbuc1=vbuc2
//SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) (const byte) main::midb#0 -- _deref_pbuc1=vbuc2
lda #midb
sta SCREEN+1
//SEG12 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1
@ -213,7 +213,7 @@ main: {
jmp b2
//SEG13 main::@2
b2:
//SEG14 [7] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
//SEG14 [7] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
lda #2
sta BGCOL
jmp breturn
@ -223,18 +223,18 @@ main: {
rts
//SEG17 main::@1
b1:
//SEG18 [9] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
//SEG18 [9] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
lda #5
sta BGCOL
jmp breturn
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) main::SCREEN#0) ? (const byte) main::midw#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ? (const byte) main::midb#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [4] *((const byte*) main::SCREEN#0) (const byte) main::midw#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) (const byte) main::midb#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [7] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [9] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [7] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [9] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
REGISTER UPLIFT SCOPES
Uplift Scope [main]
@ -275,10 +275,10 @@ main: {
.const sumw = min+max
.const midb = (sumb>>1)+1
.const midw = (sumw>>1)+1
//SEG10 [4] *((const byte*) main::SCREEN#0) ? (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
//SEG10 [4] *((const byte*) main::SCREEN#0) (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN
//SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ? (const byte) main::midb#0 -- _deref_pbuc1=vbuc2
//SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) (const byte) main::midb#0 -- _deref_pbuc1=vbuc2
lda #midb
sta SCREEN+1
//SEG12 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1
@ -288,7 +288,7 @@ main: {
jmp b2
//SEG13 main::@2
b2:
//SEG14 [7] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
//SEG14 [7] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
lda #2
sta BGCOL
jmp breturn
@ -298,7 +298,7 @@ main: {
rts
//SEG17 main::@1
b1:
//SEG18 [9] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
//SEG18 [9] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
lda #5
sta BGCOL
jmp breturn
@ -379,10 +379,10 @@ main: {
.const sumw = min+max
.const midb = (sumb>>1)+1
.const midw = (sumw>>1)+1
//SEG10 [4] *((const byte*) main::SCREEN#0) ? (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
//SEG10 [4] *((const byte*) main::SCREEN#0) (const byte) main::midw#0 -- _deref_pbuc1=vbuc2
lda #midw
sta SCREEN
//SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ? (const byte) main::midb#0 -- _deref_pbuc1=vbuc2
//SEG11 [5] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) (const byte) main::midb#0 -- _deref_pbuc1=vbuc2
lda #midb
sta SCREEN+1
//SEG12 [6] if(*((const byte*) main::SCREEN#0)==*((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1)) goto main::@1 -- _deref_pbuc1_eq__deref_pbuc2_then_la1
@ -390,7 +390,7 @@ main: {
cmp SCREEN+1
beq b1
//SEG13 main::@2
//SEG14 [7] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
//SEG14 [7] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
lda #2
sta BGCOL
//SEG15 main::@return
@ -398,7 +398,7 @@ main: {
rts
//SEG17 main::@1
b1:
//SEG18 [9] *((const byte*) main::BGCOL#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
//SEG18 [9] *((const byte*) main::BGCOL#0) (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
lda #5
sta BGCOL
rts

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -3,35 +3,35 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte*) main::screen#0 ? ((byte*)) (word/signed word/dword/signed dword) $400
(byte[]) main::str#0 ? (const string) main::$5
(byte) main::i#0 ? (byte/signed byte/word/signed word/dword/signed dword) 0
(byte*) main::screen#0 ((byte*)) (word/signed word/dword/signed dword) $400
(byte[]) main::str#0 (const string) main::$5
(byte) main::i#0 (byte/signed byte/word/signed word/dword/signed dword) 0
to:main::@1
main::@1: scope:[main] from main main::@5
(byte*) main::screen#4 ? phi( main/(byte*) main::screen#0 main::@5/(byte*) main::screen#5 )
(byte) main::i#2 ? phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 )
(bool~) main::$0 ? *((byte[]) main::str#0 + (byte) main::i#2) == (byte) '@'
(bool~) main::$1 ? ! (bool~) main::$0
(byte*) main::screen#4 phi( main/(byte*) main::screen#0 main::@5/(byte*) main::screen#5 )
(byte) main::i#2 phi( main/(byte) main::i#0 main::@5/(byte) main::i#1 )
(bool~) main::$0 *((byte[]) main::str#0 + (byte) main::i#2) == (byte) '@'
(bool~) main::$1 ! (bool~) main::$0
if((bool~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte*) main::screen#3 ? phi( main::@1/(byte*) main::screen#4 )
(byte) main::i#3 ? phi( main::@1/(byte) main::i#2 )
(bool~) main::$2 ? *((byte[]) main::str#0 + (byte) main::i#3) == (byte) ' '
(bool~) main::$3 ? ! (bool~) main::$2
(byte*) main::screen#3 phi( main::@1/(byte*) main::screen#4 )
(byte) main::i#3 phi( main::@1/(byte) main::i#2 )
(bool~) main::$2 *((byte[]) main::str#0 + (byte) main::i#3) == (byte) ' '
(bool~) main::$3 ! (bool~) main::$2
if((bool~) main::$3) goto main::@4
to:main::@5
main::@4: scope:[main] from main::@2
(byte*) main::screen#2 ? phi( main::@2/(byte*) main::screen#3 )
(byte) main::i#4 ? phi( main::@2/(byte) main::i#3 )
*((byte*) main::screen#2) ? *((byte[]) main::str#0 + (byte) main::i#4)
(byte*) main::screen#1 ? ++ (byte*) main::screen#2
(byte*) main::screen#2 phi( main::@2/(byte*) main::screen#3 )
(byte) main::i#4 phi( main::@2/(byte) main::i#3 )
*((byte*) main::screen#2) *((byte[]) main::str#0 + (byte) main::i#4)
(byte*) main::screen#1 ++ (byte*) main::screen#2
to:main::@5
main::@5: scope:[main] from main::@2 main::@4
(byte*) main::screen#5 ? phi( main::@2/(byte*) main::screen#3 main::@4/(byte*) main::screen#1 )
(byte) main::i#5 ? phi( main::@2/(byte) main::i#3 main::@4/(byte) main::i#4 )
(byte) main::i#1 ? (byte) main::i#5 + rangenext(0,$ff)
(bool~) main::$4 ? (byte) main::i#1 != rangelast(0,$ff)
(byte*) main::screen#5 phi( main::@2/(byte*) main::screen#3 main::@4/(byte*) main::screen#1 )
(byte) main::i#5 phi( main::@2/(byte) main::i#3 main::@4/(byte) main::i#4 )
(byte) main::i#1 (byte) main::i#5 + rangenext(0,$ff)
(bool~) main::$4 (byte) main::i#1 != rangelast(0,$ff)
if((bool~) main::$4) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1 main::@5
@ -80,8 +80,8 @@ SYMBOL TABLE SSA
Culled Empty Block (label) @2
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not [5] (bool~) main::$1 ? *((byte[]) main::str#0 + (byte) main::i#2) != (byte) '@' from [4] (bool~) main::$0 ? *((byte[]) main::str#0 + (byte) main::i#2) == (byte) '@'
Inversing boolean not [9] (bool~) main::$3 ? *((byte[]) main::str#0 + (byte) main::i#3) != (byte) ' ' from [8] (bool~) main::$2 ? *((byte[]) main::str#0 + (byte) main::i#3) == (byte) ' '
Inversing boolean not [5] (bool~) main::$1 ← *((byte[]) main::str#0 + (byte) main::i#2) != (byte) '@' from [4] (bool~) main::$0 ← *((byte[]) main::str#0 + (byte) main::i#2) == (byte) '@'
Inversing boolean not [9] (bool~) main::$3 ← *((byte[]) main::str#0 + (byte) main::i#3) != (byte) ' ' from [8] (bool~) main::$2 ← *((byte[]) main::str#0 + (byte) main::i#3) == (byte) ' '
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::i#2 = (byte) main::i#3 (byte) main::i#4
Alias (byte*) main::screen#2 = (byte*) main::screen#3 (byte*) main::screen#4
@ -96,7 +96,7 @@ Constant (const byte*) main::screen#0 = ((byte*))$400
Constant (const byte[]) main::str#0 = main::$5
Constant (const byte) main::i#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ? ++ main::i#2 to ++
Resolved ranged next value main::i#1 ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,$ff)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0
Inlining constant with var siblings (const byte*) main::screen#0
Inlining constant with var siblings (const byte) main::i#0
@ -114,10 +114,10 @@ CALL GRAPH
Calls in [] to main:2
Created 3 initial phi equivalence classes
Coalesced [9] main::screen#7 ? main::screen#2
Coalesced [13] main::i#6 ? main::i#1
Coalesced (already) [14] main::screen#6 ? main::screen#5
Coalesced [17] main::screen#8 ? main::screen#1
Coalesced [9] main::screen#7 main::screen#2
Coalesced [13] main::i#6 main::i#1
Coalesced (already) [14] main::screen#6 main::screen#5
Coalesced [17] main::screen#8 main::screen#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@12
Culled Empty Block (label) main::@11
@ -142,8 +142,8 @@ main: scope:[main] from @1
[4] phi()
to:main::@1
main::@1: scope:[main] from main main::@4
[5] (byte*) main::screen#2 ? phi( main/((byte*))(word/signed word/dword/signed dword) $400 main::@4/(byte*) main::screen#5 )
[5] (byte) main::i#2 ? phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@4/(byte) main::i#1 )
[5] (byte*) main::screen#2 phi( main/((byte*))(word/signed word/dword/signed dword) $400 main::@4/(byte*) main::screen#5 )
[5] (byte) main::i#2 phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@4/(byte) main::i#1 )
[6] if(*((const byte[]) main::str#0 + (byte) main::i#2)!=(byte) '@') goto main::@2
to:main::@return
main::@return: scope:[main] from main::@1 main::@4
@ -153,13 +153,13 @@ main::@2: scope:[main] from main::@1
[8] if(*((const byte[]) main::str#0 + (byte) main::i#2)!=(byte) ' ') goto main::@3
to:main::@4
main::@4: scope:[main] from main::@2 main::@3
[9] (byte*) main::screen#5 ? phi( main::@2/(byte*) main::screen#2 main::@3/(byte*) main::screen#1 )
[10] (byte) main::i#1 ? ++ (byte) main::i#2
[9] (byte*) main::screen#5 phi( main::@2/(byte*) main::screen#2 main::@3/(byte*) main::screen#1 )
[10] (byte) main::i#1 ++ (byte) main::i#2
[11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@2
[12] *((byte*) main::screen#2) ? *((const byte[]) main::str#0 + (byte) main::i#2)
[13] (byte*) main::screen#1 ? ++ (byte*) main::screen#2
[12] *((byte*) main::screen#2) *((const byte[]) main::str#0 + (byte) main::i#2)
[13] (byte*) main::screen#1 ++ (byte*) main::screen#2
to:main::@4
@ -254,7 +254,7 @@ main: {
jmp b4
//SEG25 main::@4
b4:
//SEG26 [10] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
//SEG26 [10] (byte) main::i#1 ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
inc i
//SEG27 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuz1_neq_0_then_la1
lda i
@ -263,12 +263,12 @@ main: {
jmp breturn
//SEG28 main::@3
b3:
//SEG29 [12] *((byte*) main::screen#2) ? *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2
//SEG29 [12] *((byte*) main::screen#2) *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuz2
ldy i
lda str,y
ldy #0
sta (screen),y
//SEG30 [13] (byte*) main::screen#1 ? ++ (byte*) main::screen#2 -- pbuz1=_inc_pbuz1
//SEG30 [13] (byte*) main::screen#1 ++ (byte*) main::screen#2 -- pbuz1=_inc_pbuz1
inc screen
bne !+
inc screen+1
@ -281,11 +281,11 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] if(*((const byte[]) main::str#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [8] if(*((const byte[]) main::str#0 + (byte) main::i#2)!=(byte) ' ') goto main::@3 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a
Statement [12] *((byte*) main::screen#2) ? *((const byte[]) main::str#0 + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [12] *((byte*) main::screen#2) *((const byte[]) main::str#0 + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a reg byte y
Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [6] if(*((const byte[]) main::str#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a
Statement [8] if(*((const byte[]) main::str#0 + (byte) main::i#2)!=(byte) ' ') goto main::@3 [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a
Statement [12] *((byte*) main::screen#2) ? *((const byte[]) main::str#0 + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a reg byte y
Statement [12] *((byte*) main::screen#2) *((const byte[]) main::str#0 + (byte) main::i#2) [ main::i#2 main::screen#2 ] ( main:2 [ main::i#2 main::screen#2 ] ) always clobbers reg byte a reg byte y
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x ,
Potential registers zp ZP_WORD:3 [ main::screen#2 main::screen#5 main::screen#1 ] : zp ZP_WORD:3 ,
@ -364,7 +364,7 @@ main: {
jmp b4
//SEG25 main::@4
b4:
//SEG26 [10] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
//SEG26 [10] (byte) main::i#1 ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
inx
//SEG27 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1
cpx #0
@ -372,11 +372,11 @@ main: {
jmp breturn
//SEG28 main::@3
b3:
//SEG29 [12] *((byte*) main::screen#2) ? *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx
//SEG29 [12] *((byte*) main::screen#2) *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx
lda str,x
ldy #0
sta (screen),y
//SEG30 [13] (byte*) main::screen#1 ? ++ (byte*) main::screen#2 -- pbuz1=_inc_pbuz1
//SEG30 [13] (byte*) main::screen#1 ++ (byte*) main::screen#2 -- pbuz1=_inc_pbuz1
inc screen
bne !+
inc screen+1
@ -491,7 +491,7 @@ main: {
//SEG24 [9] phi (byte*) main::screen#5 = (byte*) main::screen#2 [phi:main::@2/main::@3->main::@4#0] -- register_copy
//SEG25 main::@4
b4:
//SEG26 [10] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
//SEG26 [10] (byte) main::i#1 ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
inx
//SEG27 [11] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 -- vbuxx_neq_0_then_la1
cpx #0
@ -499,11 +499,11 @@ main: {
rts
//SEG28 main::@3
b3:
//SEG29 [12] *((byte*) main::screen#2) ? *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx
//SEG29 [12] *((byte*) main::screen#2) *((const byte[]) main::str#0 + (byte) main::i#2) -- _deref_pbuz1=pbuc1_derefidx_vbuxx
lda str,x
ldy #0
sta (screen),y
//SEG30 [13] (byte*) main::screen#1 ? ++ (byte*) main::screen#2 -- pbuz1=_inc_pbuz1
//SEG30 [13] (byte*) main::screen#1 ++ (byte*) main::screen#2 -- pbuz1=_inc_pbuz1
inc screen
bne !+
inc screen+1

View File

@ -1,42 +1,42 @@
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ? ((byte*)) (word/signed word/dword/signed dword) $400
(byte*) SCREEN#0 ((byte*)) (word/signed word/dword/signed dword) $400
to:@1
main: scope:[main] from @1
(byte*) main::line#0 ? ((byte*)) (word/signed word/dword/signed dword) $400
(byte*) main::line#0 ((byte*)) (word/signed word/dword/signed dword) $400
to:main::@1
main::@1: scope:[main] from main main::@6
(byte*) main::line#2 ? phi( main/(byte*) main::line#0 main::@6/(byte*) main::line#1 )
(bool~) main::$0 ? *((byte*) main::line#2) == (byte) 'a'
(bool~) main::$1 ? ! (bool~) main::$0
(byte*) main::line#2 phi( main/(byte*) main::line#0 main::@6/(byte*) main::line#1 )
(bool~) main::$0 *((byte*) main::line#2) == (byte) 'a'
(bool~) main::$1 ! (bool~) main::$0
if((bool~) main::$1) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte*) main::line#6 ? phi( main::@1/(byte*) main::line#2 )
(byte) main::i#0 ? (byte/signed byte/word/signed word/dword/signed dword) 0
(byte*) main::line#6 phi( main::@1/(byte*) main::line#2 )
(byte) main::i#0 (byte/signed byte/word/signed word/dword/signed dword) 0
to:main::@4
main::@4: scope:[main] from main::@2 main::@5
(byte) main::i#2 ? phi( main::@2/(byte) main::i#0 main::@5/(byte) main::i#1 )
(byte*) main::line#3 ? phi( main::@2/(byte*) main::line#6 main::@5/(byte*) main::line#4 )
(bool~) main::$2 ? *((byte*) main::line#3 + (byte) main::i#2) == (byte) 'a'
(bool~) main::$3 ? ! (bool~) main::$2
(byte) main::i#2 phi( main::@2/(byte) main::i#0 main::@5/(byte) main::i#1 )
(byte*) main::line#3 phi( main::@2/(byte*) main::line#6 main::@5/(byte*) main::line#4 )
(bool~) main::$2 *((byte*) main::line#3 + (byte) main::i#2) == (byte) 'a'
(bool~) main::$3 ! (bool~) main::$2
if((bool~) main::$3) goto main::@5
to:main::@6
main::@5: scope:[main] from main::@4
(byte) main::i#3 ? phi( main::@4/(byte) main::i#2 )
(byte*) main::line#4 ? phi( main::@4/(byte*) main::line#3 )
*((byte*) main::line#4 + (byte) main::i#3) ? (byte) 'a'
(byte) main::i#1 ? (byte) main::i#3 + rangenext(0,$27)
(bool~) main::$4 ? (byte) main::i#1 != rangelast(0,$27)
(byte) main::i#3 phi( main::@4/(byte) main::i#2 )
(byte*) main::line#4 phi( main::@4/(byte*) main::line#3 )
*((byte*) main::line#4 + (byte) main::i#3) (byte) 'a'
(byte) main::i#1 (byte) main::i#3 + rangenext(0,$27)
(bool~) main::$4 (byte) main::i#1 != rangelast(0,$27)
if((bool~) main::$4) goto main::@4
to:main::@6
main::@6: scope:[main] from main::@4 main::@5
(byte*) main::line#5 ? phi( main::@4/(byte*) main::line#3 main::@5/(byte*) main::line#4 )
(byte*) main::line#1 ? (byte*) main::line#5 + (byte/signed byte/word/signed word/dword/signed dword) $28
(word/signed word/dword/signed dword~) main::$5 ? (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) $19
(word/signed dword/dword/signed word~) main::$6 ? (word/signed word/dword/signed dword) $400 + (word/signed word/dword/signed dword~) main::$5
(bool~) main::$7 ? (byte*) main::line#1 < (word/signed dword/dword/signed word~) main::$6
(byte*) main::line#5 phi( main::@4/(byte*) main::line#3 main::@5/(byte*) main::line#4 )
(byte*) main::line#1 (byte*) main::line#5 + (byte/signed byte/word/signed word/dword/signed dword) $28
(word/signed word/dword/signed dword~) main::$5 (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) $19
(word/signed dword/dword/signed word~) main::$6 (word/signed word/dword/signed dword) $400 + (word/signed word/dword/signed dword~) main::$5
(bool~) main::$7 (byte*) main::line#1 < (word/signed dword/dword/signed word~) main::$6
if((bool~) main::$7) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1 main::@6
@ -87,8 +87,8 @@ SYMBOL TABLE SSA
Culled Empty Block (label) @2
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not [4] (bool~) main::$1 ? *((byte*) main::line#2) != (byte) 'a' from [3] (bool~) main::$0 ? *((byte*) main::line#2) == (byte) 'a'
Inversing boolean not [10] (bool~) main::$3 ? *((byte*) main::line#3 + (byte) main::i#2) != (byte) 'a' from [9] (bool~) main::$2 ? *((byte*) main::line#3 + (byte) main::i#2) == (byte) 'a'
Inversing boolean not [4] (bool~) main::$1 ← *((byte*) main::line#2) != (byte) 'a' from [3] (bool~) main::$0 ← *((byte*) main::line#2) == (byte) 'a'
Inversing boolean not [10] (bool~) main::$3 ← *((byte*) main::line#3 + (byte) main::i#2) != (byte) 'a' from [9] (bool~) main::$2 ← *((byte*) main::line#3 + (byte) main::i#2) == (byte) 'a'
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte*) main::line#2 = (byte*) main::line#6
Alias (byte*) main::line#3 = (byte*) main::line#4
@ -113,7 +113,7 @@ Successful SSA optimization Pass2ConstantIdentification
Constant (const word/signed dword/dword/signed word) main::$6 = $400+main::$5
Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization PassNEliminateUnusedVars
Resolved ranged next value main::i#1 ? ++ main::i#2 to ++
Resolved ranged next value main::i#1 ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,$27)) goto main::@4 to (byte/signed byte/word/signed word/dword/signed dword) $28
Culled Empty Block (label) main::@2
Successful SSA optimization Pass2CullEmptyBlocks
@ -134,8 +134,8 @@ CALL GRAPH
Calls in [] to main:2
Created 2 initial phi equivalence classes
Coalesced [12] main::line#7 ? main::line#1
Coalesced [16] main::i#4 ? main::i#1
Coalesced [12] main::line#7 main::line#1
Coalesced [16] main::i#4 main::i#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@13
Culled Empty Block (label) main::@14
@ -161,23 +161,23 @@ main: scope:[main] from @1
[4] phi()
to:main::@1
main::@1: scope:[main] from main main::@4
[5] (byte*) main::line#2 ? phi( main/((byte*))(word/signed word/dword/signed dword) $400 main::@4/(byte*) main::line#1 )
[5] (byte*) main::line#2 phi( main/((byte*))(word/signed word/dword/signed dword) $400 main::@4/(byte*) main::line#1 )
[6] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@2
to:main::@return
main::@return: scope:[main] from main::@1 main::@4
[7] return
to:@return
main::@2: scope:[main] from main::@1 main::@3
[8] (byte) main::i#2 ? phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::i#1 )
[8] (byte) main::i#2 phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::i#1 )
[9] if(*((byte*) main::line#2 + (byte) main::i#2)!=(byte) 'a') goto main::@3
to:main::@4
main::@4: scope:[main] from main::@2 main::@3
[10] (byte*) main::line#1 ? (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28
[10] (byte*) main::line#1 (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28
[11] if((byte*) main::line#1<(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) $19) goto main::@1
to:main::@return
main::@3: scope:[main] from main::@2
[12] *((byte*) main::line#2 + (byte) main::i#2) ? (byte) 'a'
[13] (byte) main::i#1 ? ++ (byte) main::i#2
[12] *((byte*) main::line#2 + (byte) main::i#2) (byte) 'a'
[13] (byte) main::i#1 ++ (byte) main::i#2
[14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@2
to:main::@4
@ -273,7 +273,7 @@ main: {
jmp b4
//SEG25 main::@4
b4:
//SEG26 [10] (byte*) main::line#1 ? (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1
//SEG26 [10] (byte*) main::line#1 (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc line
@ -293,11 +293,11 @@ main: {
jmp breturn
//SEG28 main::@3
b3:
//SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) ? (byte) 'a' -- pbuz1_derefidx_vbuz2=vbuc1
//SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) (byte) 'a' -- pbuz1_derefidx_vbuz2=vbuc1
lda #'a'
ldy i
sta (line),y
//SEG30 [13] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
//SEG30 [13] (byte) main::i#1 ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
inc i
//SEG31 [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
lda #$28
@ -310,14 +310,14 @@ REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@2 [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a reg byte y
Statement [9] if(*((byte*) main::line#2 + (byte) main::i#2)!=(byte) 'a') goto main::@3 [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::i#2 main::i#1 ]
Statement [10] (byte*) main::line#1 ? (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a
Statement [10] (byte*) main::line#1 (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a
Statement [11] if((byte*) main::line#1<(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) $19) goto main::@1 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a
Statement [12] *((byte*) main::line#2 + (byte) main::i#2) ? (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a
Statement [12] *((byte*) main::line#2 + (byte) main::i#2) (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a
Statement [6] if(*((byte*) main::line#2)!=(byte) 'a') goto main::@2 [ main::line#2 ] ( main:2 [ main::line#2 ] ) always clobbers reg byte a reg byte y
Statement [9] if(*((byte*) main::line#2 + (byte) main::i#2)!=(byte) 'a') goto main::@3 [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a
Statement [10] (byte*) main::line#1 ? (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a
Statement [10] (byte*) main::line#1 (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a
Statement [11] if((byte*) main::line#1<(word/signed word/dword/signed dword) $400+(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) $19) goto main::@1 [ main::line#1 ] ( main:2 [ main::line#1 ] ) always clobbers reg byte a
Statement [12] *((byte*) main::line#2 + (byte) main::i#2) ? (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a
Statement [12] *((byte*) main::line#2 + (byte) main::i#2) (byte) 'a' [ main::line#2 main::i#2 ] ( main:2 [ main::line#2 main::i#2 ] ) always clobbers reg byte a
Potential registers zp ZP_WORD:2 [ main::line#2 main::line#1 ] : zp ZP_WORD:2 ,
Potential registers zp ZP_BYTE:4 [ main::i#2 main::i#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y ,
@ -397,7 +397,7 @@ main: {
jmp b4
//SEG25 main::@4
b4:
//SEG26 [10] (byte*) main::line#1 ? (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1
//SEG26 [10] (byte*) main::line#1 (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc line
@ -417,10 +417,10 @@ main: {
jmp breturn
//SEG28 main::@3
b3:
//SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) ? (byte) 'a' -- pbuz1_derefidx_vbuyy=vbuc1
//SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) (byte) 'a' -- pbuz1_derefidx_vbuyy=vbuc1
lda #'a'
sta (line),y
//SEG30 [13] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy
//SEG30 [13] (byte) main::i#1 ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy
iny
//SEG31 [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@2 -- vbuyy_neq_vbuc1_then_la1
cpy #$28
@ -537,7 +537,7 @@ main: {
bne b3
//SEG25 main::@4
b4:
//SEG26 [10] (byte*) main::line#1 ? (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1
//SEG26 [10] (byte*) main::line#1 (byte*) main::line#2 + (byte/signed byte/word/signed word/dword/signed dword) $28 -- pbuz1=pbuz1_plus_vbuc1
lda #$28
clc
adc line
@ -557,10 +557,10 @@ main: {
rts
//SEG28 main::@3
b3:
//SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) ? (byte) 'a' -- pbuz1_derefidx_vbuyy=vbuc1
//SEG29 [12] *((byte*) main::line#2 + (byte) main::i#2) (byte) 'a' -- pbuz1_derefidx_vbuyy=vbuc1
lda #'a'
sta (line),y
//SEG30 [13] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy
//SEG30 [13] (byte) main::i#1 ++ (byte) main::i#2 -- vbuyy=_inc_vbuyy
iny
//SEG31 [14] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28) goto main::@2 -- vbuyy_neq_vbuc1_then_la1
cpy #$28

View File

@ -1,23 +1,23 @@
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) SCREEN#0 ? ((byte*)) (word/signed word/dword/signed dword) $400
(byte*) SCREEN#0 ((byte*)) (word/signed word/dword/signed dword) $400
to:@1
main: scope:[main] from @1
(byte/word/signed word/dword/signed dword~) main::$0 ? (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) main::i#0 ? (byte/signed byte/word/signed word/dword/signed dword) 0
(byte/word/signed word/dword/signed dword~) main::$0 (byte/signed byte/word/signed word/dword/signed dword) $28 * (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) main::i#0 (byte/signed byte/word/signed word/dword/signed dword) 0
to:main::@1
main::@1: scope:[main] from main main::@2
(byte) main::i#2 ? phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(bool~) main::$1 ? *((byte*) SCREEN#0 + (byte) main::i#2) == (byte) 'a'
(bool~) main::$2 ? ! (bool~) main::$1
(byte) main::i#2 phi( main/(byte) main::i#0 main::@2/(byte) main::i#1 )
(bool~) main::$1 *((byte*) SCREEN#0 + (byte) main::i#2) == (byte) 'a'
(bool~) main::$2 ! (bool~) main::$1
if((bool~) main::$2) goto main::@2
to:main::@return
main::@2: scope:[main] from main::@1
(byte) main::i#3 ? phi( main::@1/(byte) main::i#2 )
*((byte*) SCREEN#0 + (byte) main::i#3) ? (byte) 'a'
(byte) main::i#1 ? (byte) main::i#3 + rangenext(0,main::$0)
(bool~) main::$3 ? (byte) main::i#1 != rangelast(0,main::$0)
(byte) main::i#3 phi( main::@1/(byte) main::i#2 )
*((byte*) SCREEN#0 + (byte) main::i#3) (byte) 'a'
(byte) main::i#1 (byte) main::i#3 + rangenext(0,main::$0)
(bool~) main::$3 (byte) main::i#1 != rangelast(0,main::$0)
if((bool~) main::$3) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@1 main::@2
@ -53,7 +53,7 @@ SYMBOL TABLE SSA
Culled Empty Block (label) @2
Successful SSA optimization Pass2CullEmptyBlocks
Inversing boolean not [5] (bool~) main::$2 ? *((byte*) SCREEN#0 + (byte) main::i#2) != (byte) 'a' from [4] (bool~) main::$1 ? *((byte*) SCREEN#0 + (byte) main::i#2) == (byte) 'a'
Inversing boolean not [5] (bool~) main::$2 ← *((byte*) SCREEN#0 + (byte) main::i#2) != (byte) 'a' from [4] (bool~) main::$1 ← *((byte*) SCREEN#0 + (byte) main::i#2) == (byte) 'a'
Successful SSA optimization Pass2UnaryNotSimplification
Alias (byte) main::i#2 = (byte) main::i#3
Successful SSA optimization Pass2AliasElimination
@ -64,7 +64,7 @@ Constant (const byte*) SCREEN#0 = ((byte*))$400
Constant (const byte/word/signed word/dword/signed dword) main::$0 = $28*6
Constant (const byte) main::i#0 = 0
Successful SSA optimization Pass2ConstantIdentification
Resolved ranged next value main::i#1 ? ++ main::i#2 to ++
Resolved ranged next value main::i#1 ++ main::i#2 to ++
Resolved ranged comparison value if(main::i#1!=rangelast(0,main::$0)) goto main::@1 to (const byte/word/signed word/dword/signed dword) main::$0+(byte/signed byte/word/signed word/dword/signed dword) 1
Inlining constant with var siblings (const byte) main::i#0
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
@ -79,7 +79,7 @@ CALL GRAPH
Calls in [] to main:2
Created 1 initial phi equivalence classes
Coalesced [11] main::i#4 ? main::i#1
Coalesced [11] main::i#4 main::i#1
Coalesced down to 1 phi equivalence classes
Culled Empty Block (label) main::@7
Adding NOP phi() at start of @begin
@ -101,15 +101,15 @@ main: scope:[main] from @1
[4] phi()
to:main::@1
main::@1: scope:[main] from main main::@2
[5] (byte) main::i#2 ? phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#1 )
[5] (byte) main::i#2 phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#1 )
[6] if(*((const byte*) SCREEN#0 + (byte) main::i#2)!=(byte) 'a') goto main::@2
to:main::@return
main::@return: scope:[main] from main::@1 main::@2
[7] return
to:@return
main::@2: scope:[main] from main::@1
[8] *((const byte*) SCREEN#0 + (byte) main::i#2) ? (byte) 'a'
[9] (byte) main::i#1 ? ++ (byte) main::i#2
[8] *((const byte*) SCREEN#0 + (byte) main::i#2) (byte) 'a'
[9] (byte) main::i#1 ++ (byte) main::i#2
[10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1
to:main::@return
@ -179,11 +179,11 @@ main: {
rts
//SEG19 main::@2
b2:
//SEG20 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ? (byte) 'a' -- pbuc1_derefidx_vbuz1=vbuc2
//SEG20 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) (byte) 'a' -- pbuc1_derefidx_vbuz1=vbuc2
lda #'a'
ldy i
sta SCREEN,y
//SEG21 [9] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
//SEG21 [9] (byte) main::i#1 ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
inc i
//SEG22 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
lda #$28*6+1
@ -195,9 +195,9 @@ main: {
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] if(*((const byte*) SCREEN#0 + (byte) main::i#2)!=(byte) 'a') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ]
Statement [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ? (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
Statement [8] *((const byte*) SCREEN#0 + (byte) main::i#2) (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
Statement [6] if(*((const byte*) SCREEN#0 + (byte) main::i#2)!=(byte) 'a') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
Statement [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ? (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
Statement [8] *((const byte*) SCREEN#0 + (byte) main::i#2) (byte) 'a' [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
REGISTER UPLIFT SCOPES
@ -256,10 +256,10 @@ main: {
rts
//SEG19 main::@2
b2:
//SEG20 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ? (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2
//SEG20 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2
lda #'a'
sta SCREEN,x
//SEG21 [9] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
//SEG21 [9] (byte) main::i#1 ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
inx
//SEG22 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
cpx #$28*6+1
@ -347,10 +347,10 @@ main: {
rts
//SEG19 main::@2
b2:
//SEG20 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) ? (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2
//SEG20 [8] *((const byte*) SCREEN#0 + (byte) main::i#2) (byte) 'a' -- pbuc1_derefidx_vbuxx=vbuc2
lda #'a'
sta SCREEN,x
//SEG21 [9] (byte) main::i#1 ? ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
//SEG21 [9] (byte) main::i#1 ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
inx
//SEG22 [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) $28*(byte/signed byte/word/signed word/dword/signed dword) 6+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
cpx #$28*6+1

File diff suppressed because it is too large Load Diff

View File

@ -1,132 +1,132 @@
Inlined call (byte~) vicSelectGfxBank::$0 ? call toDd00 (byte*) vicSelectGfxBank::gfx
Inlined call (byte~) vicSelectGfxBank::$0 call toDd00 (byte*) vicSelectGfxBank::gfx
CONTROL FLOW GRAPH SSA
@begin: scope:[] from
(byte*) PROCPORT_DDR#0 ? ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) PROCPORT_DDR_MEMORY_MASK#0 ? (byte/signed byte/word/signed word/dword/signed dword) 7
(byte*) PROCPORT#0 ? ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) PROCPORT_RAM_ALL#0 ? (byte/signed byte/word/signed word/dword/signed dword) $30
(byte) PROCPORT_RAM_IO#0 ? (byte/signed byte/word/signed word/dword/signed dword) $35
(byte) PROCPORT_RAM_CHARROM#0 ? (byte/signed byte/word/signed word/dword/signed dword) $31
(byte) PROCPORT_KERNEL_IO#0 ? (byte/signed byte/word/signed word/dword/signed dword) $36
(byte) PROCPORT_BASIC_KERNEL_IO#0 ? (byte/signed byte/word/signed word/dword/signed dword) $37
(byte*) CHARGEN#0 ? ((byte*)) (word/dword/signed dword) $d000
(word) SPRITE_PTRS#0 ? (word/signed word/dword/signed dword) $3f8
(byte*) SPRITES_XPOS#0 ? ((byte*)) (word/dword/signed dword) $d000
(byte*) SPRITES_YPOS#0 ? ((byte*)) (word/dword/signed dword) $d001
(byte*) SPRITES_XMSB#0 ? ((byte*)) (word/dword/signed dword) $d010
(byte*) RASTER#0 ? ((byte*)) (word/dword/signed dword) $d012
(byte*) SPRITES_ENABLE#0 ? ((byte*)) (word/dword/signed dword) $d015
(byte*) SPRITES_EXPAND_Y#0 ? ((byte*)) (word/dword/signed dword) $d017
(byte*) SPRITES_PRIORITY#0 ? ((byte*)) (word/dword/signed dword) $d01b
(byte*) SPRITES_MC#0 ? ((byte*)) (word/dword/signed dword) $d01c
(byte*) SPRITES_EXPAND_X#0 ? ((byte*)) (word/dword/signed dword) $d01d
(byte*) BORDERCOL#0 ? ((byte*)) (word/dword/signed dword) $d020
(byte*) BGCOL#0 ? ((byte*)) (word/dword/signed dword) $d021
(byte*) BGCOL1#0 ? ((byte*)) (word/dword/signed dword) $d021
(byte*) BGCOL2#0 ? ((byte*)) (word/dword/signed dword) $d022
(byte*) BGCOL3#0 ? ((byte*)) (word/dword/signed dword) $d023
(byte*) BGCOL4#0 ? ((byte*)) (word/dword/signed dword) $d024
(byte*) SPRITES_MC1#0 ? ((byte*)) (word/dword/signed dword) $d025
(byte*) SPRITES_MC2#0 ? ((byte*)) (word/dword/signed dword) $d026
(byte*) SPRITES_COLS#0 ? ((byte*)) (word/dword/signed dword) $d027
(byte*) VIC_CONTROL#0 ? ((byte*)) (word/dword/signed dword) $d011
(byte*) D011#0 ? ((byte*)) (word/dword/signed dword) $d011
(byte) VIC_RST8#0 ? (byte/word/signed word/dword/signed dword) $80
(byte) VIC_ECM#0 ? (byte/signed byte/word/signed word/dword/signed dword) $40
(byte) VIC_BMM#0 ? (byte/signed byte/word/signed word/dword/signed dword) $20
(byte) VIC_DEN#0 ? (byte/signed byte/word/signed word/dword/signed dword) $10
(byte) VIC_RSEL#0 ? (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) VIC_CONTROL2#0 ? ((byte*)) (word/dword/signed dword) $d016
(byte*) D016#0 ? ((byte*)) (word/dword/signed dword) $d016
(byte) VIC_MCM#0 ? (byte/signed byte/word/signed word/dword/signed dword) $10
(byte) VIC_CSEL#0 ? (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) D018#0 ? ((byte*)) (word/dword/signed dword) $d018
(byte*) VIC_MEMORY#0 ? ((byte*)) (word/dword/signed dword) $d018
(byte*) LIGHTPEN_X#0 ? ((byte*)) (word/dword/signed dword) $d013
(byte*) LIGHTPEN_Y#0 ? ((byte*)) (word/dword/signed dword) $d014
(byte*) IRQ_STATUS#0 ? ((byte*)) (word/dword/signed dword) $d019
(byte*) IRQ_ENABLE#0 ? ((byte*)) (word/dword/signed dword) $d01a
(byte) IRQ_RASTER#0 ? (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) IRQ_COLLISION_BG#0 ? (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) IRQ_COLLISION_SPRITE#0 ? (byte/signed byte/word/signed word/dword/signed dword) 4
(byte) IRQ_LIGHTPEN#0 ? (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) COLS#0 ? ((byte*)) (word/dword/signed dword) $d800
(byte*) CIA1_PORT_A#0 ? ((byte*)) (word/dword/signed dword) $dc00
(byte*) CIA1_PORT_B#0 ? ((byte*)) (word/dword/signed dword) $dc01
(byte*) CIA1_PORT_A_DDR#0 ? ((byte*)) (word/dword/signed dword) $dc02
(byte*) CIA1_PORT_B_DDR#0 ? ((byte*)) (word/dword/signed dword) $dc03
(byte*) CIA1_INTERRUPT#0 ? ((byte*)) (word/dword/signed dword) $dc0d
(byte) CIA_INTERRUPT_CLEAR#0 ? (byte/signed byte/word/signed word/dword/signed dword) $7f
(byte*) CIA2_PORT_A#0 ? ((byte*)) (word/dword/signed dword) $dd00
(byte*) CIA2_PORT_B#0 ? ((byte*)) (word/dword/signed dword) $dd01
(byte*) CIA2_PORT_A_DDR#0 ? ((byte*)) (word/dword/signed dword) $dd02
(byte*) CIA2_PORT_B_DDR#0 ? ((byte*)) (word/dword/signed dword) $dd03
(byte*) CIA2_INTERRUPT#0 ? ((byte*)) (word/dword/signed dword) $dd0d
(void()**) KERNEL_IRQ#0 ? ((void()**)) (word/signed word/dword/signed dword) $314
(void()**) HARDWARE_IRQ#0 ? ((void()**)) (word/dword/signed dword) $fffe
(byte) BLACK#0 ? (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) WHITE#0 ? (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) RED#0 ? (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) CYAN#0 ? (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) PURPLE#0 ? (byte/signed byte/word/signed word/dword/signed dword) 4
(byte) GREEN#0 ? (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) BLUE#0 ? (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) YELLOW#0 ? (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) ORANGE#0 ? (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) BROWN#0 ? (byte/signed byte/word/signed word/dword/signed dword) 9
(byte) PINK#0 ? (byte/signed byte/word/signed word/dword/signed dword) $a
(byte) DARK_GREY#0 ? (byte/signed byte/word/signed word/dword/signed dword) $b
(byte) GREY#0 ? (byte/signed byte/word/signed word/dword/signed dword) $c
(byte) LIGHT_GREEN#0 ? (byte/signed byte/word/signed word/dword/signed dword) $d
(byte) LIGHT_BLUE#0 ? (byte/signed byte/word/signed word/dword/signed dword) $e
(byte) LIGHT_GREY#0 ? (byte/signed byte/word/signed word/dword/signed dword) $f
(byte*) PROCPORT_DDR#0 ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) PROCPORT_DDR_MEMORY_MASK#0 (byte/signed byte/word/signed word/dword/signed dword) 7
(byte*) PROCPORT#0 ((byte*)) (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) PROCPORT_RAM_ALL#0 (byte/signed byte/word/signed word/dword/signed dword) $30
(byte) PROCPORT_RAM_IO#0 (byte/signed byte/word/signed word/dword/signed dword) $35
(byte) PROCPORT_RAM_CHARROM#0 (byte/signed byte/word/signed word/dword/signed dword) $31
(byte) PROCPORT_KERNEL_IO#0 (byte/signed byte/word/signed word/dword/signed dword) $36
(byte) PROCPORT_BASIC_KERNEL_IO#0 (byte/signed byte/word/signed word/dword/signed dword) $37
(byte*) CHARGEN#0 ((byte*)) (word/dword/signed dword) $d000
(word) SPRITE_PTRS#0 (word/signed word/dword/signed dword) $3f8
(byte*) SPRITES_XPOS#0 ((byte*)) (word/dword/signed dword) $d000
(byte*) SPRITES_YPOS#0 ((byte*)) (word/dword/signed dword) $d001
(byte*) SPRITES_XMSB#0 ((byte*)) (word/dword/signed dword) $d010
(byte*) RASTER#0 ((byte*)) (word/dword/signed dword) $d012
(byte*) SPRITES_ENABLE#0 ((byte*)) (word/dword/signed dword) $d015
(byte*) SPRITES_EXPAND_Y#0 ((byte*)) (word/dword/signed dword) $d017
(byte*) SPRITES_PRIORITY#0 ((byte*)) (word/dword/signed dword) $d01b
(byte*) SPRITES_MC#0 ((byte*)) (word/dword/signed dword) $d01c
(byte*) SPRITES_EXPAND_X#0 ((byte*)) (word/dword/signed dword) $d01d
(byte*) BORDERCOL#0 ((byte*)) (word/dword/signed dword) $d020
(byte*) BGCOL#0 ((byte*)) (word/dword/signed dword) $d021
(byte*) BGCOL1#0 ((byte*)) (word/dword/signed dword) $d021
(byte*) BGCOL2#0 ((byte*)) (word/dword/signed dword) $d022
(byte*) BGCOL3#0 ((byte*)) (word/dword/signed dword) $d023
(byte*) BGCOL4#0 ((byte*)) (word/dword/signed dword) $d024
(byte*) SPRITES_MC1#0 ((byte*)) (word/dword/signed dword) $d025
(byte*) SPRITES_MC2#0 ((byte*)) (word/dword/signed dword) $d026
(byte*) SPRITES_COLS#0 ((byte*)) (word/dword/signed dword) $d027
(byte*) VIC_CONTROL#0 ((byte*)) (word/dword/signed dword) $d011
(byte*) D011#0 ((byte*)) (word/dword/signed dword) $d011
(byte) VIC_RST8#0 (byte/word/signed word/dword/signed dword) $80
(byte) VIC_ECM#0 (byte/signed byte/word/signed word/dword/signed dword) $40
(byte) VIC_BMM#0 (byte/signed byte/word/signed word/dword/signed dword) $20
(byte) VIC_DEN#0 (byte/signed byte/word/signed word/dword/signed dword) $10
(byte) VIC_RSEL#0 (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) VIC_CONTROL2#0 ((byte*)) (word/dword/signed dword) $d016
(byte*) D016#0 ((byte*)) (word/dword/signed dword) $d016
(byte) VIC_MCM#0 (byte/signed byte/word/signed word/dword/signed dword) $10
(byte) VIC_CSEL#0 (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) D018#0 ((byte*)) (word/dword/signed dword) $d018
(byte*) VIC_MEMORY#0 ((byte*)) (word/dword/signed dword) $d018
(byte*) LIGHTPEN_X#0 ((byte*)) (word/dword/signed dword) $d013
(byte*) LIGHTPEN_Y#0 ((byte*)) (word/dword/signed dword) $d014
(byte*) IRQ_STATUS#0 ((byte*)) (word/dword/signed dword) $d019
(byte*) IRQ_ENABLE#0 ((byte*)) (word/dword/signed dword) $d01a
(byte) IRQ_RASTER#0 (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) IRQ_COLLISION_BG#0 (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) IRQ_COLLISION_SPRITE#0 (byte/signed byte/word/signed word/dword/signed dword) 4
(byte) IRQ_LIGHTPEN#0 (byte/signed byte/word/signed word/dword/signed dword) 8
(byte*) COLS#0 ((byte*)) (word/dword/signed dword) $d800
(byte*) CIA1_PORT_A#0 ((byte*)) (word/dword/signed dword) $dc00
(byte*) CIA1_PORT_B#0 ((byte*)) (word/dword/signed dword) $dc01
(byte*) CIA1_PORT_A_DDR#0 ((byte*)) (word/dword/signed dword) $dc02
(byte*) CIA1_PORT_B_DDR#0 ((byte*)) (word/dword/signed dword) $dc03
(byte*) CIA1_INTERRUPT#0 ((byte*)) (word/dword/signed dword) $dc0d
(byte) CIA_INTERRUPT_CLEAR#0 (byte/signed byte/word/signed word/dword/signed dword) $7f
(byte*) CIA2_PORT_A#0 ((byte*)) (word/dword/signed dword) $dd00
(byte*) CIA2_PORT_B#0 ((byte*)) (word/dword/signed dword) $dd01
(byte*) CIA2_PORT_A_DDR#0 ((byte*)) (word/dword/signed dword) $dd02
(byte*) CIA2_PORT_B_DDR#0 ((byte*)) (word/dword/signed dword) $dd03
(byte*) CIA2_INTERRUPT#0 ((byte*)) (word/dword/signed dword) $dd0d
(void()**) KERNEL_IRQ#0 ((void()**)) (word/signed word/dword/signed dword) $314
(void()**) HARDWARE_IRQ#0 ((void()**)) (word/dword/signed dword) $fffe
(byte) BLACK#0 (byte/signed byte/word/signed word/dword/signed dword) 0
(byte) WHITE#0 (byte/signed byte/word/signed word/dword/signed dword) 1
(byte) RED#0 (byte/signed byte/word/signed word/dword/signed dword) 2
(byte) CYAN#0 (byte/signed byte/word/signed word/dword/signed dword) 3
(byte) PURPLE#0 (byte/signed byte/word/signed word/dword/signed dword) 4
(byte) GREEN#0 (byte/signed byte/word/signed word/dword/signed dword) 5
(byte) BLUE#0 (byte/signed byte/word/signed word/dword/signed dword) 6
(byte) YELLOW#0 (byte/signed byte/word/signed word/dword/signed dword) 7
(byte) ORANGE#0 (byte/signed byte/word/signed word/dword/signed dword) 8
(byte) BROWN#0 (byte/signed byte/word/signed word/dword/signed dword) 9
(byte) PINK#0 (byte/signed byte/word/signed word/dword/signed dword) $a
(byte) DARK_GREY#0 (byte/signed byte/word/signed word/dword/signed dword) $b
(byte) GREY#0 (byte/signed byte/word/signed word/dword/signed dword) $c
(byte) LIGHT_GREEN#0 (byte/signed byte/word/signed word/dword/signed dword) $d
(byte) LIGHT_BLUE#0 (byte/signed byte/word/signed word/dword/signed dword) $e
(byte) LIGHT_GREY#0 (byte/signed byte/word/signed word/dword/signed dword) $f
to:@6
main: scope:[main] from @6
(word) main::xpos#0 ? (byte/word/signed word/dword/signed dword) $c8
(byte) main::s#0 ? (byte/signed byte/word/signed word/dword/signed dword) 0
(word) main::xpos#0 (byte/word/signed word/dword/signed dword) $c8
(byte) main::s#0 (byte/signed byte/word/signed word/dword/signed dword) 0
to:main::@1
main::@1: scope:[main] from main main::@3
(word) main::xpos#2 ? phi( main/(word) main::xpos#0 main::@3/(word) main::xpos#1 )
(byte) main::s#2 ? phi( main/(byte) main::s#0 main::@3/(byte) main::s#1 )
(byte) position_sprite::spriteno#0 ? (byte) main::s#2
(word) position_sprite::x#0 ? (word) main::xpos#2
(byte) position_sprite::y#0 ? (byte/signed byte/word/signed word/dword/signed dword) $32
(word) main::xpos#2 phi( main/(word) main::xpos#0 main::@3/(word) main::xpos#1 )
(byte) main::s#2 phi( main/(byte) main::s#0 main::@3/(byte) main::s#1 )
(byte) position_sprite::spriteno#0 (byte) main::s#2
(word) position_sprite::x#0 (word) main::xpos#2
(byte) position_sprite::y#0 (byte/signed byte/word/signed word/dword/signed dword) $32
call position_sprite
to:main::@3
main::@3: scope:[main] from main::@1
(byte) main::s#3 ? phi( main::@1/(byte) main::s#2 )
(word) main::xpos#3 ? phi( main::@1/(word) main::xpos#2 )
(word) main::xpos#1 ? (word) main::xpos#3 + (byte/signed byte/word/signed word/dword/signed dword) $a
(byte) main::s#1 ? (byte) main::s#3 + rangenext(0,7)
(bool~) main::$1 ? (byte) main::s#1 != rangelast(0,7)
(byte) main::s#3 phi( main::@1/(byte) main::s#2 )
(word) main::xpos#3 phi( main::@1/(word) main::xpos#2 )
(word) main::xpos#1 (word) main::xpos#3 + (byte/signed byte/word/signed word/dword/signed dword) $a
(byte) main::s#1 (byte) main::s#3 + rangenext(0,7)
(bool~) main::$1 (byte) main::s#1 != rangelast(0,7)
if((bool~) main::$1) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@3
return
to:@return
position_sprite: scope:[position_sprite] from main::@1
(word) position_sprite::x#1 ? phi( main::@1/(word) position_sprite::x#0 )
(byte) position_sprite::y#1 ? phi( main::@1/(byte) position_sprite::y#0 )
(byte) position_sprite::spriteno#1 ? phi( main::@1/(byte) position_sprite::spriteno#0 )
(byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#1 << (byte/signed byte/word/signed word/dword/signed dword) 1
*((byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (byte) position_sprite::y#1
(byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#1 << (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) position_sprite::$2 ? < (word) position_sprite::x#1
*((byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ? (byte~) position_sprite::$2
(bool~) position_sprite::$3 ? (word) position_sprite::x#1 > (byte/word/signed word/dword/signed dword) $ff
(word) position_sprite::x#1 phi( main::@1/(word) position_sprite::x#0 )
(byte) position_sprite::y#1 phi( main::@1/(byte) position_sprite::y#0 )
(byte) position_sprite::spriteno#1 phi( main::@1/(byte) position_sprite::spriteno#0 )
(byte~) position_sprite::$0 (byte) position_sprite::spriteno#1 << (byte/signed byte/word/signed word/dword/signed dword) 1
*((byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (byte) position_sprite::y#1
(byte~) position_sprite::$1 (byte) position_sprite::spriteno#1 << (byte/signed byte/word/signed word/dword/signed dword) 1
(byte~) position_sprite::$2 < (word) position_sprite::x#1
*((byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) (byte~) position_sprite::$2
(bool~) position_sprite::$3 (word) position_sprite::x#1 > (byte/word/signed word/dword/signed dword) $ff
if((bool~) position_sprite::$3) goto position_sprite::@1
to:position_sprite::@3
position_sprite::@1: scope:[position_sprite] from position_sprite
(byte) position_sprite::spriteno#2 ? phi( position_sprite/(byte) position_sprite::spriteno#1 )
(byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#2
*((byte*) SPRITES_XMSB#0) ? *((byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6
(byte) position_sprite::spriteno#2 phi( position_sprite/(byte) position_sprite::spriteno#1 )
(byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#2
*((byte*) SPRITES_XMSB#0) *((byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6
to:position_sprite::@return
position_sprite::@3: scope:[position_sprite] from position_sprite
(byte) position_sprite::spriteno#3 ? phi( position_sprite/(byte) position_sprite::spriteno#1 )
(byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#3
(byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff
*((byte*) SPRITES_XMSB#0) ? *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5
(byte) position_sprite::spriteno#3 phi( position_sprite/(byte) position_sprite::spriteno#1 )
(byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#3
(byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff
*((byte*) SPRITES_XMSB#0) *((byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5
to:position_sprite::@return
position_sprite::@return: scope:[position_sprite] from position_sprite::@1 position_sprite::@3
return
@ -436,7 +436,7 @@ Constant (const byte) main::s#0 = 0
Constant (const byte) position_sprite::y#0 = $32
Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization PassNEliminateUnusedVars
Resolved ranged next value main::s#1 ? ++ main::s#2 to ++
Resolved ranged next value main::s#1 ++ main::s#2 to ++
Resolved ranged comparison value if(main::s#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8
Inlining constant with var siblings (const word) main::xpos#0
Inlining constant with var siblings (const byte) main::s#0
@ -453,8 +453,8 @@ Calls in [] to main:2
Calls in [main] to position_sprite:8
Created 2 initial phi equivalence classes
Coalesced [13] main::s#4 ? main::s#1
Coalesced [14] main::xpos#4 ? main::xpos#1
Coalesced [13] main::s#4 main::s#1
Coalesced [14] main::xpos#4 main::xpos#1
Coalesced down to 2 phi equivalence classes
Culled Empty Block (label) main::@4
Renumbering block @6 to @1
@ -479,39 +479,39 @@ main: scope:[main] from @1
[4] phi()
to:main::@1
main::@1: scope:[main] from main main::@2
[5] (word) main::xpos#2 ? phi( main/(byte/word/signed word/dword/signed dword) $c8 main::@2/(word) main::xpos#1 )
[5] (byte) main::s#2 ? phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::s#1 )
[6] (byte) position_sprite::spriteno#0 ? (byte) main::s#2
[7] (word) position_sprite::x#0 ? (word) main::xpos#2
[5] (word) main::xpos#2 phi( main/(byte/word/signed word/dword/signed dword) $c8 main::@2/(word) main::xpos#1 )
[5] (byte) main::s#2 phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::s#1 )
[6] (byte) position_sprite::spriteno#0 (byte) main::s#2
[7] (word) position_sprite::x#0 (word) main::xpos#2
[8] call position_sprite
to:main::@2
main::@2: scope:[main] from main::@1
[9] (word) main::xpos#1 ? (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a
[10] (byte) main::s#1 ? ++ (byte) main::s#2
[9] (word) main::xpos#1 (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a
[10] (byte) main::s#1 ++ (byte) main::s#2
[11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1
to:main::@return
main::@return: scope:[main] from main::@2
[12] return
to:@return
position_sprite: scope:[position_sprite] from main::@1
[13] (byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1
[14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (const byte) position_sprite::y#0
[15] (byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1
[16] (byte~) position_sprite::$2 ? < (word) position_sprite::x#0
[17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ? (byte~) position_sprite::$2
[13] (byte~) position_sprite::$0 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1
[14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (const byte) position_sprite::y#0
[15] (byte~) position_sprite::$1 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1
[16] (byte~) position_sprite::$2 < (word) position_sprite::x#0
[17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) (byte~) position_sprite::$2
[18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) $ff) goto position_sprite::@1
to:position_sprite::@2
position_sprite::@2: scope:[position_sprite] from position_sprite
[19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0
[20] (byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff
[21] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5
[19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0
[20] (byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff
[21] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5
to:position_sprite::@return
position_sprite::@return: scope:[position_sprite] from position_sprite::@1 position_sprite::@2
[22] return
to:@return
position_sprite::@1: scope:[position_sprite] from position_sprite
[23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0
[24] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6
[23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0
[24] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6
to:position_sprite::@return
@ -697,10 +697,10 @@ main: {
jmp b1
//SEG17 main::@1
b1:
//SEG18 [6] (byte) position_sprite::spriteno#0 ? (byte) main::s#2 -- vbuz1=vbuz2
//SEG18 [6] (byte) position_sprite::spriteno#0 (byte) main::s#2 -- vbuz1=vbuz2
lda s
sta position_sprite.spriteno
//SEG19 [7] (word) position_sprite::x#0 ? (word) main::xpos#2 -- vwuz1=vwuz2
//SEG19 [7] (word) position_sprite::x#0 (word) main::xpos#2 -- vwuz1=vwuz2
lda xpos
sta position_sprite.x
lda xpos+1
@ -710,7 +710,7 @@ main: {
jmp b2
//SEG21 main::@2
b2:
//SEG22 [9] (word) main::xpos#1 ? (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vwuz1=vwuz1_plus_vbuc1
//SEG22 [9] (word) main::xpos#1 (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vwuz1=vwuz1_plus_vbuc1
lda #$a
clc
adc xpos
@ -718,7 +718,7 @@ main: {
bcc !+
inc xpos+1
!:
//SEG23 [10] (byte) main::s#1 ? ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1
//SEG23 [10] (byte) main::s#1 ++ (byte) main::s#2 -- vbuz1=_inc_vbuz1
inc s
//SEG24 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
lda #8
@ -742,22 +742,22 @@ position_sprite: {
.label _6 = $d
.label spriteno = 5
.label x = 6
//SEG28 [13] (byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1
//SEG28 [13] (byte~) position_sprite::$0 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1
lda spriteno
asl
sta _0
//SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuz1=vbuc2
//SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuz1=vbuc2
lda #y
ldy _0
sta SPRITES_YPOS,y
//SEG30 [15] (byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1
//SEG30 [15] (byte~) position_sprite::$1 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuz1=vbuz2_rol_1
lda spriteno
asl
sta _1
//SEG31 [16] (byte~) position_sprite::$2 ? < (word) position_sprite::x#0 -- vbuz1=_lo_vwuz2
//SEG31 [16] (byte~) position_sprite::$2 < (word) position_sprite::x#0 -- vbuz1=_lo_vwuz2
lda x
sta _2
//SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ? (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuz1=vbuz2
//SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuz1=vbuz2
lda _2
ldy _1
sta SPRITES_XPOS,y
@ -772,7 +772,7 @@ position_sprite: {
jmp b2
//SEG34 position_sprite::@2
b2:
//SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2
//SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2
lda #1
ldy spriteno
cpy #0
@ -783,11 +783,11 @@ position_sprite: {
bne !-
!e:
sta _4
//SEG36 [20] (byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuz2_bxor_vbuc1
//SEG36 [20] (byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff -- vbuz1=vbuz2_bxor_vbuc1
lda _4
eor #$ff
sta _5
//SEG37 [21] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1
//SEG37 [21] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuz1
lda SPRITES_XMSB
and _5
sta SPRITES_XMSB
@ -798,7 +798,7 @@ position_sprite: {
rts
//SEG40 position_sprite::@1
b1:
//SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2
//SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuz1=vbuc1_rol_vbuz2
lda #1
ldy spriteno
cpy #0
@ -809,7 +809,7 @@ position_sprite: {
bne !-
!e:
sta _6
//SEG42 [24] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
//SEG42 [24] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuz1
lda SPRITES_XMSB
ora _6
sta SPRITES_XMSB
@ -817,33 +817,33 @@ position_sprite: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [7] (word) position_sprite::x#0 ? (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [7] (word) position_sprite::x#0 (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::s#2 main::s#1 ]
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ position_sprite::spriteno#0 ]
Statement [9] (word) main::xpos#1 ? (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] ) always clobbers reg byte a
Statement [13] (byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ) always clobbers reg byte a
Statement [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [15] (byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a
Statement [16] (byte~) position_sprite::$2 ? < (word) position_sprite::x#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ) always clobbers reg byte a
Statement [9] (word) main::xpos#1 (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] ) always clobbers reg byte a
Statement [13] (byte~) position_sprite::$0 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ) always clobbers reg byte a
Statement [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [15] (byte~) position_sprite::$1 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a
Statement [16] (byte~) position_sprite::$2 < (word) position_sprite::x#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ) always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ position_sprite::$1 ]
Statement [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) $ff) goto position_sprite::@1 [ position_sprite::spriteno#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 ] ) always clobbers reg byte a
Statement [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] ) always clobbers reg byte a
Statement [20] (byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] ) always clobbers reg byte a
Statement [21] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] ) always clobbers reg byte a
Statement [24] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [7] (word) position_sprite::x#0 ? (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [9] (word) main::xpos#1 ? (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] ) always clobbers reg byte a
Statement [13] (byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ) always clobbers reg byte a
Statement [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [15] (byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a
Statement [16] (byte~) position_sprite::$2 ? < (word) position_sprite::x#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ) always clobbers reg byte a
Statement [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] ) always clobbers reg byte a
Statement [20] (byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] ) always clobbers reg byte a
Statement [21] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] ) always clobbers reg byte a
Statement [24] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [7] (word) position_sprite::x#0 (word) main::xpos#2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [9] (word) main::xpos#1 (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a [ main::s#2 main::xpos#1 ] ( main:2 [ main::s#2 main::xpos#1 ] ) always clobbers reg byte a
Statement [13] (byte~) position_sprite::$0 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$0 ] ) always clobbers reg byte a
Statement [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (const byte) position_sprite::y#0 [ position_sprite::spriteno#0 position_sprite::x#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 ] ) always clobbers reg byte a
Statement [15] (byte~) position_sprite::$1 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 ] ) always clobbers reg byte a
Statement [16] (byte~) position_sprite::$2 < (word) position_sprite::x#0 [ position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 position_sprite::x#0 position_sprite::$1 position_sprite::$2 ] ) always clobbers reg byte a
Statement [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) $ff) goto position_sprite::@1 [ position_sprite::spriteno#0 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::spriteno#0 ] ) always clobbers reg byte a
Statement [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] ) always clobbers reg byte a
Statement [20] (byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] ) always clobbers reg byte a
Statement [21] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] ) always clobbers reg byte a
Statement [24] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$4 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$4 ] ) always clobbers reg byte a
Statement [20] (byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff [ position_sprite::$5 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$5 ] ) always clobbers reg byte a
Statement [21] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Statement [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 [ position_sprite::$6 ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 position_sprite::$6 ] ) always clobbers reg byte a
Statement [24] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 [ ] ( main:2::position_sprite:8 [ main::s#2 main::xpos#2 ] ) always clobbers reg byte a
Potential registers zp ZP_BYTE:2 [ main::s#2 main::s#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,
Potential registers zp ZP_WORD:3 [ main::xpos#2 main::xpos#1 ] : zp ZP_WORD:3 ,
Potential registers zp ZP_BYTE:5 [ position_sprite::spriteno#0 ] : zp ZP_BYTE:5 , reg byte x , reg byte y ,
@ -921,15 +921,15 @@ main: {
jmp b1
//SEG17 main::@1
b1:
//SEG18 [6] (byte) position_sprite::spriteno#0 ? (byte) main::s#2 -- vbuz1=vbuxx
//SEG18 [6] (byte) position_sprite::spriteno#0 (byte) main::s#2 -- vbuz1=vbuxx
stx position_sprite.spriteno
//SEG19 [7] (word) position_sprite::x#0 ? (word) main::xpos#2
//SEG19 [7] (word) position_sprite::x#0 (word) main::xpos#2
//SEG20 [8] call position_sprite
jsr position_sprite
jmp b2
//SEG21 main::@2
b2:
//SEG22 [9] (word) main::xpos#1 ? (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vwuz1=vwuz1_plus_vbuc1
//SEG22 [9] (word) main::xpos#1 (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vwuz1=vwuz1_plus_vbuc1
lda #$a
clc
adc xpos
@ -937,7 +937,7 @@ main: {
bcc !+
inc xpos+1
!:
//SEG23 [10] (byte) main::s#1 ? ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx
//SEG23 [10] (byte) main::s#1 ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx
inx
//SEG24 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
cpx #8
@ -954,20 +954,20 @@ position_sprite: {
.const y = $32
.label spriteno = 4
.label x = 2
//SEG28 [13] (byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1
//SEG28 [13] (byte~) position_sprite::$0 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1
lda spriteno
asl
//SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2
//SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2
tay
lda #y
sta SPRITES_YPOS,y
//SEG30 [15] (byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1
//SEG30 [15] (byte~) position_sprite::$1 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1
lda spriteno
asl
tay
//SEG31 [16] (byte~) position_sprite::$2 ? < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1
//SEG31 [16] (byte~) position_sprite::$2 < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1
lda x
//SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ? (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa
//SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa
sta SPRITES_XPOS,y
//SEG33 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) $ff) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1
lda x+1
@ -980,7 +980,7 @@ position_sprite: {
jmp b2
//SEG34 position_sprite::@2
b2:
//SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
//SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
lda #1
ldy spriteno
cpy #0
@ -990,9 +990,9 @@ position_sprite: {
dey
bne !-
!e:
//SEG36 [20] (byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff -- vbuaa=vbuaa_bxor_vbuc1
//SEG36 [20] (byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff -- vbuaa=vbuaa_bxor_vbuc1
eor #$ff
//SEG37 [21] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
//SEG37 [21] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
and SPRITES_XMSB
sta SPRITES_XMSB
jmp breturn
@ -1002,7 +1002,7 @@ position_sprite: {
rts
//SEG40 position_sprite::@1
b1:
//SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
//SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
lda #1
ldy spriteno
cpy #0
@ -1012,7 +1012,7 @@ position_sprite: {
dey
bne !-
!e:
//SEG42 [24] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa
//SEG42 [24] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa
ora SPRITES_XMSB
sta SPRITES_XMSB
jmp breturn
@ -1212,13 +1212,13 @@ main: {
//SEG16 [5] phi (byte) main::s#2 = (byte) main::s#1 [phi:main::@2->main::@1#1] -- register_copy
//SEG17 main::@1
b1:
//SEG18 [6] (byte) position_sprite::spriteno#0 ? (byte) main::s#2 -- vbuz1=vbuxx
//SEG18 [6] (byte) position_sprite::spriteno#0 (byte) main::s#2 -- vbuz1=vbuxx
stx position_sprite.spriteno
//SEG19 [7] (word) position_sprite::x#0 ? (word) main::xpos#2
//SEG19 [7] (word) position_sprite::x#0 (word) main::xpos#2
//SEG20 [8] call position_sprite
jsr position_sprite
//SEG21 main::@2
//SEG22 [9] (word) main::xpos#1 ? (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vwuz1=vwuz1_plus_vbuc1
//SEG22 [9] (word) main::xpos#1 (word) main::xpos#2 + (byte/signed byte/word/signed word/dword/signed dword) $a -- vwuz1=vwuz1_plus_vbuc1
lda #$a
clc
adc xpos
@ -1226,7 +1226,7 @@ main: {
bcc !+
inc xpos+1
!:
//SEG23 [10] (byte) main::s#1 ? ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx
//SEG23 [10] (byte) main::s#1 ++ (byte) main::s#2 -- vbuxx=_inc_vbuxx
inx
//SEG24 [11] if((byte) main::s#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
cpx #8
@ -1241,20 +1241,20 @@ position_sprite: {
.const y = $32
.label spriteno = 4
.label x = 2
//SEG28 [13] (byte~) position_sprite::$0 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1
//SEG28 [13] (byte~) position_sprite::$0 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuaa=vbuz1_rol_1
lda spriteno
asl
//SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) ? (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2
//SEG29 [14] *((const byte*) SPRITES_YPOS#0 + (byte~) position_sprite::$0) (const byte) position_sprite::y#0 -- pbuc1_derefidx_vbuaa=vbuc2
tay
lda #y
sta SPRITES_YPOS,y
//SEG30 [15] (byte~) position_sprite::$1 ? (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1
//SEG30 [15] (byte~) position_sprite::$1 (byte) position_sprite::spriteno#0 << (byte/signed byte/word/signed word/dword/signed dword) 1 -- vbuyy=vbuz1_rol_1
lda spriteno
asl
tay
//SEG31 [16] (byte~) position_sprite::$2 ? < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1
//SEG31 [16] (byte~) position_sprite::$2 < (word) position_sprite::x#0 -- vbuaa=_lo_vwuz1
lda x
//SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) ? (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa
//SEG32 [17] *((const byte*) SPRITES_XPOS#0 + (byte~) position_sprite::$1) (byte~) position_sprite::$2 -- pbuc1_derefidx_vbuyy=vbuaa
sta SPRITES_XPOS,y
//SEG33 [18] if((word) position_sprite::x#0>(byte/word/signed word/dword/signed dword) $ff) goto position_sprite::@1 -- vwuz1_gt_vbuc1_then_la1
lda x+1
@ -1265,7 +1265,7 @@ position_sprite: {
bcs b1
!:
//SEG34 position_sprite::@2
//SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
//SEG35 [19] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
lda #1
ldy spriteno
cpy #0
@ -1275,9 +1275,9 @@ position_sprite: {
dey
bne !-
!e:
//SEG36 [20] (byte/word/dword~) position_sprite::$5 ? (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff -- vbuaa=vbuaa_bxor_vbuc1
//SEG36 [20] (byte/word/dword~) position_sprite::$5 (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$4 ^ (byte/word/signed word/dword/signed dword) $ff -- vbuaa=vbuaa_bxor_vbuc1
eor #$ff
//SEG37 [21] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
//SEG37 [21] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) & (byte/word/dword~) position_sprite::$5 -- _deref_pbuc1=_deref_pbuc1_band_vbuaa
and SPRITES_XMSB
sta SPRITES_XMSB
//SEG38 position_sprite::@return
@ -1285,7 +1285,7 @@ position_sprite: {
rts
//SEG40 position_sprite::@1
b1:
//SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 ? (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
//SEG41 [23] (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 (byte/signed byte/word/signed word/dword/signed dword) 1 << (byte) position_sprite::spriteno#0 -- vbuaa=vbuc1_rol_vbuz1
lda #1
ldy spriteno
cpy #0
@ -1295,7 +1295,7 @@ position_sprite: {
dey
bne !-
!e:
//SEG42 [24] *((const byte*) SPRITES_XMSB#0) ? *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa
//SEG42 [24] *((const byte*) SPRITES_XMSB#0) *((const byte*) SPRITES_XMSB#0) | (byte/signed byte/word/signed word/dword/signed dword~) position_sprite::$6 -- _deref_pbuc1=_deref_pbuc1_bor_vbuaa
ora SPRITES_XMSB
sta SPRITES_XMSB
rts

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,24 +6,24 @@ CONTROL FLOW GRAPH SSA
@begin: scope:[] from
to:@1
main: scope:[main] from @1
(byte[]) main::bs#0 ? { (byte) 'c', (byte) 'm' }
(byte) main::b#0 ? (byte/signed byte/word/signed word/dword/signed dword) 4
(word) main::w#0 ? { (byte) main::b#0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte/signed byte/word/signed word/dword/signed dword*/word~) main::$0 ? { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1 } + (word) main::w#0
(byte/signed byte/word/signed word/dword/signed dword*/word~) main::$1 ? (byte/signed byte/word/signed word/dword/signed dword*/word~) main::$0 + { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(word) main::w2#0 ? (byte/signed byte/word/signed word/dword/signed dword*/word~) main::$1
(byte*) main::sc#0 ? ((byte*)) (word) main::w2#0
*((byte*) main::sc#0) ? *((byte[]) main::bs#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
(byte*) main::pos#0 ? ((byte*)) (word/signed word/dword/signed dword) $501
(byte*) main::bgcol#0 ? ((byte*)) (word/dword/signed dword) $d021
(bool~) main::$2 ? *((byte*) main::pos#0) == (byte) 'm'
(byte[]) main::bs#0 { (byte) 'c', (byte) 'm' }
(byte) main::b#0 (byte/signed byte/word/signed word/dword/signed dword) 4
(word) main::w#0 { (byte) main::b#0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(byte/signed byte/word/signed word/dword/signed dword*/word~) main::$0 { (byte/signed byte/word/signed word/dword/signed dword) 1, (byte/signed byte/word/signed word/dword/signed dword) 1 } + (word) main::w#0
(byte/signed byte/word/signed word/dword/signed dword*/word~) main::$1 (byte/signed byte/word/signed word/dword/signed dword*/word~) main::$0 + { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 }
(word) main::w2#0 (byte/signed byte/word/signed word/dword/signed dword*/word~) main::$1
(byte*) main::sc#0 ((byte*)) (word) main::w2#0
*((byte*) main::sc#0) *((byte[]) main::bs#0 + (byte/signed byte/word/signed word/dword/signed dword) 1)
(byte*) main::pos#0 ((byte*)) (word/signed word/dword/signed dword) $501
(byte*) main::bgcol#0 ((byte*)) (word/dword/signed dword) $d021
(bool~) main::$2 *((byte*) main::pos#0) == (byte) 'm'
if((bool~) main::$2) goto main::@1
to:main::@3
main::@1: scope:[main] from main
*((byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5
*((byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 5
to:main::@return
main::@3: scope:[main] from main
*((byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2
*((byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 2
to:main::@return
main::@return: scope:[main] from main::@1 main::@3
return
@ -75,15 +75,15 @@ Constant (const byte*) main::bgcol#0 = ((byte*))$d021
Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in *(main::bs#0+1)
Successful SSA optimization Pass2ConstantAdditionElimination
Fixing inline constructor with main::$3 ? main::b#0 w= 0
Fixing inline constructor with main::$4 ? 1 w= 1
Fixing inline constructor with main::$5 ? 0 w= 0
Fixing inline constructor with main::$3 main::b#0 w= 0
Fixing inline constructor with main::$4 1 w= 1
Fixing inline constructor with main::$5 0 w= 0
Successful SSA optimization Pass2FixInlineConstructors
Inferred type updated to word/signed word/dword/signed dword in (word~) main::$3 ? (const byte) main::b#0 w= (byte/signed byte/word/signed word/dword/signed dword) 0
Inferred type updated to word/signed word/dword/signed dword in (word~) main::$4 ? (byte/signed byte/word/signed word/dword/signed dword) 1 w= (byte/signed byte/word/signed word/dword/signed dword) 1
Inferred type updated to word/signed dword/dword in [1] (byte/signed byte/word/signed word/dword/signed dword*/word~) main::$0 ? (word/signed word/dword/signed dword~) main::$4 + (word) main::w#0
Inferred type updated to byte/signed byte/word/signed word/dword/signed dword in (word~) main::$5 ? (byte/signed byte/word/signed word/dword/signed dword) 0 w= (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating Noop Cast (byte*) main::sc#0 ? ((byte*)) (word) main::w2#0
Inferred type updated to word/signed word/dword/signed dword in (word~) main::$3 (const byte) main::b#0 w= (byte/signed byte/word/signed word/dword/signed dword) 0
Inferred type updated to word/signed word/dword/signed dword in (word~) main::$4 (byte/signed byte/word/signed word/dword/signed dword) 1 w= (byte/signed byte/word/signed word/dword/signed dword) 1
Inferred type updated to word/signed dword/dword in [1] (byte/signed byte/word/signed word/dword/signed dword*/word~) main::$0 (word/signed word/dword/signed dword~) main::$4 + (word) main::w#0
Inferred type updated to byte/signed byte/word/signed word/dword/signed dword in (word~) main::$5 (byte/signed byte/word/signed word/dword/signed dword) 0 w= (byte/signed byte/word/signed word/dword/signed dword) 0
Eliminating Noop Cast (byte*) main::sc#0 ((byte*)) (word) main::w2#0
Successful SSA optimization Pass2NopCastElimination
Alias (word) main::w#0 = (word/signed word/dword/signed dword~) main::$3
Successful SSA optimization Pass2AliasElimination
@ -126,17 +126,17 @@ FINAL CONTROL FLOW GRAPH
@end: scope:[] from @1
[3] phi()
main: scope:[main] from @1
[4] *((byte*)(const word) main::w2#0) ? *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1)
[4] *((byte*)(const word) main::w2#0) *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1)
[5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1
to:main::@2
main::@2: scope:[main] from main
[6] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2
[6] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 2
to:main::@return
main::@return: scope:[main] from main::@1 main::@2
[7] return
to:@return
main::@1: scope:[main] from main
[8] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5
[8] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 5
to:main::@return
@ -183,7 +183,7 @@ main: {
.label bgcol = $d021
.const w = b*$100
.const w2 = 1*$100+1+w+0
//SEG10 [4] *((byte*)(const word) main::w2#0) ? *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2
//SEG10 [4] *((byte*)(const word) main::w2#0) *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2
// implicit cast to (byte*)
lda bs+1
sta w2
@ -194,7 +194,7 @@ main: {
jmp b2
//SEG12 main::@2
b2:
//SEG13 [6] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
//SEG13 [6] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
lda #2
sta bgcol
jmp breturn
@ -204,7 +204,7 @@ main: {
rts
//SEG16 main::@1
b1:
//SEG17 [8] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
//SEG17 [8] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
lda #5
sta bgcol
jmp breturn
@ -212,10 +212,10 @@ main: {
}
REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((byte*)(const word) main::w2#0) ? *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [4] *((byte*)(const word) main::w2#0) *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [5] if(*((const byte*) main::pos#0)==(byte) 'm') goto main::@1 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [8] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [6] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2 [ ] ) always clobbers reg byte a
Statement [8] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
REGISTER UPLIFT SCOPES
Uplift Scope [main]
@ -254,7 +254,7 @@ main: {
.label bgcol = $d021
.const w = b*$100
.const w2 = 1*$100+1+w+0
//SEG10 [4] *((byte*)(const word) main::w2#0) ? *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2
//SEG10 [4] *((byte*)(const word) main::w2#0) *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2
// implicit cast to (byte*)
lda bs+1
sta w2
@ -265,7 +265,7 @@ main: {
jmp b2
//SEG12 main::@2
b2:
//SEG13 [6] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
//SEG13 [6] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
lda #2
sta bgcol
jmp breturn
@ -275,7 +275,7 @@ main: {
rts
//SEG16 main::@1
b1:
//SEG17 [8] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
//SEG17 [8] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
lda #5
sta bgcol
jmp breturn
@ -352,7 +352,7 @@ main: {
.label bgcol = $d021
.const w = b*$100
.const w2 = 1*$100+1+w+0
//SEG10 [4] *((byte*)(const word) main::w2#0) ? *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2
//SEG10 [4] *((byte*)(const word) main::w2#0) *((const byte[]) main::bs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -- _deref_pbuc1=_deref_pbuc2
// implicit cast to (byte*)
lda bs+1
sta w2
@ -361,7 +361,7 @@ main: {
cmp pos
beq b1
//SEG12 main::@2
//SEG13 [6] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
//SEG13 [6] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 2 -- _deref_pbuc1=vbuc2
lda #2
sta bgcol
//SEG14 main::@return
@ -369,7 +369,7 @@ main: {
rts
//SEG16 main::@1
b1:
//SEG17 [8] *((const byte*) main::bgcol#0) ? (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
//SEG17 [8] *((const byte*) main::bgcol#0) (byte/signed byte/word/signed word/dword/signed dword) 5 -- _deref_pbuc1=vbuc2
lda #5
sta bgcol
rts

File diff suppressed because it is too large Load Diff