mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-03-08 17:30:33 +00:00
Added test for direct increment of constant numberic pointer ++*$d020;
This commit is contained in:
parent
788f3d63a2
commit
5ed20ccc76
@ -259,6 +259,13 @@ public class AsmFragmentSignature {
|
|||||||
return bind(deref.getPointer()) + "_derefidx_" + bind(deref.getIndex());
|
return bind(deref.getPointer()) + "_derefidx_" + bind(deref.getIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (value instanceof VariableRef) {
|
||||||
|
value = program.getSymbolInfos().getVariable((VariableRef) value);
|
||||||
|
}
|
||||||
|
if (value instanceof ConstantRef) {
|
||||||
|
value = program.getScope().getConstant((ConstantRef) value);
|
||||||
|
}
|
||||||
|
|
||||||
// Find value if it is already bound
|
// Find value if it is already bound
|
||||||
for (String name : bindings.keySet()) {
|
for (String name : bindings.keySet()) {
|
||||||
Value bound = bindings.get(name);
|
Value bound = bindings.get(name);
|
||||||
@ -266,12 +273,6 @@ public class AsmFragmentSignature {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (value instanceof VariableRef) {
|
|
||||||
value = program.getSymbolInfos().getVariable((VariableRef) value);
|
|
||||||
}
|
|
||||||
if (value instanceof ConstantRef) {
|
|
||||||
value = program.getScope().getConstant((ConstantRef) value);
|
|
||||||
}
|
|
||||||
if (value instanceof Variable) {
|
if (value instanceof Variable) {
|
||||||
Variable variable = (Variable) value;
|
Variable variable = (Variable) value;
|
||||||
Registers.Register register = variable.getAllocation();
|
Registers.Register register = variable.getAllocation();
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
byte* screen = $0400;
|
|
||||||
// RValue pointer expression (constant)
|
// RValue pointer expression (constant)
|
||||||
|
byte* screen = $0400;
|
||||||
byte a = *(screen+80);
|
byte a = *(screen+80);
|
||||||
|
|
||||||
// RValue pointer expression (variable)
|
// RValue pointer expression (variable)
|
||||||
@ -27,7 +27,9 @@ void main() {
|
|||||||
++*$d020;
|
++*$d020;
|
||||||
--*($d000+$21);
|
--*($d000+$21);
|
||||||
|
|
||||||
|
// Increment on a const named pointer
|
||||||
|
byte* BGCOL = $d020;
|
||||||
|
++*BGCOL;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -4,6 +4,7 @@
|
|||||||
jsr main
|
jsr main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -52,5 +53,6 @@ main: {
|
|||||||
bne b2
|
bne b2
|
||||||
inc $d020
|
inc $d020
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
|
inc BGCOL
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,8 @@ main::@2: scope:[main] from main::@2 main::@3
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
[15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] )
|
[15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] )
|
||||||
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] )
|
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] )
|
||||||
|
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] )
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
[17] return [ ] ( main:0 [ ] )
|
[18] return [ ] ( main:0 [ ] )
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
|
|
||||||
byte* screen = $0400;
|
|
||||||
// RValue pointer expression (constant)
|
// RValue pointer expression (constant)
|
||||||
|
byte* screen = $0400;
|
||||||
byte a = *(screen+80);
|
byte a = *(screen+80);
|
||||||
|
|
||||||
// RValue pointer expression (variable)
|
// RValue pointer expression (variable)
|
||||||
@ -27,12 +27,15 @@ void main() {
|
|||||||
++*$d020;
|
++*$d020;
|
||||||
--*($d000+$21);
|
--*($d000+$21);
|
||||||
|
|
||||||
|
// Increment on a const named pointer
|
||||||
|
byte* BGCOL = $d020;
|
||||||
|
++*BGCOL;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
Adding pre/post-modifier *((word) 53280) ← ++ *((word) 53280)
|
Adding pre/post-modifier *((word) 53280) ← ++ *((word) 53280)
|
||||||
Adding pre/post-modifier *((var) main::$13) ← -- *((var) main::$13)
|
Adding pre/post-modifier *((var) main::$13) ← -- *((var) main::$13)
|
||||||
|
Adding pre/post-modifier *((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
|
||||||
PROGRAM
|
PROGRAM
|
||||||
proc (void()) main()
|
proc (void()) main()
|
||||||
(byte*) main::screen ← (word) 1024
|
(byte*) main::screen ← (word) 1024
|
||||||
@ -68,6 +71,8 @@ main::@2:
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
|
||||||
main::@return:
|
main::@return:
|
||||||
return
|
return
|
||||||
endproc // main()
|
endproc // main()
|
||||||
@ -94,6 +99,7 @@ SYMBOLS
|
|||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@2
|
(label) main::@2
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
|
(byte*) main::BGCOL
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::j
|
(byte) main::j
|
||||||
@ -143,6 +149,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -197,6 +205,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL) ← ++ *((byte*) main::BGCOL)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -257,6 +267,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -316,6 +328,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -354,6 +368,8 @@ INITIAL SSA SYMBOL TABLE
|
|||||||
(label) main::@3
|
(label) main::@3
|
||||||
(label) main::@4
|
(label) main::@4
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
|
(byte*) main::BGCOL
|
||||||
|
(byte*) main::BGCOL#0
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#0
|
(byte) main::a#0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
@ -422,6 +438,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -481,6 +499,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -540,6 +560,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -596,6 +618,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -650,6 +674,8 @@ main::@4: scope:[main] from main::@2
|
|||||||
*((word~) main::$13) ← -- *((word~) main::$13)
|
*((word~) main::$13) ← -- *((word~) main::$13)
|
||||||
(word~) main::$14 ← (word) 53248 + (byte) 33
|
(word~) main::$14 ← (word) 53248 + (byte) 33
|
||||||
(word~) main::$15 ← (word) 53248 + (byte) 33
|
(word~) main::$15 ← (word) 53248 + (byte) 33
|
||||||
|
(byte*) main::BGCOL#0 ← (word) 53280
|
||||||
|
*((byte*) main::BGCOL#0) ← ++ *((byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -665,6 +691,7 @@ Constant (const byte) main::j#0 = 0
|
|||||||
Constant (const word) main::$13 = 53248+33
|
Constant (const word) main::$13 = 53248+33
|
||||||
Constant (const word) main::$14 = 53248+33
|
Constant (const word) main::$14 = 53248+33
|
||||||
Constant (const word) main::$15 = 53248+33
|
Constant (const word) main::$15 = 53248+33
|
||||||
|
Constant (const byte*) main::BGCOL#0 = 53280
|
||||||
Succesful SSA optimization Pass2ConstantIdentification
|
Succesful SSA optimization Pass2ConstantIdentification
|
||||||
CONTROL FLOW GRAPH
|
CONTROL FLOW GRAPH
|
||||||
@begin: scope:[] from
|
@begin: scope:[] from
|
||||||
@ -702,6 +729,7 @@ main::@2: scope:[main] from main::@2 main::@3
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
*((word) 53280) ← ++ *((word) 53280)
|
*((word) 53280) ← ++ *((word) 53280)
|
||||||
*((const word) main::$13) ← -- *((const word) main::$13)
|
*((const word) main::$13) ← -- *((const word) main::$13)
|
||||||
|
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -748,6 +776,7 @@ main::@2: scope:[main] from main::@2 main::@3
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
*((word) 53280) ← ++ *((word) 53280)
|
*((word) 53280) ← ++ *((word) 53280)
|
||||||
*((const word) main::$13) ← -- *((const word) main::$13)
|
*((const word) main::$13) ← -- *((const word) main::$13)
|
||||||
|
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -810,6 +839,7 @@ main::@2: scope:[main] from main::@2 main::@3
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
*((word) 53280) ← ++ *((word) 53280)
|
*((word) 53280) ← ++ *((word) 53280)
|
||||||
*((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33)
|
*((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33)
|
||||||
|
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -832,6 +862,8 @@ FINAL SYMBOL TABLE
|
|||||||
(label) main::@3
|
(label) main::@3
|
||||||
(label) main::@4
|
(label) main::@4
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
|
(byte*) main::BGCOL
|
||||||
|
(const byte*) main::BGCOL#0 = (word) 53280
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#0
|
(byte) main::a#0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
@ -881,6 +913,7 @@ main::@2: scope:[main] from main::@3 main::@6
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
*((word) 53280) ← ++ *((word) 53280)
|
*((word) 53280) ← ++ *((word) 53280)
|
||||||
*((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33)
|
*((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33)
|
||||||
|
*((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0)
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
return
|
return
|
||||||
@ -930,20 +963,21 @@ main::@2: scope:[main] from main::@3 main::@6
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
[15] *((word) 53280) ← ++ *((word) 53280) [ ]
|
[15] *((word) 53280) ← ++ *((word) 53280) [ ]
|
||||||
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ]
|
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ]
|
||||||
|
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ]
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
[17] return [ ]
|
[18] return [ ]
|
||||||
to:@return
|
to:@return
|
||||||
main::@6: scope:[main] from main::@2
|
main::@6: scope:[main] from main::@2
|
||||||
[18] (byte~) main::j#3 ← (byte) main::j#1 [ main::j#3 ]
|
[19] (byte~) main::j#3 ← (byte) main::j#1 [ main::j#3 ]
|
||||||
to:main::@2
|
to:main::@2
|
||||||
main::@5: scope:[main] from main::@1
|
main::@5: scope:[main] from main::@1
|
||||||
[19] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ]
|
[20] (byte~) main::i#3 ← (byte) main::i#1 [ main::i#3 ]
|
||||||
to:main::@1
|
to:main::@1
|
||||||
|
|
||||||
Created 2 initial phi equivalence classes
|
Created 2 initial phi equivalence classes
|
||||||
Coalesced [18] main::j#3 ← main::j#1
|
Coalesced [19] main::j#3 ← main::j#1
|
||||||
Coalesced [19] main::i#3 ← main::i#1
|
Coalesced [20] main::i#3 ← main::i#1
|
||||||
Coalesced down to 2 phi equivalence classes
|
Coalesced down to 2 phi equivalence classes
|
||||||
Culled Empty Block (label) main::@6
|
Culled Empty Block (label) main::@6
|
||||||
Culled Empty Block (label) main::@5
|
Culled Empty Block (label) main::@5
|
||||||
@ -983,9 +1017,10 @@ main::@2: scope:[main] from main::@2 main::@3
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
[15] *((word) 53280) ← ++ *((word) 53280) [ ]
|
[15] *((word) 53280) ← ++ *((word) 53280) [ ]
|
||||||
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ]
|
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ]
|
||||||
|
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ]
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
[17] return [ ]
|
[18] return [ ]
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
CONTROL FLOW GRAPH - PHI MEM COALESCED
|
CONTROL FLOW GRAPH - PHI MEM COALESCED
|
||||||
@ -1020,9 +1055,10 @@ main::@2: scope:[main] from main::@2 main::@3
|
|||||||
main::@4: scope:[main] from main::@2
|
main::@4: scope:[main] from main::@2
|
||||||
[15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] )
|
[15] *((word) 53280) ← ++ *((word) 53280) [ ] ( main:0 [ ] )
|
||||||
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] )
|
[16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] )
|
||||||
|
[17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] )
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@4
|
main::@return: scope:[main] from main::@4
|
||||||
[17] return [ ] ( main:0 [ ] )
|
[18] return [ ] ( main:0 [ ] )
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
DOMINATORS
|
DOMINATORS
|
||||||
@ -1058,6 +1094,7 @@ VARIABLE REGISTER WEIGHTS
|
|||||||
(byte*~) main::$11 11.0
|
(byte*~) main::$11 11.0
|
||||||
(byte*~) main::$2 11.0
|
(byte*~) main::$2 11.0
|
||||||
(byte*~) main::$9 11.0
|
(byte*~) main::$9 11.0
|
||||||
|
(byte*) main::BGCOL
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#0 20.0
|
(byte) main::a#0 20.0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
@ -1108,6 +1145,7 @@ bend:
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 5
|
.label _2 = 5
|
||||||
.label _9 = 7
|
.label _9 = 7
|
||||||
@ -1204,10 +1242,12 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
|
inc BGCOL
|
||||||
jmp breturn
|
jmp breturn
|
||||||
//SEG33 main::@return
|
//SEG34 main::@return
|
||||||
breturn:
|
breturn:
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1254,8 +1294,8 @@ REGISTER UPLIFT SCOPES
|
|||||||
Uplift Scope [main] 31.17: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 27.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 20: zp ZP_BYTE:4 [ main::a#0 ] 11: zp ZP_PTR_BYTE:5 [ main::$2 ] 11: zp ZP_PTR_BYTE:7 [ main::$9 ] 11: zp ZP_PTR_BYTE:9 [ main::$11 ]
|
Uplift Scope [main] 31.17: zp ZP_BYTE:2 [ main::i#2 main::i#1 ] 27.5: zp ZP_BYTE:3 [ main::j#2 main::j#1 ] 20: zp ZP_BYTE:4 [ main::a#0 ] 11: zp ZP_PTR_BYTE:5 [ main::$2 ] 11: zp ZP_PTR_BYTE:7 [ main::$9 ] 11: zp ZP_PTR_BYTE:9 [ main::$11 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 1190 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] reg byte a [ main::a#0 ] zp ZP_PTR_BYTE:5 [ main::$2 ] zp ZP_PTR_BYTE:7 [ main::$9 ] zp ZP_PTR_BYTE:9 [ main::$11 ]
|
Uplifting [main] best 1196 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::j#2 main::j#1 ] reg byte a [ main::a#0 ] zp ZP_PTR_BYTE:5 [ main::$2 ] zp ZP_PTR_BYTE:7 [ main::$9 ] zp ZP_PTR_BYTE:9 [ main::$11 ]
|
||||||
Uplifting [] best 1190 combination
|
Uplifting [] best 1196 combination
|
||||||
Coalescing zero page register [ zp ZP_PTR_BYTE:5 [ main::$2 ] ] with [ zp ZP_PTR_BYTE:7 [ main::$9 ] ]
|
Coalescing zero page register [ zp ZP_PTR_BYTE:5 [ main::$2 ] ] with [ zp ZP_PTR_BYTE:7 [ main::$9 ] ]
|
||||||
Allocated (was zp ZP_PTR_BYTE:5) zp ZP_PTR_BYTE:2 [ main::$2 main::$9 ]
|
Allocated (was zp ZP_PTR_BYTE:5) zp ZP_PTR_BYTE:2 [ main::$2 main::$9 ]
|
||||||
Allocated (was zp ZP_PTR_BYTE:9) zp ZP_PTR_BYTE:4 [ main::$11 ]
|
Allocated (was zp ZP_PTR_BYTE:9) zp ZP_PTR_BYTE:4 [ main::$11 ]
|
||||||
@ -1284,6 +1324,7 @@ bend:
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -1367,9 +1408,11 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
//SEG33 main::@return
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
|
inc BGCOL
|
||||||
|
//SEG34 main::@return
|
||||||
breturn:
|
breturn:
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1392,6 +1435,7 @@ bend:
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -1474,9 +1518,11 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
//SEG33 main::@return
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
|
inc BGCOL
|
||||||
|
//SEG34 main::@return
|
||||||
breturn:
|
breturn:
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1502,6 +1548,7 @@ bend:
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -1582,9 +1629,11 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
//SEG33 main::@return
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
|
inc BGCOL
|
||||||
|
//SEG34 main::@return
|
||||||
breturn:
|
breturn:
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1610,6 +1659,7 @@ ASSEMBLER
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -1686,8 +1736,10 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
//SEG33 main::@return
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
inc BGCOL
|
||||||
|
//SEG34 main::@return
|
||||||
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1708,6 +1760,7 @@ ASSEMBLER
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -1782,8 +1835,10 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
//SEG33 main::@return
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
inc BGCOL
|
||||||
|
//SEG34 main::@return
|
||||||
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1800,6 +1855,8 @@ FINAL SYMBOL TABLE
|
|||||||
(label) main::@3
|
(label) main::@3
|
||||||
(label) main::@4
|
(label) main::@4
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
|
(byte*) main::BGCOL
|
||||||
|
(const byte*) main::BGCOL#0 BGCOL = (word) 53280
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#0 reg byte a 20.0
|
(byte) main::a#0 reg byte a 20.0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
@ -1833,6 +1890,7 @@ FINAL CODE
|
|||||||
//SEG6 main
|
//SEG6 main
|
||||||
main: {
|
main: {
|
||||||
.const screen = $400
|
.const screen = $400
|
||||||
|
.const BGCOL = $d020
|
||||||
.const sc2 = screen+$51
|
.const sc2 = screen+$51
|
||||||
.label _2 = 2
|
.label _2 = 2
|
||||||
.label _9 = 2
|
.label _9 = 2
|
||||||
@ -1907,8 +1965,10 @@ main: {
|
|||||||
inc $d020
|
inc $d020
|
||||||
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
//SEG32 [16] *((word) 53248+(byte) 33) ← -- *((word) 53248+(byte) 33) [ ] ( main:0 [ ] ) -- _deref_cowo1=_dec__deref_cowo1
|
||||||
dec $d000+$21
|
dec $d000+$21
|
||||||
//SEG33 main::@return
|
//SEG33 [17] *((const byte*) main::BGCOL#0) ← ++ *((const byte*) main::BGCOL#0) [ ] ( main:0 [ ] ) -- _deref_cowo1=_inc__deref_cowo1
|
||||||
//SEG34 [17] return [ ] ( main:0 [ ] )
|
inc BGCOL
|
||||||
|
//SEG34 main::@return
|
||||||
|
//SEG35 [18] return [ ] ( main:0 [ ] )
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
(label) main::@3
|
(label) main::@3
|
||||||
(label) main::@4
|
(label) main::@4
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
|
(byte*) main::BGCOL
|
||||||
|
(const byte*) main::BGCOL#0 BGCOL = (word) 53280
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#0 reg byte a 20.0
|
(byte) main::a#0 reg byte a 20.0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
|
@ -13,7 +13,7 @@ void main() {
|
|||||||
// Wait for raster
|
// Wait for raster
|
||||||
do {} while(*RASTER!=$fe);
|
do {} while(*RASTER!=$fe);
|
||||||
do {} while(*RASTER!=$ff);
|
do {} while(*RASTER!=$ff);
|
||||||
(*BGCOL)++;
|
++*BGCOL;
|
||||||
// Soft scroll
|
// Soft scroll
|
||||||
if(--scroll==$ff) {
|
if(--scroll==$ff) {
|
||||||
scroll = 7;
|
scroll = 7;
|
||||||
@ -31,7 +31,7 @@ void main() {
|
|||||||
nxt++;
|
nxt++;
|
||||||
}
|
}
|
||||||
*SCROLL = scroll;
|
*SCROLL = scroll;
|
||||||
(*BGCOL)--;
|
--*BGCOL;
|
||||||
} while(true);
|
} while(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ void main() {
|
|||||||
// Wait for raster
|
// Wait for raster
|
||||||
do {} while(*RASTER!=$fe);
|
do {} while(*RASTER!=$fe);
|
||||||
do {} while(*RASTER!=$ff);
|
do {} while(*RASTER!=$ff);
|
||||||
(*BGCOL)++;
|
++*BGCOL;
|
||||||
// Soft scroll
|
// Soft scroll
|
||||||
if(--scroll==$ff) {
|
if(--scroll==$ff) {
|
||||||
scroll = 7;
|
scroll = 7;
|
||||||
@ -31,7 +31,7 @@ void main() {
|
|||||||
nxt++;
|
nxt++;
|
||||||
}
|
}
|
||||||
*SCROLL = scroll;
|
*SCROLL = scroll;
|
||||||
(*BGCOL)--;
|
--*BGCOL;
|
||||||
} while(true);
|
} while(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user