1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Removed unnecessary (synthesizeable) fragments.

This commit is contained in:
jespergravgaard 2017-10-21 12:58:03 +02:00
parent 774e909a20
commit f63a540d15
36 changed files with 136 additions and 333 deletions

View File

@ -1,2 +0,0 @@
lda {cowo1}
sta {zpby1}

View File

@ -1,3 +0,0 @@
ldy #0
lda ({zpptrby1}),y
sta {zpby1}

View File

@ -1,3 +0,0 @@
sec
sbc {zpby2}
sta {zpby1}

View File

@ -1,3 +0,0 @@
clc
adc #1
sta {zpby1}

View File

@ -1,2 +0,0 @@
asl
sta {zpby1}

View File

@ -1,3 +0,0 @@
clc
adc #{coby1}
sta {zpby1}

View File

@ -1,4 +0,0 @@
stx $ff
clc
adc $ff
sta {zpby1}

View File

@ -1,4 +0,0 @@
sty $ff
clc
adc $ff
sta {zpby1}

View File

@ -1,3 +0,0 @@
clc
adc {zpby2}
sta {zpby1}

View File

@ -1,2 +0,0 @@
lda #{coby1}
sta {zpby1}

View File

@ -1,4 +0,0 @@
txa
clc
adc #{coby1}
sta {zpby1}

View File

@ -1,4 +0,0 @@
lda #{coby1}
clc
adc {zpby2}
sta {zpby1}

View File

@ -1,2 +0,0 @@
lda {coby1}+{coby2}
sta {zpby1}

View File

@ -1,3 +0,0 @@
tax
lda {cowo1},x
sta {zpby1}

View File

@ -1,2 +0,0 @@
lda {cowo1},x
sta {zpby1}

View File

@ -1,2 +0,0 @@
lda {cowo1},y
sta {zpby1}

View File

@ -1,3 +0,0 @@
ldx {zpby1}
lda {cowo1},x
sta {zpby1}

View File

@ -1,3 +0,0 @@
ldx {zpby2}
lda {cowo1},x
sta {zpby1}

View File

@ -1,4 +0,0 @@
txa
sec
sbc #{coby1}
sta {zpby1}

View File

@ -1,4 +0,0 @@
stx $ff
clc
adc $ff
sta {zpby1}

View File

@ -1,4 +0,0 @@
txa
clc
adc #{coby1}
sta {zpby1}

View File

@ -1,3 +0,0 @@
txa
asl
sta {zpby1}

View File

@ -1,5 +0,0 @@
stx $ff
tya
clc
adc $ff
sta {zpby1}

View File

@ -1,4 +0,0 @@
txa
clc
adc {zpby2}
sta {zpby1}

View File

@ -1,4 +0,0 @@
sty $ff
clc
adc $ff
sta {zpby1}

View File

@ -1,4 +0,0 @@
tya
clc
adc #{coby1}
sta {zpby1}

View File

@ -1,5 +0,0 @@
sty $ff
txa
clc
adc $ff
sta {zpby1}

View File

@ -1,3 +0,0 @@
tay
asl
sta {zpby1}

View File

@ -1,4 +0,0 @@
tya
clc
adc {zpby2}
sta {zpby1}

View File

@ -1,4 +0,0 @@
lda {zpby1}
sec
sbc #{coby1}
sta {zpby1}

View File

