mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-04 18:05:50 +00:00
Improved test.
This commit is contained in:
parent
576735aeaf
commit
5da972b5b2
@ -1,6 +1,6 @@
|
|||||||
// Demonstrates global directive reserving addresses on zeropage
|
// Demonstrates global directive reserving addresses on zeropage
|
||||||
|
|
||||||
reserve(2,3,5);
|
reserve(2,5);
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
const byte* SCREEN = $400;
|
const byte* SCREEN = $400;
|
||||||
@ -9,7 +9,7 @@ void main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
reserve(4) byte sub1(byte i) {
|
reserve(3) byte sub1(byte i) {
|
||||||
return i+i;
|
return i+i;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
.pc = $80d "Program"
|
.pc = $80d "Program"
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label i = 6
|
.label i = 4
|
||||||
lda #0
|
lda #0
|
||||||
sta i
|
sta i
|
||||||
b1:
|
b1:
|
||||||
|
@ -168,11 +168,11 @@ Complete equivalence classes
|
|||||||
[ sub1::return#0 ]
|
[ sub1::return#0 ]
|
||||||
[ main::$0 ]
|
[ main::$0 ]
|
||||||
[ sub1::return#1 ]
|
[ sub1::return#1 ]
|
||||||
Allocated zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ]
|
Allocated zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ]
|
||||||
Allocated zp ZP_BYTE:7 [ sub1::i#0 ]
|
Allocated zp ZP_BYTE:6 [ sub1::i#0 ]
|
||||||
Allocated zp ZP_BYTE:8 [ sub1::return#0 ]
|
Allocated zp ZP_BYTE:7 [ sub1::return#0 ]
|
||||||
Allocated zp ZP_BYTE:9 [ main::$0 ]
|
Allocated zp ZP_BYTE:8 [ main::$0 ]
|
||||||
Allocated zp ZP_BYTE:10 [ sub1::return#1 ]
|
Allocated zp ZP_BYTE:9 [ sub1::return#1 ]
|
||||||
|
|
||||||
INITIAL ASM
|
INITIAL ASM
|
||||||
//SEG0 File Comments
|
//SEG0 File Comments
|
||||||
@ -199,8 +199,8 @@ bend:
|
|||||||
//SEG9 main
|
//SEG9 main
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label _0 = 9
|
.label _0 = 8
|
||||||
.label i = 6
|
.label i = 4
|
||||||
//SEG10 [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
|
//SEG10 [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
|
||||||
lda #0
|
lda #0
|
||||||
sta i
|
sta i
|
||||||
@ -242,11 +242,11 @@ main: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
//SEG24 sub1
|
//SEG24 sub1
|
||||||
// sub1(byte zeropage(7) i)
|
// sub1(byte zeropage(6) i)
|
||||||
sub1: {
|
sub1: {
|
||||||
.label i = 7
|
.label i = 6
|
||||||
.label return = 8
|
.label return = 7
|
||||||
.label return_1 = $a
|
.label return_1 = 9
|
||||||
//SEG25 [14] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 -- vbuz1=vbuz2_plus_vbuz2
|
//SEG25 [14] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 -- vbuz1=vbuz2_plus_vbuz2
|
||||||
lda i
|
lda i
|
||||||
asl
|
asl
|
||||||
@ -263,22 +263,22 @@ Statement [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/sign
|
|||||||
Statement [10] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte y
|
Statement [10] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← (byte~) main::$0 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte y
|
||||||
Statement [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a
|
Statement [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) always clobbers reg byte a
|
||||||
Statement [14] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:7 [ main::i#2 sub1::return#1 ] ) always clobbers reg byte a
|
Statement [14] (byte) sub1::return#1 ← (byte) sub1::i#0 + (byte) sub1::i#0 [ sub1::return#1 ] ( main:2::sub1:7 [ main::i#2 sub1::return#1 ] ) always clobbers reg byte a
|
||||||
Potential registers zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ] : zp ZP_BYTE:6 ,
|
Potential registers zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ] : zp ZP_BYTE:4 ,
|
||||||
Potential registers zp ZP_BYTE:7 [ sub1::i#0 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp ZP_BYTE:6 [ sub1::i#0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp ZP_BYTE:8 [ sub1::return#0 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp ZP_BYTE:7 [ sub1::return#0 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp ZP_BYTE:9 [ main::$0 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp ZP_BYTE:8 [ main::$0 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp ZP_BYTE:10 [ sub1::return#1 ] : zp ZP_BYTE:10 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp ZP_BYTE:9 [ sub1::return#1 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y ,
|
||||||
|
|
||||||
REGISTER UPLIFT SCOPES
|
REGISTER UPLIFT SCOPES
|
||||||
Uplift Scope [main] 28.17: zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ] 22: zp ZP_BYTE:9 [ main::$0 ]
|
Uplift Scope [main] 28.17: zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ] 22: zp ZP_BYTE:8 [ main::$0 ]
|
||||||
Uplift Scope [sub1] 22: zp ZP_BYTE:8 [ sub1::return#0 ] 15: zp ZP_BYTE:7 [ sub1::i#0 ] 4.33: zp ZP_BYTE:10 [ sub1::return#1 ]
|
Uplift Scope [sub1] 22: zp ZP_BYTE:7 [ sub1::return#0 ] 15: zp ZP_BYTE:6 [ sub1::i#0 ] 4.33: zp ZP_BYTE:9 [ sub1::return#1 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 545 combination zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ] reg byte a [ main::$0 ]
|
Uplifting [main] best 545 combination zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ] reg byte a [ main::$0 ]
|
||||||
Uplifting [sub1] best 419 combination reg byte a [ sub1::return#0 ] reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ]
|
Uplifting [sub1] best 419 combination reg byte a [ sub1::return#0 ] reg byte a [ sub1::i#0 ] reg byte a [ sub1::return#1 ]
|
||||||
Uplifting [] best 419 combination
|
Uplifting [] best 419 combination
|
||||||
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ]
|
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ]
|
||||||
Uplifting [main] best 419 combination zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ]
|
Uplifting [main] best 419 combination zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ]
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
//SEG0 File Comments
|
//SEG0 File Comments
|
||||||
@ -305,7 +305,7 @@ bend:
|
|||||||
//SEG9 main
|
//SEG9 main
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label i = 6
|
.label i = 4
|
||||||
//SEG10 [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
|
//SEG10 [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
|
||||||
lda #0
|
lda #0
|
||||||
sta i
|
sta i
|
||||||
@ -390,9 +390,9 @@ FINAL SYMBOL TABLE
|
|||||||
(byte*) main::SCREEN
|
(byte*) main::SCREEN
|
||||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#0 i zp ZP_BYTE:6 4.0
|
(byte) main::i#0 i zp ZP_BYTE:4 4.0
|
||||||
(byte) main::i#1 i zp ZP_BYTE:6 16.5
|
(byte) main::i#1 i zp ZP_BYTE:4 16.5
|
||||||
(byte) main::i#2 i zp ZP_BYTE:6 7.666666666666666
|
(byte) main::i#2 i zp ZP_BYTE:4 7.666666666666666
|
||||||
(byte()) sub1((byte) sub1::i)
|
(byte()) sub1((byte) sub1::i)
|
||||||
(label) sub1::@return
|
(label) sub1::@return
|
||||||
(byte) sub1::i
|
(byte) sub1::i
|
||||||
@ -401,7 +401,7 @@ FINAL SYMBOL TABLE
|
|||||||
(byte) sub1::return#0 reg byte a 22.0
|
(byte) sub1::return#0 reg byte a 22.0
|
||||||
(byte) sub1::return#1 reg byte a 4.333333333333333
|
(byte) sub1::return#1 reg byte a 4.333333333333333
|
||||||
|
|
||||||
zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ]
|
zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ]
|
||||||
reg byte a [ sub1::i#0 ]
|
reg byte a [ sub1::i#0 ]
|
||||||
reg byte a [ sub1::return#0 ]
|
reg byte a [ sub1::return#0 ]
|
||||||
reg byte a [ main::$0 ]
|
reg byte a [ main::$0 ]
|
||||||
@ -427,7 +427,7 @@ Score: 314
|
|||||||
//SEG9 main
|
//SEG9 main
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label i = 6
|
.label i = 4
|
||||||
//SEG10 [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
|
//SEG10 [4] (byte) main::i#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 -- vbuz1=vbuc1
|
||||||
lda #0
|
lda #0
|
||||||
sta i
|
sta i
|
||||||
|
@ -9,9 +9,9 @@
|
|||||||
(byte*) main::SCREEN
|
(byte*) main::SCREEN
|
||||||
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) $400
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#0 i zp ZP_BYTE:6 4.0
|
(byte) main::i#0 i zp ZP_BYTE:4 4.0
|
||||||
(byte) main::i#1 i zp ZP_BYTE:6 16.5
|
(byte) main::i#1 i zp ZP_BYTE:4 16.5
|
||||||
(byte) main::i#2 i zp ZP_BYTE:6 7.666666666666666
|
(byte) main::i#2 i zp ZP_BYTE:4 7.666666666666666
|
||||||
(byte()) sub1((byte) sub1::i)
|
(byte()) sub1((byte) sub1::i)
|
||||||
(label) sub1::@return
|
(label) sub1::@return
|
||||||
(byte) sub1::i
|
(byte) sub1::i
|
||||||
@ -20,7 +20,7 @@
|
|||||||
(byte) sub1::return#0 reg byte a 22.0
|
(byte) sub1::return#0 reg byte a 22.0
|
||||||
(byte) sub1::return#1 reg byte a 4.333333333333333
|
(byte) sub1::return#1 reg byte a 4.333333333333333
|
||||||
|
|
||||||
zp ZP_BYTE:6 [ main::i#2 main::i#0 main::i#1 ]
|
zp ZP_BYTE:4 [ main::i#2 main::i#0 main::i#1 ]
|
||||||
reg byte a [ sub1::i#0 ]
|
reg byte a [ sub1::i#0 ]
|
||||||
reg byte a [ sub1::return#0 ]
|
reg byte a [ sub1::return#0 ]
|
||||||
reg byte a [ main::$0 ]
|
reg byte a [ main::$0 ]
|
||||||
|
Loading…
Reference in New Issue
Block a user