mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-01-27 06:34:19 +00:00
Fixed test data
This commit is contained in:
parent
18bbde8a44
commit
4a9a3d54f5
@ -13,8 +13,10 @@ B1:
|
||||
sta 3
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
sta 4
|
||||
lda 3
|
||||
clc
|
||||
adc 3
|
||||
adc 4
|
||||
sta 3
|
||||
lda 3
|
||||
ldx 2
|
||||
|
@ -443,13 +443,23 @@ zp byte:2 [ i#2 i#1 ]
|
||||
zp byte:3 [ $1 $4 ]
|
||||
zp byte:4 [ $3 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Re-allocated ZP register from zp byte:4 to zp byte:4
|
||||
Uplifting of variable (byte~) $3 to A
|
||||
Uplifting max weight 33.0 live range equivalence class zp byte:3 [ $1 $4 ]
|
||||
Error! Alive variable $1 register reg byte a clobbered by the ASM generated by statement [4] $3 ← 4353 *idx i#2
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
sta 4
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Error! Alive variable $1 register reg byte x clobbered by the ASM generated by statement [4] $3 ← 4353 *idx i#2
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
sta 4
|
||||
|
||||
Uplift to reg byte x resulted in clobber.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte~) $1 zp byte:3 11.0
|
||||
(byte~) $3 reg byte a 22.0
|
||||
(byte~) $3 zp byte:4 22.0
|
||||
(byte~) $4 zp byte:3 22.0
|
||||
(byte[15]) fibs
|
||||
(byte) i
|
||||
@ -481,12 +491,14 @@ B1:
|
||||
ldx 2
|
||||
lda 4352,x
|
||||
sta 3
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // aby=cowo1_staridx_zpby1
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // zpby1=cowo1_staridx_zpby2
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_aby
|
||||
sta 4
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 3
|
||||
adc 4
|
||||
sta 3
|
||||
// [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
@ -524,12 +536,14 @@ B1:
|
||||
ldx 2
|
||||
lda 4352,x
|
||||
sta 3
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // aby=cowo1_staridx_zpby1
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // zpby1=cowo1_staridx_zpby2
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_aby
|
||||
sta 4
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 3
|
||||
adc 4
|
||||
sta 3
|
||||
// [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
@ -564,12 +578,14 @@ B1:
|
||||
ldx 2
|
||||
lda 4352,x
|
||||
sta 3
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // aby=cowo1_staridx_zpby1
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // zpby1=cowo1_staridx_zpby2
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_aby
|
||||
sta 4
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 3
|
||||
adc 4
|
||||
sta 3
|
||||
// [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
@ -585,7 +601,7 @@ BEND:
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(byte~) $1 zp byte:3 11.0
|
||||
(byte~) $3 reg byte a 22.0
|
||||
(byte~) $3 zp byte:4 22.0
|
||||
(byte~) $4 zp byte:3 22.0
|
||||
(label) @1
|
||||
(label) @BEGIN
|
||||
@ -618,12 +634,14 @@ B1:
|
||||
ldx 2
|
||||
lda 4352,x
|
||||
sta 3
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // aby=cowo1_staridx_zpby1
|
||||
// [4] (byte~) $3 ← (word) 4353 *idx (byte) i#2 [ i#2 $1 $3 ] // zpby1=cowo1_staridx_zpby2
|
||||
ldx 2
|
||||
lda 4353,x
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_aby
|
||||
sta 4
|
||||
// [5] (byte~) $4 ← (byte~) $1 + (byte~) $3 [ i#2 $4 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 3
|
||||
adc 4
|
||||
sta 3
|
||||
// [6] *((word) 4354 + (byte) i#2) ← (byte~) $4 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
|
@ -1,5 +1,5 @@
|
||||
(byte~) $1 zp byte:3 11.0
|
||||
(byte~) $3 reg byte a 22.0
|
||||
(byte~) $3 zp byte:4 22.0
|
||||
(byte~) $4 zp byte:3 22.0
|
||||
(label) @1
|
||||
(label) @BEGIN
|
||||
|
@ -14,6 +14,8 @@ main__B3_from_B3:
|
||||
main__B3_from_B6:
|
||||
main__B3:
|
||||
lda 53266
|
||||
sta 14
|
||||
lda 14
|
||||
cmp #254
|
||||
bne main__B3_from_B3
|
||||
main__B4:
|
||||
|
@ -4148,23 +4148,25 @@ zp byte:16 [ plot::$3 ]
|
||||
zp byte:17 [ flip::$0 ]
|
||||
zp byte:18 [ flip::$4 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp ptr byte:3 to zp ptr byte:3
|
||||
Re-allocated ZP register from zp byte:5 to zp byte:5
|
||||
Re-allocated ZP register from zp byte:6 to zp byte:6
|
||||
Re-allocated ZP register from zp byte:7 to zp byte:7
|
||||
Re-allocated ZP register from zp byte:8 to zp byte:8
|
||||
Re-allocated ZP register from zp byte:9 to zp byte:9
|
||||
Re-allocated ZP register from zp byte:10 to zp byte:10
|
||||
Re-allocated ZP register from zp byte:11 to zp byte:11
|
||||
Re-allocated ZP register from zp byte:12 to zp byte:12
|
||||
Re-allocated ZP register from zp byte:13 to zp byte:13
|
||||
Re-allocated ZP register from zp byte:14 to zp byte:14
|
||||
Re-allocated ZP register from zp byte:15 to zp byte:15
|
||||
Re-allocated ZP register from zp byte:16 to zp byte:16
|
||||
Re-allocated ZP register from zp byte:17 to zp byte:17
|
||||
Re-allocated ZP register from zp byte:18 to zp byte:18
|
||||
Uplifting of variable (byte~) main::$1 to A
|
||||
Uplifting max weight 2252.25 live range equivalence class zp byte:7 [ plot::x#2 plot::x#1 ]
|
||||
Error! Alive variable plot::x#2 register reg byte a clobbered by the ASM generated by statement [15] plot::$3 ← 4096 *idx plot::i#2
|
||||
ldx 6
|
||||
lda 4096,x
|
||||
sta 16
|
||||
|
||||
Error! Alive variable plot::x#2 register reg byte a clobbered by the ASM generated by statement [16] *(plot::line#2 + plot::x#2) ← plot::$3
|
||||
tay
|
||||
lda 16
|
||||
sta (3),y
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Error! Alive variable plot::x#2 register reg byte x clobbered by the ASM generated by statement [15] plot::$3 ← 4096 *idx plot::i#2
|
||||
ldx 6
|
||||
lda 4096,x
|
||||
sta 16
|
||||
|
||||
Uplift to reg byte x resulted in clobber.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte*) RASTER
|
||||
(byte[1000]) SCREEN
|
||||
@ -4192,7 +4194,7 @@ REGISTER UPLIFTING
|
||||
(byte) flip::srcIdx#2 zp byte:9 1034.6666666666667
|
||||
(byte) flip::srcIdx#3 zp byte:9 202.0
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 2002.0
|
||||
(byte~) main::$1 zp byte:14 2002.0
|
||||
(byte~) main::$3 zp byte:15 2002.0
|
||||
(byte) main::c
|
||||
(byte) main::c#1 zp byte:2 151.5
|
||||
@ -4267,9 +4269,11 @@ main__B3_from_B6:
|
||||
// (byte) main::c#2 = (byte) main::c#1 // register copy zp byte:2
|
||||
jmp main__B3
|
||||
main__B3:
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // aby=_star_cowo1
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // zpby1=_star_cowo1
|
||||
lda 53266
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // aby_neq_coby1_then_la1
|
||||
sta 14
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // zpby1_neq_coby1_then_la1
|
||||
lda 14
|
||||
cmp #254
|
||||
bne main__B3_from_B3
|
||||
jmp main__B4
|
||||
@ -4515,9 +4519,11 @@ main__B3_from_B3:
|
||||
main__B3_from_B6:
|
||||
// (byte) main::c#2 = (byte) main::c#1 // register copy zp byte:2
|
||||
main__B3:
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // aby=_star_cowo1
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // zpby1=_star_cowo1
|
||||
lda 53266
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // aby_neq_coby1_then_la1
|
||||
sta 14
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // zpby1_neq_coby1_then_la1
|
||||
lda 14
|
||||
cmp #254
|
||||
bne main__B3_from_B3
|
||||
main__B4:
|
||||
@ -4733,9 +4739,11 @@ main__B3_from_B3:
|
||||
main__B3_from_B6:
|
||||
// (byte) main::c#2 = (byte) main::c#1 // register copy zp byte:2
|
||||
main__B3:
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // aby=_star_cowo1
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // zpby1=_star_cowo1
|
||||
lda 53266
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // aby_neq_coby1_then_la1
|
||||
sta 14
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // zpby1_neq_coby1_then_la1
|
||||
lda 14
|
||||
cmp #254
|
||||
bne main__B3_from_B3
|
||||
main__B4:
|
||||
@ -4938,9 +4946,11 @@ main__B3_from_B3:
|
||||
main__B3_from_B6:
|
||||
// (byte) main::c#2 = (byte) main::c#1 // register copy zp byte:2
|
||||
main__B3:
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // aby=_star_cowo1
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // zpby1=_star_cowo1
|
||||
lda 53266
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // aby_neq_coby1_then_la1
|
||||
sta 14
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // zpby1_neq_coby1_then_la1
|
||||
lda 14
|
||||
cmp #254
|
||||
bne main__B3_from_B3
|
||||
main__B4:
|
||||
@ -5156,7 +5166,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) flip::srcIdx#2 zp byte:9 1034.6666666666667
|
||||
(byte) flip::srcIdx#3 zp byte:9 202.0
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 2002.0
|
||||
(byte~) main::$1 zp byte:14 2002.0
|
||||
(byte~) main::$3 zp byte:15 2002.0
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
@ -5220,9 +5230,11 @@ main__B3_from_B3:
|
||||
main__B3_from_B6:
|
||||
// (byte) main::c#2 = (byte) main::c#1 // register copy zp byte:2
|
||||
main__B3:
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // aby=_star_cowo1
|
||||
// [3] (byte~) main::$1 ← * (word) 53266 [ main::$1 main::c#2 ] // zpby1=_star_cowo1
|
||||
lda 53266
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // aby_neq_coby1_then_la1
|
||||
sta 14
|
||||
// [4] if((byte~) main::$1!=(byte) 254) goto main::@3 [ main::c#2 ] // zpby1_neq_coby1_then_la1
|
||||
lda 14
|
||||
cmp #254
|
||||
bne main__B3_from_B3
|
||||
main__B4:
|
||||
|
@ -31,7 +31,7 @@
|
||||
(byte) flip::srcIdx#2 zp byte:9 1034.6666666666667
|
||||
(byte) flip::srcIdx#3 zp byte:9 202.0
|
||||
(void()) main()
|
||||
(byte~) main::$1 reg byte a 2002.0
|
||||
(byte~) main::$1 zp byte:14 2002.0
|
||||
(byte~) main::$3 zp byte:15 2002.0
|
||||
(label) main::@10
|
||||
(label) main::@11
|
||||
|
@ -21,6 +21,6 @@ B2:
|
||||
lda 3
|
||||
clc
|
||||
adc 2
|
||||
B3_from_B2:
|
||||
sta 3
|
||||
B3_from_B2:
|
||||
jmp B3
|
||||
|
@ -384,15 +384,27 @@ VARIABLE REGISTER WEIGHTS
|
||||
zp byte:2 [ i#2 i#1 ]
|
||||
zp byte:3 [ s#2 s#4 s#1 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Uplifting of variable (byte) s#1 to A
|
||||
Uplifting max weight 49.5 live range equivalence class zp byte:3 [ s#2 s#4 s#1 ]
|
||||
Error! Alive variable s#2 register reg byte a clobbered by the ASM generated by statement [1] if(i#2>5) goto @2
|
||||
lda 2
|
||||
cmp #5
|
||||
beq !+
|
||||
bcs B2
|
||||
!:
|
||||
|
||||
Error! Alive variable s#4 register reg byte a clobbered by the ASM generated by statement [4] if(i#1>0) goto @1
|
||||
lda 2
|
||||
bne B1_from_B3
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Uplift to reg byte x succesfull.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte) i
|
||||
(byte) i#1 zp byte:2 16.5
|
||||
(byte) i#2 zp byte:2 11.0
|
||||
(byte) s
|
||||
(byte) s#1 reg byte a 22.0
|
||||
(byte) s#1 zp byte:3 22.0
|
||||
(byte) s#2 zp byte:3 16.5
|
||||
(byte) s#4 zp byte:3 11.0
|
||||
|
||||
@ -432,13 +444,13 @@ B3:
|
||||
jmp BEND
|
||||
BEND:
|
||||
B2:
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // aby=zpby1_plus_zpby2
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 2
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // zpby1=aby
|
||||
sta 3
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // register copy zp byte:3
|
||||
jmp B3
|
||||
|
||||
Removing instruction jmp B1
|
||||
@ -475,13 +487,13 @@ B3:
|
||||
bne B1_from_B3
|
||||
BEND:
|
||||
B2:
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // aby=zpby1_plus_zpby2
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 2
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // zpby1=aby
|
||||
sta 3
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // register copy zp byte:3
|
||||
jmp B3
|
||||
|
||||
Removing instruction jmp B1
|
||||
@ -515,13 +527,13 @@ B3:
|
||||
bne B1_from_B3
|
||||
BEND:
|
||||
B2:
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // aby=zpby1_plus_zpby2
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 2
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // zpby1=aby
|
||||
sta 3
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // register copy zp byte:3
|
||||
jmp B3
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
@ -534,7 +546,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) i#1 zp byte:2 16.5
|
||||
(byte) i#2 zp byte:2 11.0
|
||||
(byte) s
|
||||
(byte) s#1 reg byte a 22.0
|
||||
(byte) s#1 zp byte:3 22.0
|
||||
(byte) s#2 zp byte:3 16.5
|
||||
(byte) s#4 zp byte:3 11.0
|
||||
|
||||
@ -570,12 +582,12 @@ B3:
|
||||
bne B1_from_B3
|
||||
BEND:
|
||||
B2:
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // aby=zpby1_plus_zpby2
|
||||
// [5] (byte) s#1 ← (byte) s#2 + (byte) i#2 [ i#2 s#1 ] // zpby1=zpby1_plus_zpby2
|
||||
lda 3
|
||||
clc
|
||||
adc 2
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // zpby1=aby
|
||||
sta 3
|
||||
B3_from_B2:
|
||||
// (byte) s#4 = (byte) s#1 // register copy zp byte:3
|
||||
jmp B3
|
||||
|
||||
|
@ -7,7 +7,7 @@
|
||||
(byte) i#1 zp byte:2 16.5
|
||||
(byte) i#2 zp byte:2 11.0
|
||||
(byte) s
|
||||
(byte) s#1 reg byte a 22.0
|
||||
(byte) s#1 zp byte:3 22.0
|
||||
(byte) s#2 zp byte:3 16.5
|
||||
(byte) s#4 zp byte:3 11.0
|
||||
|
||||
|
@ -18,16 +18,12 @@ nest:
|
||||
nest__B1_from_nest:
|
||||
lda #100
|
||||
sta 3
|
||||
jmp nest__B1
|
||||
nest__B1_from_B1:
|
||||
sta 3
|
||||
nest__B1:
|
||||
lda 3
|
||||
sta 1024
|
||||
dec 3
|
||||
lda 3
|
||||
sec
|
||||
sbc #1
|
||||
cmp #0
|
||||
bne nest__B1_from_B1
|
||||
nest__Breturn:
|
||||
rts
|
||||
|
@ -734,9 +734,10 @@ VARIABLE REGISTER WEIGHTS
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
zp byte:3 [ nest::j#2 nest::j#1 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Uplifting of variable (byte) nest::j#1 to A
|
||||
Uplifting max weight 303.0 live range equivalence class zp byte:3 [ nest::j#2 nest::j#1 ]
|
||||
Uplift to reg byte a succesfull.
|
||||
Uplift to reg byte x succesfull.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
@ -745,7 +746,7 @@ REGISTER UPLIFTING
|
||||
(byte) main::i#2 zp byte:2 3.142857142857143
|
||||
(void()) nest()
|
||||
(byte) nest::j
|
||||
(byte) nest::j#1 reg byte a 151.5
|
||||
(byte) nest::j#1 zp byte:3 151.5
|
||||
(byte) nest::j#2 zp byte:3 151.5
|
||||
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
@ -784,19 +785,16 @@ nest__B1_from_nest:
|
||||
sta 3
|
||||
jmp nest__B1
|
||||
nest__B1_from_B1:
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // zpby1=aby
|
||||
sta 3
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // register copy zp byte:3
|
||||
jmp nest__B1
|
||||
nest__B1:
|
||||
// [7] *((word) 1024) ← (byte) nest::j#2 [ main::i#2 nest::j#2 ] // _star_cowo1=zpby1
|
||||
lda 3
|
||||
sta 1024
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // aby=_dec_zpby1
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // zpby1=_dec_zpby1
|
||||
dec 3
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // zpby1_gt_0_then_la1
|
||||
lda 3
|
||||
sec
|
||||
sbc #1
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest__B1_from_B1
|
||||
jmp nest__Breturn
|
||||
nest__Breturn:
|
||||
@ -838,23 +836,21 @@ nest__B1_from_nest:
|
||||
sta 3
|
||||
jmp nest__B1
|
||||
nest__B1_from_B1:
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // zpby1=aby
|
||||
sta 3
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // register copy zp byte:3
|
||||
nest__B1:
|
||||
// [7] *((word) 1024) ← (byte) nest::j#2 [ main::i#2 nest::j#2 ] // _star_cowo1=zpby1
|
||||
lda 3
|
||||
sta 1024
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // aby=_dec_zpby1
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // zpby1=_dec_zpby1
|
||||
dec 3
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // zpby1_gt_0_then_la1
|
||||
lda 3
|
||||
sec
|
||||
sbc #1
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest__B1_from_B1
|
||||
nest__Breturn:
|
||||
rts
|
||||
|
||||
Removing instruction jmp main__B1
|
||||
Removing instruction jmp nest__B1
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
ASSEMBLER
|
||||
BBEGIN:
|
||||
@ -882,20 +878,16 @@ nest__B1_from_nest:
|
||||
// (byte) nest::j#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
sta 3
|
||||
jmp nest__B1
|
||||
nest__B1_from_B1:
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // zpby1=aby
|
||||
sta 3
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // register copy zp byte:3
|
||||
nest__B1:
|
||||
// [7] *((word) 1024) ← (byte) nest::j#2 [ main::i#2 nest::j#2 ] // _star_cowo1=zpby1
|
||||
lda 3
|
||||
sta 1024
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // aby=_dec_zpby1
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // zpby1=_dec_zpby1
|
||||
dec 3
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // zpby1_gt_0_then_la1
|
||||
lda 3
|
||||
sec
|
||||
sbc #1
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest__B1_from_B1
|
||||
nest__Breturn:
|
||||
rts
|
||||
@ -915,7 +907,7 @@ FINAL SYMBOL TABLE
|
||||
(label) nest::@1
|
||||
(label) nest::@return
|
||||
(byte) nest::j
|
||||
(byte) nest::j#1 reg byte a 151.5
|
||||
(byte) nest::j#1 zp byte:3 151.5
|
||||
(byte) nest::j#2 zp byte:3 151.5
|
||||
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
@ -947,20 +939,16 @@ nest__B1_from_nest:
|
||||
// (byte) nest::j#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
sta 3
|
||||
jmp nest__B1
|
||||
nest__B1_from_B1:
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // zpby1=aby
|
||||
sta 3
|
||||
// (byte) nest::j#2 = (byte) nest::j#1 // register copy zp byte:3
|
||||
nest__B1:
|
||||
// [7] *((word) 1024) ← (byte) nest::j#2 [ main::i#2 nest::j#2 ] // _star_cowo1=zpby1
|
||||
lda 3
|
||||
sta 1024
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // aby=_dec_zpby1
|
||||
// [8] (byte) nest::j#1 ← -- (byte) nest::j#2 [ main::i#2 nest::j#1 ] // zpby1=_dec_zpby1
|
||||
dec 3
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // zpby1_gt_0_then_la1
|
||||
lda 3
|
||||
sec
|
||||
sbc #1
|
||||
// [9] if((byte) nest::j#1>(byte) 0) goto nest::@1 [ main::i#2 nest::j#1 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest__B1_from_B1
|
||||
nest__Breturn:
|
||||
rts
|
||||
|
@ -12,7 +12,7 @@
|
||||
(label) nest::@1
|
||||
(label) nest::@return
|
||||
(byte) nest::j
|
||||
(byte) nest::j#1 reg byte a 151.5
|
||||
(byte) nest::j#1 zp byte:3 151.5
|
||||
(byte) nest::j#2 zp byte:3 151.5
|
||||
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
|
@ -54,16 +54,12 @@ nest2__B1:
|
||||
nest2__B2_from_B1:
|
||||
lda #100
|
||||
sta 7
|
||||
jmp nest2__B2
|
||||
nest2__B2_from_B2:
|
||||
sta 7
|
||||
nest2__B2:
|
||||
lda 7
|
||||
sta 1024
|
||||
dec 7
|
||||
lda 7
|
||||
sec
|
||||
sbc #1
|
||||
cmp #0
|
||||
bne nest2__B2_from_B2
|
||||
nest2__B3:
|
||||
dec 6
|
||||
|
@ -1849,13 +1849,10 @@ zp byte:5 [ nest1::j#2 nest1::j#1 ]
|
||||
zp byte:6 [ nest2::i#2 nest2::i#1 ]
|
||||
zp byte:7 [ nest2::j#2 nest2::j#1 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Re-allocated ZP register from zp byte:4 to zp byte:4
|
||||
Re-allocated ZP register from zp byte:5 to zp byte:5
|
||||
Re-allocated ZP register from zp byte:6 to zp byte:6
|
||||
Re-allocated ZP register from zp byte:7 to zp byte:7
|
||||
Uplifting of variable (byte) nest2::j#1 to A
|
||||
Uplifting max weight 3000003.0 live range equivalence class zp byte:7 [ nest2::j#2 nest2::j#1 ]
|
||||
Uplift to reg byte a succesfull.
|
||||
Uplift to reg byte x succesfull.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
@ -1877,7 +1874,7 @@ REGISTER UPLIFTING
|
||||
(byte) nest2::i#1 zp byte:6 150001.5
|
||||
(byte) nest2::i#2 zp byte:6 40000.4
|
||||
(byte) nest2::j
|
||||
(byte) nest2::j#1 reg byte a 1500001.5
|
||||
(byte) nest2::j#1 zp byte:7 1500001.5
|
||||
(byte) nest2::j#2 zp byte:7 1500001.5
|
||||
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
@ -1982,19 +1979,16 @@ nest2__B2_from_B1:
|
||||
sta 7
|
||||
jmp nest2__B2
|
||||
nest2__B2_from_B2:
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // zpby1=aby
|
||||
sta 7
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // register copy zp byte:7
|
||||
jmp nest2__B2
|
||||
nest2__B2:
|
||||
// [19] *((word) 1024) ← (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#2 nest2::i#2 ] // _star_cowo1=zpby1
|
||||
lda 7
|
||||
sta 1024
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby=_dec_zpby1
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1=_dec_zpby1
|
||||
dec 7
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1_gt_0_then_la1
|
||||
lda 7
|
||||
sec
|
||||
sbc #1
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest2__B2_from_B2
|
||||
jmp nest2__B3
|
||||
nest2__B3:
|
||||
@ -2106,18 +2100,15 @@ nest2__B2_from_B1:
|
||||
sta 7
|
||||
jmp nest2__B2
|
||||
nest2__B2_from_B2:
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // zpby1=aby
|
||||
sta 7
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // register copy zp byte:7
|
||||
nest2__B2:
|
||||
// [19] *((word) 1024) ← (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#2 nest2::i#2 ] // _star_cowo1=zpby1
|
||||
lda 7
|
||||
sta 1024
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby=_dec_zpby1
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1=_dec_zpby1
|
||||
dec 7
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1_gt_0_then_la1
|
||||
lda 7
|
||||
sec
|
||||
sbc #1
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest2__B2_from_B2
|
||||
nest2__B3:
|
||||
// [22] (byte) nest2::i#1 ← -- (byte) nest2::i#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::i#1 ] // zpby1=_dec_zpby1
|
||||
@ -2133,6 +2124,7 @@ Removing instruction jmp main__B2
|
||||
Removing instruction jmp nest1__B1
|
||||
Removing instruction jmp nest1__B2
|
||||
Removing instruction jmp nest2__B1
|
||||
Removing instruction jmp nest2__B2
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
ASSEMBLER
|
||||
BBEGIN:
|
||||
@ -2210,20 +2202,16 @@ nest2__B2_from_B1:
|
||||
// (byte) nest2::j#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
sta 7
|
||||
jmp nest2__B2
|
||||
nest2__B2_from_B2:
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // zpby1=aby
|
||||
sta 7
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // register copy zp byte:7
|
||||
nest2__B2:
|
||||
// [19] *((word) 1024) ← (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#2 nest2::i#2 ] // _star_cowo1=zpby1
|
||||
lda 7
|
||||
sta 1024
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby=_dec_zpby1
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1=_dec_zpby1
|
||||
dec 7
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1_gt_0_then_la1
|
||||
lda 7
|
||||
sec
|
||||
sbc #1
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest2__B2_from_B2
|
||||
nest2__B3:
|
||||
// [22] (byte) nest2::i#1 ← -- (byte) nest2::i#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::i#1 ] // zpby1=_dec_zpby1
|
||||
@ -2271,7 +2259,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) nest2::i#1 zp byte:6 150001.5
|
||||
(byte) nest2::i#2 zp byte:6 40000.4
|
||||
(byte) nest2::j
|
||||
(byte) nest2::j#1 reg byte a 1500001.5
|
||||
(byte) nest2::j#1 zp byte:7 1500001.5
|
||||
(byte) nest2::j#2 zp byte:7 1500001.5
|
||||
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
@ -2357,20 +2345,16 @@ nest2__B2_from_B1:
|
||||
// (byte) nest2::j#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
sta 7
|
||||
jmp nest2__B2
|
||||
nest2__B2_from_B2:
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // zpby1=aby
|
||||
sta 7
|
||||
// (byte) nest2::j#2 = (byte) nest2::j#1 // register copy zp byte:7
|
||||
nest2__B2:
|
||||
// [19] *((word) 1024) ← (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#2 nest2::i#2 ] // _star_cowo1=zpby1
|
||||
lda 7
|
||||
sta 1024
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby=_dec_zpby1
|
||||
// [20] (byte) nest2::j#1 ← -- (byte) nest2::j#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1=_dec_zpby1
|
||||
dec 7
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // zpby1_gt_0_then_la1
|
||||
lda 7
|
||||
sec
|
||||
sbc #1
|
||||
// [21] if((byte) nest2::j#1>(byte) 0) goto nest2::@2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::j#1 nest2::i#2 ] // aby_gt_0_then_la1
|
||||
cmp #0
|
||||
bne nest2__B2_from_B2
|
||||
nest2__B3:
|
||||
// [22] (byte) nest2::i#1 ← -- (byte) nest2::i#2 [ main::j#2 main::i#2 nest1::j#2 nest1::i#2 nest2::i#1 ] // zpby1=_dec_zpby1
|
||||
|
@ -34,7 +34,7 @@
|
||||
(byte) nest2::i#1 zp byte:6 150001.5
|
||||
(byte) nest2::i#2 zp byte:6 40000.4
|
||||
(byte) nest2::j
|
||||
(byte) nest2::j#1 reg byte a 1500001.5
|
||||
(byte) nest2::j#1 zp byte:7 1500001.5
|
||||
(byte) nest2::j#2 zp byte:7 1500001.5
|
||||
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
|
@ -6,8 +6,8 @@ main__B1_from_main:
|
||||
lda #0
|
||||
sta 3
|
||||
lda #100
|
||||
main__B1:
|
||||
sta 2
|
||||
main__B1:
|
||||
dec 2
|
||||
lda 2
|
||||
bne main__B2
|
||||
@ -22,10 +22,8 @@ main__B2:
|
||||
main__B5:
|
||||
dec 3
|
||||
main__B1_from_B5:
|
||||
lda 2
|
||||
jmp main__B1
|
||||
main__B4:
|
||||
inc 3
|
||||
main__B1_from_B4:
|
||||
lda 2
|
||||
jmp main__B1
|
||||
|
@ -538,14 +538,26 @@ VARIABLE REGISTER WEIGHTS
|
||||
zp byte:2 [ main::i#2 main::i#1 ]
|
||||
zp byte:3 [ main::s#3 main::s#1 main::s#2 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Uplifting of variable (byte) main::i#2 to A
|
||||
Uplifting max weight 55.0 live range equivalence class zp byte:3 [ main::s#3 main::s#1 main::s#2 ]
|
||||
Error! Alive variable main::s#3 register reg byte a clobbered by the ASM generated by statement [3] if(main::i#1>0) goto main::@2
|
||||
lda 2
|
||||
bne main__B2
|
||||
|
||||
Error! Alive variable main::s#3 register reg byte a clobbered by the ASM generated by statement [5] if(main::i#1>50) goto main::@4
|
||||
lda 2
|
||||
cmp #50
|
||||
beq !+
|
||||
bcs main__B4
|
||||
!:
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Uplift to reg byte x succesfull.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(void()) main()
|
||||
(byte) main::i
|
||||
(byte) main::i#1 zp byte:2 11.0
|
||||
(byte) main::i#2 reg byte a 33.0
|
||||
(byte) main::i#2 zp byte:2 33.0
|
||||
(byte) main::s
|
||||
(byte) main::s#1 zp byte:3 22.0
|
||||
(byte) main::s#2 zp byte:3 22.0
|
||||
@ -564,12 +576,12 @@ main__B1_from_main:
|
||||
// (byte) main::s#3 = (byte) 0 // zpby1=coby1
|
||||
lda #0
|
||||
sta 3
|
||||
// (byte) main::i#2 = (byte) 100 // aby=coby1
|
||||
// (byte) main::i#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
sta 2
|
||||
jmp main__B1
|
||||
main__B1:
|
||||
// [2] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#3 ] // zpby1=_dec_aby
|
||||
sta 2
|
||||
// [2] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#3 ] // zpby1=_dec_zpby1
|
||||
dec 2
|
||||
// [3] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::i#1 main::s#3 ] // zpby1_gt_0_then_la1
|
||||
lda 2
|
||||
@ -590,16 +602,14 @@ main__B5:
|
||||
dec 3
|
||||
main__B1_from_B5:
|
||||
// (byte) main::s#3 = (byte) main::s#2 // register copy zp byte:3
|
||||
// (byte) main::i#2 = (byte) main::i#1 // aby=zpby1
|
||||
lda 2
|
||||
// (byte) main::i#2 = (byte) main::i#1 // register copy zp byte:2
|
||||
jmp main__B1
|
||||
main__B4:
|
||||
// [7] (byte) main::s#1 ← ++ (byte) main::s#3 [ main::i#1 main::s#1 ] // zpby1=_inc_zpby1
|
||||
inc 3
|
||||
main__B1_from_B4:
|
||||
// (byte) main::s#3 = (byte) main::s#1 // register copy zp byte:3
|
||||
// (byte) main::i#2 = (byte) main::i#1 // aby=zpby1
|
||||
lda 2
|
||||
// (byte) main::i#2 = (byte) main::i#1 // register copy zp byte:2
|
||||
jmp main__B1
|
||||
|
||||
Removing instruction jmp BEND
|
||||
@ -616,11 +626,11 @@ main__B1_from_main:
|
||||
// (byte) main::s#3 = (byte) 0 // zpby1=coby1
|
||||
lda #0
|
||||
sta 3
|
||||
// (byte) main::i#2 = (byte) 100 // aby=coby1
|
||||
// (byte) main::i#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
main__B1:
|
||||
// [2] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#3 ] // zpby1=_dec_aby
|
||||
sta 2
|
||||
main__B1:
|
||||
// [2] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#3 ] // zpby1=_dec_zpby1
|
||||
dec 2
|
||||
// [3] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::i#1 main::s#3 ] // zpby1_gt_0_then_la1
|
||||
lda 2
|
||||
@ -639,16 +649,14 @@ main__B5:
|
||||
dec 3
|
||||
main__B1_from_B5:
|
||||
// (byte) main::s#3 = (byte) main::s#2 // register copy zp byte:3
|
||||
// (byte) main::i#2 = (byte) main::i#1 // aby=zpby1
|
||||
lda 2
|
||||
// (byte) main::i#2 = (byte) main::i#1 // register copy zp byte:2
|
||||
jmp main__B1
|
||||
main__B4:
|
||||
// [7] (byte) main::s#1 ← ++ (byte) main::s#3 [ main::i#1 main::s#1 ] // zpby1=_inc_zpby1
|
||||
inc 3
|
||||
main__B1_from_B4:
|
||||
// (byte) main::s#3 = (byte) main::s#1 // register copy zp byte:3
|
||||
// (byte) main::i#2 = (byte) main::i#1 // aby=zpby1
|
||||
lda 2
|
||||
// (byte) main::i#2 = (byte) main::i#1 // register copy zp byte:2
|
||||
jmp main__B1
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
@ -662,7 +670,7 @@ FINAL SYMBOL TABLE
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 zp byte:2 11.0
|
||||
(byte) main::i#2 reg byte a 33.0
|
||||
(byte) main::i#2 zp byte:2 33.0
|
||||
(byte) main::s
|
||||
(byte) main::s#1 zp byte:3 22.0
|
||||
(byte) main::s#2 zp byte:3 22.0
|
||||
@ -680,11 +688,11 @@ main__B1_from_main:
|
||||
// (byte) main::s#3 = (byte) 0 // zpby1=coby1
|
||||
lda #0
|
||||
sta 3
|
||||
// (byte) main::i#2 = (byte) 100 // aby=coby1
|
||||
// (byte) main::i#2 = (byte) 100 // zpby1=coby1
|
||||
lda #100
|
||||
main__B1:
|
||||
// [2] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#3 ] // zpby1=_dec_aby
|
||||
sta 2
|
||||
main__B1:
|
||||
// [2] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 main::s#3 ] // zpby1=_dec_zpby1
|
||||
dec 2
|
||||
// [3] if((byte) main::i#1>(byte) 0) goto main::@2 [ main::i#1 main::s#3 ] // zpby1_gt_0_then_la1
|
||||
lda 2
|
||||
@ -703,15 +711,13 @@ main__B5:
|
||||
dec 3
|
||||
main__B1_from_B5:
|
||||
// (byte) main::s#3 = (byte) main::s#2 // register copy zp byte:3
|
||||
// (byte) main::i#2 = (byte) main::i#1 // aby=zpby1
|
||||
lda 2
|
||||
// (byte) main::i#2 = (byte) main::i#1 // register copy zp byte:2
|
||||
jmp main__B1
|
||||
main__B4:
|
||||
// [7] (byte) main::s#1 ← ++ (byte) main::s#3 [ main::i#1 main::s#1 ] // zpby1=_inc_zpby1
|
||||
inc 3
|
||||
main__B1_from_B4:
|
||||
// (byte) main::s#3 = (byte) main::s#1 // register copy zp byte:3
|
||||
// (byte) main::i#2 = (byte) main::i#1 // aby=zpby1
|
||||
lda 2
|
||||
// (byte) main::i#2 = (byte) main::i#1 // register copy zp byte:2
|
||||
jmp main__B1
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
(label) main::@return
|
||||
(byte) main::i
|
||||
(byte) main::i#1 zp byte:2 11.0
|
||||
(byte) main::i#2 reg byte a 33.0
|
||||
(byte) main::i#2 zp byte:2 33.0
|
||||
(byte) main::s
|
||||
(byte) main::s#1 zp byte:3 22.0
|
||||
(byte) main::s#2 zp byte:3 22.0
|
||||
|
@ -7,6 +7,8 @@ B1:
|
||||
lda 2
|
||||
clc
|
||||
adc #4
|
||||
sta 3
|
||||
lda 3
|
||||
ldx 2
|
||||
sta 4352,x
|
||||
inc 2
|
||||
|
@ -311,11 +311,22 @@ VARIABLE REGISTER WEIGHTS
|
||||
zp byte:2 [ i#2 i#1 ]
|
||||
zp byte:3 [ $1 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Uplifting of variable (byte~) $1 to A
|
||||
Uplifting max weight 31.166666666666664 live range equivalence class zp byte:2 [ i#2 i#1 ]
|
||||
Error! Alive variable i#2 register reg byte a clobbered by the ASM generated by statement [1] $1 ← i#2 + 4
|
||||
clc
|
||||
adc #4
|
||||
sta 3
|
||||
|
||||
Error! Alive variable i#2 register reg byte a clobbered by the ASM generated by statement [2] *(4352 + i#2) ← $1
|
||||
tax
|
||||
lda 3
|
||||
sta 4352,x
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Uplift to reg byte x succesfull.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte~) $1 reg byte a 22.0
|
||||
(byte~) $1 zp byte:3 22.0
|
||||
(byte) i
|
||||
(byte) i#1 zp byte:2 16.5
|
||||
(byte) i#2 zp byte:2 14.666666666666666
|
||||
@ -335,11 +346,13 @@ B1_from_B1:
|
||||
// (byte) i#2 = (byte) i#1 // register copy zp byte:2
|
||||
jmp B1
|
||||
B1:
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // aby=zpby1_plus_coby1
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // zpby1=zpby2_plus_coby1
|
||||
lda 2
|
||||
clc
|
||||
adc #4
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=aby
|
||||
sta 3
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
ldx 2
|
||||
sta 4352,x
|
||||
// [3] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] // zpby1=zpby1_plus_1
|
||||
@ -364,11 +377,13 @@ B1_from_BBEGIN:
|
||||
B1_from_B1:
|
||||
// (byte) i#2 = (byte) i#1 // register copy zp byte:2
|
||||
B1:
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // aby=zpby1_plus_coby1
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // zpby1=zpby2_plus_coby1
|
||||
lda 2
|
||||
clc
|
||||
adc #4
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=aby
|
||||
sta 3
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
ldx 2
|
||||
sta 4352,x
|
||||
// [3] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] // zpby1=zpby1_plus_1
|
||||
@ -390,11 +405,13 @@ B1_from_BBEGIN:
|
||||
B1_from_B1:
|
||||
// (byte) i#2 = (byte) i#1 // register copy zp byte:2
|
||||
B1:
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // aby=zpby1_plus_coby1
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // zpby1=zpby2_plus_coby1
|
||||
lda 2
|
||||
clc
|
||||
adc #4
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=aby
|
||||
sta 3
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
ldx 2
|
||||
sta 4352,x
|
||||
// [3] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] // zpby1=zpby1_plus_1
|
||||
@ -406,7 +423,7 @@ B1:
|
||||
BEND:
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(byte~) $1 reg byte a 22.0
|
||||
(byte~) $1 zp byte:3 22.0
|
||||
(label) @1
|
||||
(label) @BEGIN
|
||||
(label) @END
|
||||
@ -427,11 +444,13 @@ B1_from_BBEGIN:
|
||||
B1_from_B1:
|
||||
// (byte) i#2 = (byte) i#1 // register copy zp byte:2
|
||||
B1:
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // aby=zpby1_plus_coby1
|
||||
// [1] (byte~) $1 ← (byte) i#2 + (byte) 4 [ i#2 $1 ] // zpby1=zpby2_plus_coby1
|
||||
lda 2
|
||||
clc
|
||||
adc #4
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=aby
|
||||
sta 3
|
||||
// [2] *((word) 4352 + (byte) i#2) ← (byte~) $1 [ i#2 ] // cowo1_staridx_zpby1=zpby2
|
||||
lda 3
|
||||
ldx 2
|
||||
sta 4352,x
|
||||
// [3] (byte) i#1 ← (byte) i#2 + (byte) 1 [ i#1 ] // zpby1=zpby1_plus_1
|
||||
|
@ -1,4 +1,4 @@
|
||||
(byte~) $1 reg byte a 22.0
|
||||
(byte~) $1 zp byte:3 22.0
|
||||
(label) @1
|
||||
(label) @BEGIN
|
||||
(label) @END
|
||||
|
@ -63,6 +63,7 @@ rvaluevar__B1_from_B2:
|
||||
jmp rvaluevar__B1
|
||||
rvalue:
|
||||
lda 1024
|
||||
sta 11
|
||||
lda 1025
|
||||
sta 12
|
||||
rvalue__B1_from_rvalue:
|
||||
|
@ -1890,16 +1890,22 @@ zp byte:10 [ rvaluevar::b#0 ]
|
||||
zp byte:11 [ rvalue::b#0 ]
|
||||
zp byte:12 [ rvalue::b#1 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp ptr byte:3 to zp ptr byte:3
|
||||
Re-allocated ZP register from zp byte:5 to zp byte:5
|
||||
Re-allocated ZP register from zp ptr byte:6 to zp ptr byte:6
|
||||
Re-allocated ZP register from zp byte:8 to zp byte:8
|
||||
Re-allocated ZP register from zp byte:9 to zp byte:9
|
||||
Re-allocated ZP register from zp byte:10 to zp byte:10
|
||||
Re-allocated ZP register from zp byte:11 to zp byte:11
|
||||
Re-allocated ZP register from zp byte:12 to zp byte:12
|
||||
Uplifting of variable (byte) rvalue::b#0 to A
|
||||
Uplifting max weight Infinity live range equivalence class zp byte:8 [ rvalue::i#2 rvalue::i#1 rvalue::b#2 ]
|
||||
Error! Alive variable rvalue::i#2 register reg byte a clobbered by the ASM generated by statement [23] rvalue::b#2 ← 1024 *idx rvalue::i#2
|
||||
tax
|
||||
lda 1024,x
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Error! Alive variable rvalue::i#2 register reg byte x clobbered by the ASM generated by statement [23] rvalue::b#2 ← 1024 *idx rvalue::i#2
|
||||
lda 1024,x
|
||||
tax
|
||||
|
||||
Uplift to reg byte x resulted in clobber.
|
||||
Error! Alive variable rvalue::i#2 register reg byte y clobbered by the ASM generated by statement [23] rvalue::b#2 ← 1024 *idx rvalue::i#2
|
||||
lda 1024,y
|
||||
tay
|
||||
|
||||
Uplift to reg byte y resulted in clobber.
|
||||
REGISTER UPLIFTING
|
||||
(void()) lvalue()
|
||||
(byte[1024]) lvalue::SCREEN
|
||||
@ -1918,7 +1924,7 @@ REGISTER UPLIFTING
|
||||
(void()) rvalue()
|
||||
(byte[1024]) rvalue::SCREEN
|
||||
(byte) rvalue::b
|
||||
(byte) rvalue::b#0 reg byte a Infinity
|
||||
(byte) rvalue::b#0 zp byte:11 Infinity
|
||||
(byte) rvalue::b#1 zp byte:12 Infinity
|
||||
(byte) rvalue::b#2 zp byte:8 Infinity
|
||||
(byte) rvalue::i
|
||||
@ -2041,8 +2047,9 @@ rvaluevar__B1_from_B2:
|
||||
// (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 // register copy zp byte:5
|
||||
jmp rvaluevar__B1
|
||||
rvalue:
|
||||
// [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] // aby=_star_cowo1
|
||||
// [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] // zpby1=_star_cowo1
|
||||
lda 1024
|
||||
sta 11
|
||||
// [19] (byte) rvalue::b#1 ← * (word) 1025 [ ] // zpby1=_star_cowo1
|
||||
lda 1025
|
||||
sta 12
|
||||
@ -2195,8 +2202,9 @@ rvaluevar__B1_from_B2:
|
||||
// (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 // register copy zp byte:5
|
||||
jmp rvaluevar__B1
|
||||
rvalue:
|
||||
// [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] // aby=_star_cowo1
|
||||
// [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] // zpby1=_star_cowo1
|
||||
lda 1024
|
||||
sta 11
|
||||
// [19] (byte) rvalue::b#1 ← * (word) 1025 [ ] // zpby1=_star_cowo1
|
||||
lda 1025
|
||||
sta 12
|
||||
@ -2283,7 +2291,7 @@ FINAL SYMBOL TABLE
|
||||
(label) rvalue::@return
|
||||
(byte[1024]) rvalue::SCREEN
|
||||
(byte) rvalue::b
|
||||
(byte) rvalue::b#0 reg byte a Infinity
|
||||
(byte) rvalue::b#0 zp byte:11 Infinity
|
||||
(byte) rvalue::b#1 zp byte:12 Infinity
|
||||
(byte) rvalue::b#2 zp byte:8 Infinity
|
||||
(byte) rvalue::i
|
||||
@ -2386,8 +2394,9 @@ rvaluevar__B1_from_B2:
|
||||
// (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 // register copy zp byte:5
|
||||
jmp rvaluevar__B1
|
||||
rvalue:
|
||||
// [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] // aby=_star_cowo1
|
||||
// [18] (byte) rvalue::b#0 ← * (word) 1024 [ ] // zpby1=_star_cowo1
|
||||
lda 1024
|
||||
sta 11
|
||||
// [19] (byte) rvalue::b#1 ← * (word) 1025 [ ] // zpby1=_star_cowo1
|
||||
lda 1025
|
||||
sta 12
|
||||
|
@ -30,7 +30,7 @@
|
||||
(label) rvalue::@return
|
||||
(byte[1024]) rvalue::SCREEN
|
||||
(byte) rvalue::b
|
||||
(byte) rvalue::b#0 reg byte a Infinity
|
||||
(byte) rvalue::b#0 zp byte:11 Infinity
|
||||
(byte) rvalue::b#1 zp byte:12 Infinity
|
||||
(byte) rvalue::b#2 zp byte:8 Infinity
|
||||
(byte) rvalue::i
|
||||
|
@ -20,6 +20,7 @@ B3:
|
||||
lda 4
|
||||
clc
|
||||
adc 5
|
||||
sta 4
|
||||
BEND:
|
||||
sum:
|
||||
lda 2
|
||||
|
@ -390,18 +390,43 @@ zp byte:3 [ sum::b#2 ]
|
||||
zp byte:4 [ s1#0 s3#0 ]
|
||||
zp byte:5 [ s2#0 ]
|
||||
|
||||
Re-allocated ZP register from zp byte:2 to zp byte:2
|
||||
Re-allocated ZP register from zp byte:3 to zp byte:3
|
||||
Re-allocated ZP register from zp byte:4 to zp byte:4
|
||||
Re-allocated ZP register from zp byte:5 to zp byte:5
|
||||
Uplifting of variable (byte) s3#0 to A
|
||||
Uplifting max weight Infinity live range equivalence class zp byte:4 [ s1#0 s3#0 ]
|
||||
Error! Alive variable s1#0 register reg byte a clobbered by the ASM generated by statement [0] call sum param-assignment
|
||||
sum_from_BBEGIN:
|
||||
lda #2
|
||||
sta 3
|
||||
lda #1
|
||||
sta 2
|
||||
jsr sum
|
||||
|
||||
Error! Alive variable s1#0 register reg byte a clobbered by the ASM generated by statement [2] call sum param-assignment
|
||||
sum_from_B2:
|
||||
lda #13
|
||||
sta 3
|
||||
lda #9
|
||||
sta 2
|
||||
jsr sum
|
||||
|
||||
Error! Alive variable s1#0 register reg byte a clobbered by the ASM generated by statement [3] s2#0 ← sum::return#0
|
||||
lda 2
|
||||
sta 5
|
||||
|
||||
Error! Alive variable s1#0 register reg byte a clobbered by the ASM generated by statement [6] sum::return#0 ← sum::a#2 + sum::b#2
|
||||
lda 2
|
||||
clc
|
||||
adc 3
|
||||
sta 2
|
||||
|
||||
Uplift to reg byte a resulted in clobber.
|
||||
Uplift to reg byte x succesfull.
|
||||
Uplift to reg byte y succesfull.
|
||||
REGISTER UPLIFTING
|
||||
(byte) s1
|
||||
(byte) s1#0 zp byte:4 0.5714285714285714
|
||||
(byte) s2
|
||||
(byte) s2#0 zp byte:5 4.0
|
||||
(byte) s3
|
||||
(byte) s3#0 reg byte a Infinity
|
||||
(byte) s3#0 zp byte:4 Infinity
|
||||
(byte()) sum((byte) sum::a , (byte) sum::b)
|
||||
(byte) sum::a
|
||||
(byte) sum::a#2 zp byte:2 2.0
|
||||
@ -444,10 +469,11 @@ B3:
|
||||
// [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] // zpby1=zpby2
|
||||
lda 2
|
||||
sta 5
|
||||
// [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] // aby=zpby1_plus_zpby2
|
||||
// [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] // zpby1=zpby1_plus_zpby2
|
||||
lda 4
|
||||
clc
|
||||
adc 5
|
||||
sta 4
|
||||
jmp BEND
|
||||
BEND:
|
||||
sum:
|
||||
@ -491,10 +517,11 @@ B3:
|
||||
// [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] // zpby1=zpby2
|
||||
lda 2
|
||||
sta 5
|
||||
// [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] // aby=zpby1_plus_zpby2
|
||||
// [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] // zpby1=zpby1_plus_zpby2
|
||||
lda 4
|
||||
clc
|
||||
adc 5
|
||||
sta 4
|
||||
BEND:
|
||||
sum:
|
||||
// [6] (byte) sum::return#0 ← (byte) sum::a#2 + (byte) sum::b#2 [ sum::return#0 s1#0 ] // zpby1=zpby1_plus_zpby2
|
||||
@ -515,7 +542,7 @@ FINAL SYMBOL TABLE
|
||||
(byte) s2
|
||||
(byte) s2#0 zp byte:5 4.0
|
||||
(byte) s3
|
||||
(byte) s3#0 reg byte a Infinity
|
||||
(byte) s3#0 zp byte:4 Infinity
|
||||
(byte()) sum((byte) sum::a , (byte) sum::b)
|
||||
(label) sum::@return
|
||||
(byte) sum::a
|
||||
@ -555,10 +582,11 @@ B3:
|
||||
// [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] // zpby1=zpby2
|
||||
lda 2
|
||||
sta 5
|
||||
// [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] // aby=zpby1_plus_zpby2
|
||||
// [4] (byte) s3#0 ← (byte) s1#0 + (byte) s2#0 [ ] // zpby1=zpby1_plus_zpby2
|
||||
lda 4
|
||||
clc
|
||||
adc 5
|
||||
sta 4
|
||||
BEND:
|
||||
sum:
|
||||
// [6] (byte) sum::return#0 ← (byte) sum::a#2 + (byte) sum::b#2 [ sum::return#0 s1#0 ] // zpby1=zpby1_plus_zpby2
|
||||
|
@ -7,7 +7,7 @@
|
||||
(byte) s2
|
||||
(byte) s2#0 zp byte:5 4.0
|
||||
(byte) s3
|
||||
(byte) s3#0 reg byte a Infinity
|
||||
(byte) s3#0 zp byte:4 Infinity
|
||||
(byte()) sum((byte) sum::a , (byte) sum::b)
|
||||
(label) sum::@return
|
||||
(byte) sum::a
|
||||
|
8
src/main/java/dk/camelot64/kickc/test/ref/useglobal.asm
Normal file
8
src/main/java/dk/camelot64/kickc/test/ref/useglobal.asm
Normal file
@ -0,0 +1,8 @@
|
||||
BBEGIN:
|
||||
jsr main
|
||||
BEND:
|
||||
main:
|
||||
lda #1
|
||||
sta 1024
|
||||
main__Breturn:
|
||||
rts
|
10
src/main/java/dk/camelot64/kickc/test/ref/useglobal.cfg
Normal file
10
src/main/java/dk/camelot64/kickc/test/ref/useglobal.cfg
Normal file
@ -0,0 +1,10 @@
|
||||
@BEGIN: from
|
||||
[0] call main param-assignment [ ]
|
||||
to:@END
|
||||
@END: from @BEGIN
|
||||
main: from @BEGIN
|
||||
[1] *((word) 1024) ← (byte) 1 [ ]
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
[2] return [ ]
|
||||
to:@RETURN
|
261
src/main/java/dk/camelot64/kickc/test/ref/useglobal.log
Normal file
261
src/main/java/dk/camelot64/kickc/test/ref/useglobal.log
Normal file
@ -0,0 +1,261 @@
|
||||
// Tests procedures using global variables (should not fail)
|
||||
byte* SCREEN = $0400;
|
||||
main();
|
||||
void main() {
|
||||
*SCREEN = 1;
|
||||
}
|
||||
PROGRAM
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
proc (void()) main()
|
||||
*((byte*) SCREEN) ← (byte) 1
|
||||
main::@return:
|
||||
return
|
||||
endproc // main()
|
||||
|
||||
SYMBOLS
|
||||
(void~) $0
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
INITIAL CONTROL FLOW GRAPH
|
||||
@BEGIN: from
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
to:@1
|
||||
main: from
|
||||
*((byte*) SCREEN) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@1: from @BEGIN
|
||||
to:@END
|
||||
@END: from @1
|
||||
|
||||
Removing empty block @1
|
||||
CONTROL FLOW GRAPH
|
||||
@BEGIN: from
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
(void~) $0 ← call main
|
||||
to:@END
|
||||
main: from
|
||||
*((byte*) SCREEN) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @BEGIN
|
||||
|
||||
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL
|
||||
@BEGIN: from
|
||||
(byte*) SCREEN ← (word) 1024
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: from @BEGIN
|
||||
to:@END
|
||||
main: from @BEGIN
|
||||
*((byte*) SCREEN) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @2
|
||||
|
||||
Completing Phi functions...
|
||||
CONTROL FLOW GRAPH SSA
|
||||
@BEGIN: from
|
||||
(byte*) SCREEN#0 ← (word) 1024
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: from @BEGIN
|
||||
to:@END
|
||||
main: from @BEGIN
|
||||
(byte*) SCREEN#1 ← phi( @BEGIN/(byte*) SCREEN#0 )
|
||||
*((byte*) SCREEN#1) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @2
|
||||
|
||||
CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN
|
||||
@BEGIN: from
|
||||
(byte*) SCREEN#0 ← (word) 1024
|
||||
call main param-assignment
|
||||
to:@2
|
||||
@2: from @BEGIN
|
||||
to:@END
|
||||
main: from @BEGIN
|
||||
(byte*) SCREEN#1 ← phi( @BEGIN/(byte*) SCREEN#0 )
|
||||
*((byte*) SCREEN#1) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @2
|
||||
|
||||
Culled Empty Block (label) @2
|
||||
Succesful SSA optimization Pass2CullEmptyBlocks
|
||||
CONTROL FLOW GRAPH
|
||||
@BEGIN: from
|
||||
(byte*) SCREEN#0 ← (word) 1024
|
||||
call main param-assignment
|
||||
to:@END
|
||||
main: from @BEGIN
|
||||
(byte*) SCREEN#1 ← phi( @BEGIN/(byte*) SCREEN#0 )
|
||||
*((byte*) SCREEN#1) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @BEGIN
|
||||
|
||||
Constant (byte*) SCREEN#0 (word) 1024
|
||||
Succesful SSA optimization Pass2ConstantPropagation
|
||||
CONTROL FLOW GRAPH
|
||||
@BEGIN: from
|
||||
call main param-assignment
|
||||
to:@END
|
||||
main: from @BEGIN
|
||||
(byte*) SCREEN#1 ← phi( @BEGIN/(word) 1024 )
|
||||
*((byte*) SCREEN#1) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @BEGIN
|
||||
|
||||
Redundant Phi (byte*) SCREEN#1 (word) 1024
|
||||
Succesful SSA optimization Pass2RedundantPhiElimination
|
||||
CONTROL FLOW GRAPH
|
||||
@BEGIN: from
|
||||
call main param-assignment
|
||||
to:@END
|
||||
main: from @BEGIN
|
||||
*((word) 1024) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
@END: from @BEGIN
|
||||
|
||||
Block Sequence Planned @BEGIN @END main main::@return
|
||||
Block Sequence Planned @BEGIN @END main main::@return
|
||||
CONTROL FLOW GRAPH - PHI LIFTED
|
||||
@BEGIN: from
|
||||
call main param-assignment
|
||||
to:@END
|
||||
@END: from @BEGIN
|
||||
main: from @BEGIN
|
||||
*((word) 1024) ← (byte) 1
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
return
|
||||
to:@RETURN
|
||||
|
||||
Propagating live ranges...
|
||||
CONTROL FLOW GRAPH - LIVE RANGES
|
||||
@BEGIN: from
|
||||
[0] call main param-assignment [ ]
|
||||
to:@END
|
||||
@END: from @BEGIN
|
||||
main: from @BEGIN
|
||||
[1] *((word) 1024) ← (byte) 1 [ ]
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
[2] return [ ]
|
||||
to:@RETURN
|
||||
|
||||
Created 0 initial phi equivalence classes
|
||||
Coalesced down to 0 phi equivalence classes
|
||||
Block Sequence Planned @BEGIN @END main main::@return
|
||||
Propagating live ranges...
|
||||
CONTROL FLOW GRAPH - PHI MEM COALESCED
|
||||
@BEGIN: from
|
||||
[0] call main param-assignment [ ]
|
||||
to:@END
|
||||
@END: from @BEGIN
|
||||
main: from @BEGIN
|
||||
[1] *((word) 1024) ← (byte) 1 [ ]
|
||||
to:main::@return
|
||||
main::@return: from main
|
||||
[2] return [ ]
|
||||
to:@RETURN
|
||||
|
||||
CALL GRAPH
|
||||
Calls in [] to 0:main
|
||||
|
||||
DOMINATORS
|
||||
@BEGIN dominated by @BEGIN
|
||||
@END dominated by @BEGIN @END
|
||||
main dominated by @BEGIN main
|
||||
main::@return dominated by @BEGIN main::@return main
|
||||
|
||||
NATURAL LOOPS
|
||||
|
||||
Found 0 loops in scope []
|
||||
Found 0 loops in scope [main]
|
||||
NATURAL LOOPS WITH DEPTH
|
||||
|
||||
Initial phi equivalence classes
|
||||
Copy Coalesced equivalence classes
|
||||
Complete equivalence classes
|
||||
|
||||
VARIABLE REGISTER WEIGHTS
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
|
||||
|
||||
REGISTER UPLIFTING
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
|
||||
|
||||
INITIAL ASM
|
||||
BBEGIN:
|
||||
jsr main
|
||||
jmp BEND
|
||||
BEND:
|
||||
main:
|
||||
// [1] *((word) 1024) ← (byte) 1 [ ] // _star_cowo1=coby2
|
||||
lda #1
|
||||
sta 1024
|
||||
jmp main__Breturn
|
||||
main__Breturn:
|
||||
rts
|
||||
|
||||
Removing instruction jmp BEND
|
||||
Removing instruction jmp main__Breturn
|
||||
Succesful ASM optimization Pass5NextJumpElimination
|
||||
ASSEMBLER
|
||||
BBEGIN:
|
||||
jsr main
|
||||
BEND:
|
||||
main:
|
||||
// [1] *((word) 1024) ← (byte) 1 [ ] // _star_cowo1=coby2
|
||||
lda #1
|
||||
sta 1024
|
||||
main__Breturn:
|
||||
rts
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
(label) @BEGIN
|
||||
(label) @END
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
||||
|
||||
FINAL CODE
|
||||
BBEGIN:
|
||||
jsr main
|
||||
BEND:
|
||||
main:
|
||||
// [1] *((word) 1024) ← (byte) 1 [ ] // _star_cowo1=coby2
|
||||
lda #1
|
||||
sta 1024
|
||||
main__Breturn:
|
||||
rts
|
||||
|
6
src/main/java/dk/camelot64/kickc/test/ref/useglobal.sym
Normal file
6
src/main/java/dk/camelot64/kickc/test/ref/useglobal.sym
Normal file
@ -0,0 +1,6 @@
|
||||
(label) @BEGIN
|
||||
(label) @END
|
||||
(byte*) SCREEN
|
||||
(void()) main()
|
||||
(label) main::@return
|
||||
|
Loading…
x
Reference in New Issue
Block a user