@ -6,13 +6,14 @@ main: {
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label e = 4
.label y = 5
lda #4
sta y
ldx #yd/2
sta x
lda #yd/2
sta e
ldx #4
lda #<SCREEN+4*$28+4
sta cursor
lda #>SCREEN+4*$28+4
@ -21,17 +22,18 @@ main: {
ldy #0
lda #STAR
sta (cursor),y
inc x
inx
inc cursor
bne !+
inc cursor+1
!:
txa
lda e
clc
adc #yd
tax
cpx #xd
bcc b2
sta e
lda #xd
cmp e
bcs b2
inc y
lda cursor
clc
@ -40,13 +42,11 @@ main: {
bcc !+
inc cursor+1
!:
txa
sec
sbc #xd
tax
sta e
b2:
lda x
cmp #x1+1
cpx #x1+1
bcc b1
rts
}

View File

@ -1510,7 +1510,6 @@ main: {
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
lda e
sec
sbc #xd
sta e
@ -1558,12 +1557,13 @@ REGISTER UPLIFT SCOPES
Uplift Scope [main] 55: zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] 46.75: zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] 29.33: zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] 14.67: zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
Uplift Scope []
Uplifting [main] best 1165 combination reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
Uplifting [] best 1165 combination
Uplifting [main] best 1145 combination zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ] zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ] zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ] reg byte x [ main::x#2 main::x#1 ]
Uplifting [] best 1145 combination
Attempting to uplift remaining variables inzp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
Uplifting [main] best 1145 combination zp ZP_BYTE:5 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
Attempting to uplift remaining variables inzp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
Uplifting [main] best 1165 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
Attempting to uplift remaining variables inzp ZP_BYTE:4 [ main::x#2 main::x#1 ]
Uplifting [main] best 1165 combination zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
Uplifting [main] best 1145 combination zp ZP_BYTE:6 [ main::y#2 main::y#4 main::y#1 ]
Allocated (was zp ZP_BYTE:5) zp ZP_BYTE:4 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
Allocated (was zp ZP_BYTE:6) zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
Removing instruction jmp bend
Removing instruction jmp b1
@ -1589,19 +1589,19 @@ main: {
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label e = 4
.label y = 5
//SEG6 [2] phi from main to main::@1
b1_from_main:
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
lda #4
sta y
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
ldx #yd/2
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
lda #4
sta x
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
lda #yd/2
sta e
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
ldx #4
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
lda #<SCREEN+4*$28+4
sta cursor
@ -1620,21 +1620,22 @@ main: {
ldy #0
lda #STAR
sta (cursor),y
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
inc x
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
inx
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
inc cursor
bne !+
inc cursor+1
!:
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
txa
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
lda e
clc
adc #yd
tax
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
cpx #xd
bcc b2_from_b1
sta e
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
lda #xd
cmp e
bcs b2_from_b1
//SEG22 main::@3
b3:
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
@ -1647,11 +1648,10 @@ main: {
bcc !+
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
txa
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
sec
sbc #xd
tax
sta e
//SEG26 [11] phi from main::@1 main::@3 to main::@2
b2_from_b1:
b2_from_b3:
@ -1660,109 +1660,8 @@ main: {
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
//SEG30 main::@2
b2:
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
lda x
cmp #x1+1
bcc b1_from_b2
//SEG32 main::@return
breturn:
//SEG33 [13] return [ ]
rts
}
Removing instruction lda #4
Succesful ASM optimization Pass5UnnecesaryLoadElimination
ASSEMBLER
//SEG0 Global Constants & labels
.const STAR = $51
.const SCREEN = $400
//SEG1 @begin
bbegin:
//SEG2 [0] call main param-assignment [ ]
//SEG3 [1] phi from @begin to main
main_from_bbegin:
jsr main
//SEG4 @end
bend:
//SEG5 main
main: {
.const x1 = $27
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label y = 5
//SEG6 [2] phi from main to main::@1
b1_from_main:
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
lda #4
sta y
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
ldx #yd/2
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
sta x
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
lda #<SCREEN+4*$28+4
sta cursor
lda #>SCREEN+4*$28+4
sta cursor+1
jmp b1
//SEG11 [2] phi from main::@2 to main::@1
b1_from_b2:
//SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy
//SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy
//SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy
//SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy
//SEG16 main::@1
b1:
//SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1
ldy #0
lda #STAR
sta (cursor),y
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
inc x
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
inc cursor
bne !+
inc cursor+1
!:
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
txa
clc
adc #yd
tax
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
cpx #xd
bcc b2_from_b1
//SEG22 main::@3
b3:
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
inc y
//SEG24 [9] (byte*) main::cursor#2 ← (byte*) main::cursor#1 + (byte) 40 [ main::x#1 main::e#1 main::y#1 main::cursor#2 ] -- zpptrby1=zpptrby1_plus_coby1
lda cursor
clc
adc #$28
sta cursor
bcc !+
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
txa
sec
sbc #xd
tax
//SEG26 [11] phi from main::@1 main::@3 to main::@2
b2_from_b1:
b2_from_b3:
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
//SEG30 main::@2
b2:
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
lda x
cmp #x1+1
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
cpx #x1+1
bcc b1_from_b2
//SEG32 main::@return
breturn:
@ -1794,18 +1693,19 @@ main: {
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label e = 4
.label y = 5
//SEG6 [2] phi from main to main::@1
b1_from_main:
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
lda #4
sta y
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
ldx #yd/2
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
sta x
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
lda #yd/2
sta e
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
ldx #4
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
lda #<SCREEN+4*$28+4
sta cursor
@ -1823,21 +1723,22 @@ main: {
ldy #0
lda #STAR
sta (cursor),y
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
inc x
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
inx
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
inc cursor
bne !+
inc cursor+1
!:
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
txa
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
lda e
clc
adc #yd
tax
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
cpx #xd
bcc b2
sta e
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
lda #xd
cmp e
bcs b2
//SEG22 main::@3
b3:
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
@ -1850,20 +1751,18 @@ main: {
bcc !+
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
txa
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
sec
sbc #xd
tax
sta e
//SEG26 [11] phi from main::@1 main::@3 to main::@2
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
//SEG30 main::@2
b2:
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
lda x
cmp #x1+1
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
cpx #x1+1
bcc b1
//SEG32 main::@return
breturn:
@ -1892,17 +1791,18 @@ main: {
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label e = 4
.label y = 5
//SEG6 [2] phi from main to main::@1
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
lda #4
sta y
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
ldx #yd/2
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
sta x
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
lda #yd/2
sta e
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
ldx #4
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
lda #<SCREEN+4*$28+4
sta cursor
@ -1920,21 +1820,22 @@ main: {
ldy #0
lda #STAR
sta (cursor),y
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
inc x
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
inx
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
inc cursor
bne !+
inc cursor+1
!:
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
txa
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
lda e
clc
adc #yd
tax
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
cpx #xd
bcc b2
sta e
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
lda #xd
cmp e
bcs b2
//SEG22 main::@3
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
inc y
@ -1946,20 +1847,18 @@ main: {
bcc !+
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
txa
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
sec
sbc #xd
tax
sta e
//SEG26 [11] phi from main::@1 main::@3 to main::@2
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
//SEG30 main::@2
b2:
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
lda x
cmp #x1+1
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
cpx #x1+1
bcc b1
//SEG32 main::@return
//SEG33 [13] return [ ]
@ -1983,17 +1882,18 @@ main: {
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label e = 4
.label y = 5
//SEG6 [2] phi from main to main::@1
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
lda #4
sta y
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
ldx #yd/2
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
sta x
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
lda #yd/2
sta e
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
ldx #4
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
lda #<SCREEN+4*$28+4
sta cursor
@ -2010,21 +1910,22 @@ main: {
ldy #0
lda #STAR
sta (cursor),y
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
inc x
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
inx
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
inc cursor
bne !+
inc cursor+1
!:
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
txa
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
lda e
clc
adc #yd
tax
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
cpx #xd
bcc b2
sta e
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
lda #xd
cmp e
bcs b2
//SEG22 main::@3
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
inc y
@ -2036,20 +1937,18 @@ main: {
bcc !+
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
txa
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
sec
sbc #xd
tax
sta e
//SEG26 [11] phi from main::@1 main::@3 to main::@2
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
//SEG30 main::@2
b2:
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
lda x
cmp #x1+1
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
cpx #x1+1
bcc b1
//SEG32 main::@return
//SEG33 [13] return [ ]
@ -2074,13 +1973,13 @@ FINAL SYMBOL TABLE
(byte*) main::cursor#3 cursor zp ZP_PTR_BYTE:2 11.0
(byte*) main::cursor#5 cursor zp ZP_PTR_BYTE:2 16.5
(byte) main::e
(byte) main::e#1 reg byte x 11.0
(byte) main::e#2 reg byte x 22.0
(byte) main::e#3 reg byte x 5.5
(byte) main::e#5 reg byte x 16.5
(byte) main::e#1 e zp ZP_BYTE:4 11.0
(byte) main::e#2 e zp ZP_BYTE:4 22.0
(byte) main::e#3 e zp ZP_BYTE:4 5.5
(byte) main::e#5 e zp ZP_BYTE:4 16.5
(byte) main::x
(byte) main::x#1 x zp ZP_BYTE:4 3.666666666666667
(byte) main::x#2 x zp ZP_BYTE:4 11.0
(byte) main::x#1 reg byte x 3.666666666666667
(byte) main::x#2 reg byte x 11.0
(byte) main::x0
(byte) main::x1
(const byte) main::x1#0 x1 = (byte) 39
@ -2097,8 +1996,8 @@ FINAL SYMBOL TABLE
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4
zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
reg byte x [ main::x#2 main::x#1 ]
zp ZP_BYTE:4 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]
FINAL CODE
@ -2116,17 +2015,18 @@ main: {
.const y1 = $18
.const xd = x1-4
.const yd = y1-4
.label x = 4
.label cursor = 2
.label e = 4
.label y = 5
//SEG6 [2] phi from main to main::@1
//SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1
lda #4
sta y
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- xby=coby1
ldx #yd/2
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1
sta x
//SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1
lda #yd/2
sta e
//SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1
ldx #4
//SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1
lda #<SCREEN+4*$28+4
sta cursor
@ -2143,21 +2043,22 @@ main: {
ldy #0
lda #STAR
sta (cursor),y
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- zpby1=zpby1_plus_1
inc x
//SEG18 [4] (byte) main::x#1 ← (byte) main::x#2 + (byte) 1 [ main::cursor#3 main::e#3 main::y#2 main::x#1 ] -- xby=xby_plus_1
inx
//SEG19 [5] (byte*) main::cursor#1 ← (byte*) main::cursor#3 + (byte) 1 [ main::e#3 main::y#2 main::x#1 main::cursor#1 ] -- zpptrby1=zpptrby1_plus_1
inc cursor
bne !+
inc cursor+1
!:
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- xby=xby_plus_coby1
txa
//SEG20 [6] (byte) main::e#1 ← (byte) main::e#3 + (const byte) main::yd#0 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- zpby1=zpby1_plus_coby1
lda e
clc
adc #yd
tax
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_xby_then_la1
cpx #xd
bcc b2
sta e
//SEG21 [7] if((const byte) main::xd#0>=(byte) main::e#1) goto main::@2 [ main::y#2 main::x#1 main::cursor#1 main::e#1 ] -- coby1_ge_zpby1_then_la1
lda #xd
cmp e
bcs b2
//SEG22 main::@3
//SEG23 [8] (byte) main::y#1 ← (byte) main::y#2 + (byte) 1 [ main::x#1 main::cursor#1 main::e#1 main::y#1 ] -- zpby1=zpby1_plus_1
inc y
@ -2169,20 +2070,18 @@ main: {
bcc !+
inc cursor+1
!:
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- xby=xby_minus_coby1
txa
//SEG25 [10] (byte) main::e#2 ← (byte) main::e#1 - (const byte) main::xd#0 [ main::x#1 main::y#1 main::cursor#2 main::e#2 ] -- zpby1=zpby1_minus_coby1
sec
sbc #xd
tax
sta e
//SEG26 [11] phi from main::@1 main::@3 to main::@2
//SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy
//SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy
//SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy
//SEG30 main::@2
b2:
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- zpby1_lt_coby1_then_la1
lda x
cmp #x1+1
//SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1
cpx #x1+1
bcc b1
//SEG32 main::@return
//SEG33 [13] return [ ]

View File

@ -15,13 +15,13 @@
(byte*) main::cursor#3 cursor zp ZP_PTR_BYTE:2 11.0
(byte*) main::cursor#5 cursor zp ZP_PTR_BYTE:2 16.5
(byte) main::e
(byte) main::e#1 reg byte x 11.0
(byte) main::e#2 reg byte x 22.0
(byte) main::e#3 reg byte x 5.5
(byte) main::e#5 reg byte x 16.5
(byte) main::e#1 e zp ZP_BYTE:4 11.0
(byte) main::e#2 e zp ZP_BYTE:4 22.0
(byte) main::e#3 e zp ZP_BYTE:4 5.5
(byte) main::e#5 e zp ZP_BYTE:4 16.5
(byte) main::x
(byte) main::x#1 x zp ZP_BYTE:4 3.666666666666667
(byte) main::x#2 x zp ZP_BYTE:4 11.0
(byte) main::x#1 reg byte x 3.666666666666667
(byte) main::x#2 reg byte x 11.0
(byte) main::x0
(byte) main::x1
(const byte) main::x1#0 x1 = (byte) 39
@ -38,6 +38,6 @@
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4
zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]
reg byte x [ main::e#3 main::e#5 main::e#1 main::e#2 ]
reg byte x [ main::x#2 main::x#1 ]
zp ZP_BYTE:4 [ main::e#3 main::e#5 main::e#1 main::e#2 ]
zp ZP_BYTE:5 [ main::y#2 main::y#4 main::y#1 ]

View File

@ -1250,7 +1250,6 @@ b3:
inc idx+1
!:
//SEG21 [8] (byte) e#2 ← (byte) e#1 - (const byte) xd#0 [ x#1 y#1 idx#2 e#2 ] -- zpby1=zpby1_minus_coby1
lda e
sec
sbc #xd
sta e

View File

@ -694,9 +694,9 @@ main: {
lda inc.return
sta _0
//SEG11 [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inc::$0 ] -- zpby1=coby1_plus_zpby2
lda #4
lda _0
clc
adc _0
adc #4
sta a
//SEG12 [5] call inc param-assignment [ inc::return#0 main::a#1 ]
//SEG13 [9] phi from main::@1 to inc
@ -744,6 +744,7 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ i#
Statement [10] (byte~) inc::$0 ← (byte) i#11 + (byte) 7 [ inc::$0 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::a#1 ]
Statement [4] (byte) main::a#1 ← (byte) 4 + (byte~) main::$0 [ main::a#1 inc::$0 ] always clobbers reg byte a
Statement [7] (byte) main::a#2 ← (byte) main::a#1 + (byte~) main::$2 [ ] always clobbers reg byte a
Statement [10] (byte~) inc::$0 ← (byte) i#11 + (byte) 7 [ inc::$0 ] always clobbers reg byte a
REGISTER UPLIFT POTENTIAL REGISTERS
Potential registers zp ZP_BYTE:2 [ i#11 inc::$0 ] : zp ZP_BYTE:2 , reg byte x , reg byte y ,

View File

@ -7786,7 +7786,9 @@ Removing always clobbered register reg byte a as potential for zp ZP_BYTE:37 [ f
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ render::x#2 render::x#1 ]
Statement [72] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 findcol::$12 ] always clobbers reg byte a
Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ findcol::diff#4 findcol::diff#1 findcol::diff#0 ]
Statement [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] always clobbers reg byte a
Statement [82] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 findcol::$14 ] always clobbers reg byte a
Statement [83] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#2 ] always clobbers reg byte a
Statement [84] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#0 ] always clobbers reg byte a
Statement [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] always clobbers reg byte a reg byte y
Statement [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] always clobbers reg byte a
@ -7800,7 +7802,9 @@ Statement [43] (byte~) animate::$31 ← (byte~) animate::$30 - (byte) 40 [ anima
Statement [56] (byte*) render::colline#1 ← (byte*) render::colline#2 + (byte) 40 [ render::y#2 render::colline#1 ] always clobbers reg byte a
Statement [69] (byte) findcol::diff#1 ← (byte) findcol::xp#0 - (byte) findcol::x#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#1 ] always clobbers reg byte a
Statement [72] (byte~) findcol::$12 ← (byte) findcol::yp#0 - (byte) findcol::y#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 findcol::$12 ] always clobbers reg byte a
Statement [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] always clobbers reg byte a
Statement [82] (byte~) findcol::$14 ← (byte) findcol::y#0 - (byte) findcol::yp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#4 findcol::$14 ] always clobbers reg byte a
Statement [83] (byte) findcol::diff#2 ← (byte) findcol::diff#4 + (byte~) findcol::$14 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#2 ] always clobbers reg byte a
Statement [84] (byte) findcol::diff#0 ← (byte) findcol::x#0 - (byte) findcol::xp#0 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#0 ] always clobbers reg byte a
Statement [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] always clobbers reg byte a reg byte y
Statement [89] if((byte*) initscreen::screen#1<(const byte*) SCREEN#0+(word) 1000) goto initscreen::@1 [ initscreen::screen#1 ] always clobbers reg byte a