mirror of
https://gitlab.com/camelot/kickc.git
synced 2024-11-16 21:07:56 +00:00
Added fragments. Fixed problem in CIA timer library and tests.
This commit is contained in:
parent
bd15b53cab
commit
88c26c2507
@ -12,6 +12,7 @@
|
|||||||
<orderEntry type="inheritedJdk" />
|
<orderEntry type="inheritedJdk" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:antlr4:4.9" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:antlr4:4.9" level="project" />
|
||||||
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:antlr-runtime:3.5.2" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:ST4:4.3" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.antlr:ST4:4.3" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.3" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: org.abego.treelayout:org.abego.treelayout.core:1.0.3" level="project" />
|
||||||
<orderEntry type="library" scope="PROVIDED" name="Maven: com.ibm.icu:icu4j:61.1" level="project" />
|
<orderEntry type="library" scope="PROVIDED" name="Maven: com.ibm.icu:icu4j:61.1" level="project" />
|
||||||
|
2164
src/main/fragment/cache/fragment-cache-csg65ce02.asm
vendored
2164
src/main/fragment/cache/fragment-cache-csg65ce02.asm
vendored
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
//KICKC FRAGMENT CACHE aafa246f3 aafa2666a
|
//KICKC FRAGMENT CACHE 9a29ecc94 9a29eec1a
|
||||||
//FRAGMENT _deref_pbuc1=vbuc2
|
//FRAGMENT _deref_pbuc1=vbuc2
|
||||||
lda #{c2}
|
lda #{c2}
|
||||||
sta {c1}
|
sta {c1}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
//KICKC FRAGMENT CACHE aafa246f3 aafa2666a
|
//KICKC FRAGMENT CACHE 9a29ecc94 9a29eec1a
|
||||||
//FRAGMENT vbuz1=vbuc1
|
//FRAGMENT vbuz1=vbuc1
|
||||||
lda #{c1}
|
lda #{c1}
|
||||||
sta {z1}
|
sta {z1}
|
||||||
|
8955
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
8955
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
File diff suppressed because it is too large
Load Diff
400
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
400
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
@ -1,4 +1,4 @@
|
|||||||
//KICKC FRAGMENT CACHE aafa246f3 aafa2666a
|
//KICKC FRAGMENT CACHE 9a29ecc94 9a29eec1a
|
||||||
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
|
//FRAGMENT _deref_pbuc1=_inc__deref_pbuc1
|
||||||
inc {c1}
|
inc {c1}
|
||||||
//FRAGMENT isr_hardware_all_entry
|
//FRAGMENT isr_hardware_all_entry
|
||||||
@ -792,401 +792,3 @@ iny
|
|||||||
tax
|
tax
|
||||||
//FRAGMENT vbuyy=vbuaa
|
//FRAGMENT vbuyy=vbuaa
|
||||||
tay
|
tay
|
||||||
//FRAGMENT vbuz1=vbuz2_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT _deref_pbuc1=_dec__deref_pbuc1
|
|
||||||
dec {c1}
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuz2
|
|
||||||
lda {z2}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pvoz1=pvoz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuz1=vbuz1_plus_2
|
|
||||||
lda {z1}
|
|
||||||
clc
|
|
||||||
adc #2
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=pbuz2_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z2}),y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT pbuz1=pbuz2_plus_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
clc
|
|
||||||
adc {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
adc {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1_neq_pbuc1_then_la1
|
|
||||||
lda {z1}+1
|
|
||||||
cmp #>{c1}
|
|
||||||
bne {la1}
|
|
||||||
lda {z1}
|
|
||||||
cmp #<{c1}
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT _deref_pbuz1=_deref_pbuz2
|
|
||||||
ldy #0
|
|
||||||
lda ({z2}),y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuz1=vbuaa_band_vbuc1
|
|
||||||
and #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuxx_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
sax {z1}
|
|
||||||
//FRAGMENT vbuz1=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
//FRAGMENT vbuaa=vbuaa_band_vbuc1
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx_band_vbuc1
|
|
||||||
txa
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuaa=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
//FRAGMENT vbuxx=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuxx=vbuaa_band_vbuc1
|
|
||||||
ldx #{c1}
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT vbuyy=vbuz1_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
and {z1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuaa
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuxx
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vbuyy
|
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda #>{c1}
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuxx=vbuxx_plus_2
|
|
||||||
inx
|
|
||||||
inx
|
|
||||||
//FRAGMENT vbuaa=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
//FRAGMENT vbuxx=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy=pbuz1_derefidx_vbuc1
|
|
||||||
ldy #{c1}
|
|
||||||
lda ({z1}),y
|
|
||||||
tay
|
|
||||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
clc
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
bcc !+
|
|
||||||
inc {z1}+1
|
|
||||||
!:
|
|
||||||
//FRAGMENT vbuz1=_dec_vbuz1
|
|
||||||
dec {z1}
|
|
||||||
//FRAGMENT pbuz1=pbuz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuz2
|
|
||||||
ldy {z2}
|
|
||||||
lda {c1},y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT pbuz1=_inc_pbuz2
|
|
||||||
clc
|
|
||||||
lda {z2}
|
|
||||||
adc #1
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
adc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuz2
|
|
||||||
ldy {z2}
|
|
||||||
lda {c1},y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuz1_ge_vbuz2_then_la1
|
|
||||||
lda {z1}
|
|
||||||
cmp {z2}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuz2
|
|
||||||
lda {z1}
|
|
||||||
sec
|
|
||||||
sbc {z2}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vwuz1=_word_vbuz2
|
|
||||||
lda {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vwuz1=vwuz2_rol_5
|
|
||||||
lda {z2}
|
|
||||||
asl
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
rol
|
|
||||||
sta {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
|
|
||||||
lda {z2}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda {z2}+1
|
|
||||||
adc #>{c1}
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuz2_plus_vbuz3
|
|
||||||
lda {z3}
|
|
||||||
clc
|
|
||||||
adc {z2}
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
adc {z2}+1
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuz1_minus_vbuc1
|
|
||||||
sec
|
|
||||||
lda {z1}
|
|
||||||
sbc #{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda {z1}+1
|
|
||||||
sbc #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuz1=_deref_pbuc1
|
|
||||||
lda {c1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuz2
|
|
||||||
lda {z2}
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuxx=vbuxx_band_vbuc1
|
|
||||||
lda #{c1}
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT vbuyy=vbuxx_band_vbuc1
|
|
||||||
txa
|
|
||||||
and #{c1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuxx=vbuyy_band_vbuc1
|
|
||||||
ldx #{c1}
|
|
||||||
tya
|
|
||||||
axs #0
|
|
||||||
//FRAGMENT vbuyy=vbuyy_band_vbuc1
|
|
||||||
tya
|
|
||||||
and #{c1}
|
|
||||||
tay
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c1},y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuxx
|
|
||||||
lda {c1},x
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=pbuc1_derefidx_vbuyy
|
|
||||||
lda {c1},y
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuaa=pbuc1_derefidx_vbuz1
|
|
||||||
ldy {z1}
|
|
||||||
lda {c1},y
|
|
||||||
//FRAGMENT vbuxx=pbuc1_derefidx_vbuz1
|
|
||||||
ldy {z1}
|
|
||||||
ldx {c1},y
|
|
||||||
//FRAGMENT vbuyy=pbuc1_derefidx_vbuz1
|
|
||||||
ldx {z1}
|
|
||||||
ldy {c1},x
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c1},y
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuaa=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
lda {c1},y
|
|
||||||
//FRAGMENT vbuxx=pbuc1_derefidx_vbuaa
|
|
||||||
tay
|
|
||||||
ldx {c1},y
|
|
||||||
//FRAGMENT vbuyy=pbuc1_derefidx_vbuaa
|
|
||||||
tax
|
|
||||||
ldy {c1},x
|
|
||||||
//FRAGMENT vbuz1=pbuc1_derefidx_vbuxx
|
|
||||||
lda {c1},x
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT 0_neq_vbuaa_then_la1
|
|
||||||
cmp #0
|
|
||||||
bne {la1}
|
|
||||||
//FRAGMENT vbuaa_ge_vbuz1_then_la1
|
|
||||||
cmp {z1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuz1
|
|
||||||
txa
|
|
||||||
sec
|
|
||||||
sbc {z1}
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuaa
|
|
||||||
eor #$ff
|
|
||||||
sec
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuaa
|
|
||||||
sta $ff
|
|
||||||
txa
|
|
||||||
sec
|
|
||||||
sbc $ff
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuxx
|
|
||||||
txa
|
|
||||||
eor #$ff
|
|
||||||
sec
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuxx
|
|
||||||
lda #0
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuz1=vbuz1_minus_vbuyy
|
|
||||||
tya
|
|
||||||
eor #$ff
|
|
||||||
sec
|
|
||||||
adc {z1}
|
|
||||||
sta {z1}
|
|
||||||
//FRAGMENT vbuxx=vbuxx_minus_vbuyy
|
|
||||||
txa
|
|
||||||
sty $ff
|
|
||||||
sec
|
|
||||||
sbc $ff
|
|
||||||
tax
|
|
||||||
//FRAGMENT vwuz1=_word_vbuaa
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vwuz1=_word_vbuxx
|
|
||||||
txa
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vwuz1=_word_vbuyy
|
|
||||||
tya
|
|
||||||
sta {z1}
|
|
||||||
lda #0
|
|
||||||
sta {z1}+1
|
|
||||||
//FRAGMENT vbuaa_eq_vbuc1_then_la1
|
|
||||||
cmp #{c1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuaa=_deref_pbuc1
|
|
||||||
lda {c1}
|
|
||||||
//FRAGMENT vbuxx=_deref_pbuc1
|
|
||||||
ldx {c1}
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuaa
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuxx
|
|
||||||
txa
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT _deref_pbuz1=vbuyy
|
|
||||||
tya
|
|
||||||
ldy #0
|
|
||||||
sta ({z1}),y
|
|
||||||
//FRAGMENT vbuxx_ge_vbuz1_then_la1
|
|
||||||
cpx {z1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuxx_eq_vbuc1_then_la1
|
|
||||||
cpx #{c1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuyy=_deref_pbuc1
|
|
||||||
ldy {c1}
|
|
||||||
//FRAGMENT vbuz1_ge_vbuxx_then_la1
|
|
||||||
lda {z1}
|
|
||||||
stx $ff
|
|
||||||
cmp $ff
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuz1_ge_vbuyy_then_la1
|
|
||||||
lda {z1}
|
|
||||||
sty $ff
|
|
||||||
cmp $ff
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuxx_ge_vbuyy_then_la1
|
|
||||||
sty $ff
|
|
||||||
cpx $ff
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vbuaa=vbuxx
|
|
||||||
txa
|
|
||||||
//FRAGMENT vbuyy=vbuxx
|
|
||||||
txa
|
|
||||||
tay
|
|
||||||
//FRAGMENT vbuyy_eq_vbuc1_then_la1
|
|
||||||
cpy #{c1}
|
|
||||||
beq {la1}
|
|
||||||
//FRAGMENT vbuaa=vbuyy
|
|
||||||
tya
|
|
||||||
//FRAGMENT vbuxx=vbuyy
|
|
||||||
tya
|
|
||||||
tax
|
|
||||||
//FRAGMENT vbuyy_ge_vbuz1_then_la1
|
|
||||||
cpy {z1}
|
|
||||||
bcs {la1}
|
|
||||||
//FRAGMENT vwuz1=vwuz1_rol_5
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
asl {z1}
|
|
||||||
rol {z1}+1
|
|
||||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
|
|
||||||
lda {z1}
|
|
||||||
clc
|
|
||||||
adc #<{c1}
|
|
||||||
sta {z1}
|
|
||||||
lda {z1}+1
|
|
||||||
adc #>{c1}
|
|
||||||
sta {z1}+1
|
|
||||||
|
4218
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
4218
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,13 @@
|
|||||||
|
lda {c1},x
|
||||||
|
clc
|
||||||
|
adc {m1}
|
||||||
|
sta {c1},x
|
||||||
|
lda {c1}+1,x
|
||||||
|
adc {m1}+1
|
||||||
|
sta {c1}+1,x
|
||||||
|
lda {c1}+2,x
|
||||||
|
adc {m1}+2
|
||||||
|
sta {c1}+2,x
|
||||||
|
lda {c1}+3,x
|
||||||
|
adc {m1}+3
|
||||||
|
sta {c1}+3,x
|
@ -0,0 +1,2 @@
|
|||||||
|
lda {m1}
|
||||||
|
and #{c1}
|
@ -7,7 +7,12 @@
|
|||||||
// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program).
|
// Returns the processor clock time used since the beginning of an implementation defined era (normally the beginning of the program).
|
||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock_t clock(void) {
|
clock_t clock(void) {
|
||||||
return 0xffffffff - *CIA2_TIMER_AB;
|
// Stop the timer
|
||||||
|
CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES;
|
||||||
|
clock_t ticks = 0xffffffff - *CIA2_TIMER_AB;
|
||||||
|
// Start the timer
|
||||||
|
CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES;
|
||||||
|
return ticks;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset & start the processor clock time. The value can be read using clock().
|
// Reset & start the processor clock time. The value can be read using clock().
|
||||||
|
@ -84,6 +84,10 @@ clock_start: {
|
|||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock: {
|
clock: {
|
||||||
.label return = 9
|
.label return = 9
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// Stop the timer
|
||||||
|
lda #0
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// 0xffffffff - *CIA2_TIMER_AB
|
// 0xffffffff - *CIA2_TIMER_AB
|
||||||
lda #<$ffffffff
|
lda #<$ffffffff
|
||||||
sec
|
sec
|
||||||
@ -98,6 +102,10 @@ clock: {
|
|||||||
lda #>$ffffffff>>$10
|
lda #>$ffffffff>>$10
|
||||||
sbc CIA2_TIMER_AB+3
|
sbc CIA2_TIMER_AB+3
|
||||||
sta.z return+3
|
sta.z return+3
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// Start the timer
|
||||||
|
lda #CIA_TIMER_CONTROL_START
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// }
|
// }
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
@ -33,67 +33,69 @@ clock_start::@return: scope:[clock_start] from clock_start
|
|||||||
|
|
||||||
dword clock()
|
dword clock()
|
||||||
clock: scope:[clock] from main::@2
|
clock: scope:[clock] from main::@2
|
||||||
[16] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
[16] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
|
||||||
|
[17] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
|
[18] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
|
||||||
to:clock::@return
|
to:clock::@return
|
||||||
clock::@return: scope:[clock] from clock
|
clock::@return: scope:[clock] from clock
|
||||||
[17] return
|
[19] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
||||||
print_ulong_at: scope:[print_ulong_at] from main::@3
|
print_ulong_at: scope:[print_ulong_at] from main::@3
|
||||||
[18] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
[20] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
||||||
[19] call print_uint_at
|
[21] call print_uint_at
|
||||||
to:print_ulong_at::@1
|
to:print_ulong_at::@1
|
||||||
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
||||||
[20] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
[22] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
||||||
[21] call print_uint_at
|
[23] call print_uint_at
|
||||||
to:print_ulong_at::@return
|
to:print_ulong_at::@return
|
||||||
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
||||||
[22] return
|
[24] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
||||||
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
||||||
[23] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
[25] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
||||||
[23] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
[25] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
||||||
[24] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
[26] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
||||||
[25] print_uchar_at::at#0 = print_uint_at::at#2
|
[27] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
[26] call print_uchar_at
|
[28] call print_uchar_at
|
||||||
to:print_uint_at::@1
|
to:print_uint_at::@1
|
||||||
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
||||||
[27] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
[29] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
||||||
[28] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
[30] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
||||||
[29] call print_uchar_at
|
[31] call print_uchar_at
|
||||||
to:print_uint_at::@return
|
to:print_uint_at::@return
|
||||||
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
||||||
[30] return
|
[32] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
||||||
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
||||||
[31] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
[33] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
||||||
[31] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
[33] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
||||||
[32] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
[34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
||||||
[33] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
[35] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
||||||
[34] print_char_at::at#0 = print_uchar_at::at#2
|
[36] print_char_at::at#0 = print_uchar_at::at#2
|
||||||
[35] call print_char_at
|
[37] call print_char_at
|
||||||
to:print_uchar_at::@1
|
to:print_uchar_at::@1
|
||||||
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
||||||
[36] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
[38] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
||||||
[37] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
[39] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
||||||
[38] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
[40] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
||||||
[39] call print_char_at
|
[41] call print_char_at
|
||||||
to:print_uchar_at::@return
|
to:print_uchar_at::@return
|
||||||
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
||||||
[40] return
|
[42] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
||||||
[41] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
[43] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
||||||
[41] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
[43] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
||||||
[42] *print_char_at::at#2 = print_char_at::ch#2
|
[44] *print_char_at::at#2 = print_char_at::ch#2
|
||||||
to:print_char_at::@return
|
to:print_char_at::@return
|
||||||
print_char_at::@return: scope:[print_char_at] from print_char_at
|
print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||||
[43] return
|
[45] return
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -5,8 +5,11 @@ CONTROL FLOW GRAPH SSA
|
|||||||
|
|
||||||
dword clock()
|
dword clock()
|
||||||
clock: scope:[clock] from main::@3
|
clock: scope:[clock] from main::@3
|
||||||
|
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
clock::return#0 = clock::$0
|
clock::ticks#0 = clock::$0
|
||||||
|
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
clock::return#0 = clock::ticks#0
|
||||||
to:clock::@return
|
to:clock::@return
|
||||||
clock::@return: scope:[clock] from clock
|
clock::@return: scope:[clock] from clock
|
||||||
clock::return#3 = phi( clock/clock::return#0 )
|
clock::return#3 = phi( clock/clock::return#0 )
|
||||||
@ -176,6 +179,8 @@ dword clock::return#1
|
|||||||
dword clock::return#2
|
dword clock::return#2
|
||||||
dword clock::return#3
|
dword clock::return#3
|
||||||
dword clock::return#4
|
dword clock::return#4
|
||||||
|
dword clock::ticks
|
||||||
|
dword clock::ticks#0
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
dword~ main::$1
|
dword~ main::$1
|
||||||
@ -266,7 +271,7 @@ Finalized unsigned number type (byte) 1
|
|||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
Inferred type updated to dword in clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
Inferred type updated to dword in clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
Inferred type updated to byte in print_uchar_at::$2 = print_uchar_at::b#3 & $f
|
Inferred type updated to byte in print_uchar_at::$2 = print_uchar_at::b#3 & $f
|
||||||
Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1
|
Alias clock::return#0 = clock::ticks#0 clock::$0 clock::return#3 clock::return#1
|
||||||
Alias print_uchar_at::b#0 = print_uint_at::$0
|
Alias print_uchar_at::b#0 = print_uint_at::$0
|
||||||
Alias print_uint_at::w#2 = print_uint_at::w#3
|
Alias print_uint_at::w#2 = print_uint_at::w#3
|
||||||
Alias print_uint_at::at#2 = print_uint_at::at#3
|
Alias print_uint_at::at#2 = print_uint_at::at#3
|
||||||
@ -290,16 +295,19 @@ Constant print_ulong_at::at#0 = SCREEN
|
|||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
Constant print_uint_at::at#0 = print_ulong_at::at#0
|
Constant print_uint_at::at#0 = print_ulong_at::at#0
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
if() condition always true - replacing block destination [37] if(true) goto main::@2
|
if() condition always true - replacing block destination [39] if(true) goto main::@2
|
||||||
Successful SSA optimization Pass2ConstantIfs
|
Successful SSA optimization Pass2ConstantIfs
|
||||||
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [2] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [0] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS in [3] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [4] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS in [5] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
||||||
Successful SSA optimization PassNSimplifyConstantZero
|
Successful SSA optimization PassNSimplifyConstantZero
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [3] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = 0|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [2] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [5] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [5] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = 0|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [6] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [7] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
||||||
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [8] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [6] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [2] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
|
||||||
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [8] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
|
||||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||||
Removing unused block main::@return
|
Removing unused block main::@return
|
||||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||||
@ -314,7 +322,7 @@ Removing unused procedure block __start::@1
|
|||||||
Removing unused procedure block __start::@2
|
Removing unused procedure block __start::@2
|
||||||
Removing unused procedure block __start::@return
|
Removing unused procedure block __start::@return
|
||||||
Successful SSA optimization PassNEliminateEmptyStart
|
Successful SSA optimization PassNEliminateEmptyStart
|
||||||
Constant right-side identified [19] print_uint_at::at#1 = print_ulong_at::at#0 + 4
|
Constant right-side identified [21] print_uint_at::at#1 = print_ulong_at::at#0 + 4
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
Constant print_uint_at::at#1 = print_ulong_at::at#0+4
|
Constant print_uint_at::at#1 = print_ulong_at::at#0+4
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
@ -338,21 +346,21 @@ Adding NOP phi() at start of print_uint_at::@2
|
|||||||
Adding NOP phi() at start of print_uchar_at::@2
|
Adding NOP phi() at start of print_uchar_at::@2
|
||||||
CALL GRAPH
|
CALL GRAPH
|
||||||
Calls in [main] to clock_start:3 clock:5 print_ulong_at:10
|
Calls in [main] to clock_start:3 clock:5 print_ulong_at:10
|
||||||
Calls in [print_ulong_at] to print_uint_at:22 print_uint_at:25
|
Calls in [print_ulong_at] to print_uint_at:24 print_uint_at:27
|
||||||
Calls in [print_uint_at] to print_uchar_at:33 print_uchar_at:38
|
Calls in [print_uint_at] to print_uchar_at:35 print_uchar_at:40
|
||||||
Calls in [print_uchar_at] to print_char_at:47 print_char_at:53
|
Calls in [print_uchar_at] to print_char_at:49 print_char_at:55
|
||||||
|
|
||||||
Created 6 initial phi equivalence classes
|
Created 6 initial phi equivalence classes
|
||||||
Coalesced [21] print_uint_at::w#4 = print_uint_at::w#0
|
Coalesced [23] print_uint_at::w#4 = print_uint_at::w#0
|
||||||
Coalesced [24] print_uint_at::w#5 = print_uint_at::w#1
|
Coalesced [26] print_uint_at::w#5 = print_uint_at::w#1
|
||||||
Coalesced [31] print_uchar_at::b#4 = print_uchar_at::b#0
|
Coalesced [33] print_uchar_at::b#4 = print_uchar_at::b#0
|
||||||
Coalesced [32] print_uchar_at::at#4 = print_uchar_at::at#0
|
Coalesced [34] print_uchar_at::at#4 = print_uchar_at::at#0
|
||||||
Coalesced [36] print_uchar_at::b#5 = print_uchar_at::b#1
|
Coalesced [38] print_uchar_at::b#5 = print_uchar_at::b#1
|
||||||
Coalesced [37] print_uchar_at::at#5 = print_uchar_at::at#1
|
Coalesced [39] print_uchar_at::at#5 = print_uchar_at::at#1
|
||||||
Coalesced [45] print_char_at::ch#3 = print_char_at::ch#0
|
Coalesced [47] print_char_at::ch#3 = print_char_at::ch#0
|
||||||
Coalesced [46] print_char_at::at#3 = print_char_at::at#0
|
Coalesced [48] print_char_at::at#3 = print_char_at::at#0
|
||||||
Coalesced [51] print_char_at::ch#4 = print_char_at::ch#1
|
Coalesced [53] print_char_at::ch#4 = print_char_at::ch#1
|
||||||
Coalesced [52] print_char_at::at#4 = print_char_at::at#1
|
Coalesced [54] print_char_at::at#4 = print_char_at::at#1
|
||||||
Coalesced down to 6 phi equivalence classes
|
Coalesced down to 6 phi equivalence classes
|
||||||
Culled Empty Block label main::@1
|
Culled Empty Block label main::@1
|
||||||
Culled Empty Block label main::@5
|
Culled Empty Block label main::@5
|
||||||
@ -401,77 +409,80 @@ clock_start::@return: scope:[clock_start] from clock_start
|
|||||||
|
|
||||||
dword clock()
|
dword clock()
|
||||||
clock: scope:[clock] from main::@2
|
clock: scope:[clock] from main::@2
|
||||||
[16] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
[16] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
|
||||||
|
[17] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
|
[18] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
|
||||||
to:clock::@return
|
to:clock::@return
|
||||||
clock::@return: scope:[clock] from clock
|
clock::@return: scope:[clock] from clock
|
||||||
[17] return
|
[19] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
||||||
print_ulong_at: scope:[print_ulong_at] from main::@3
|
print_ulong_at: scope:[print_ulong_at] from main::@3
|
||||||
[18] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
[20] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
||||||
[19] call print_uint_at
|
[21] call print_uint_at
|
||||||
to:print_ulong_at::@1
|
to:print_ulong_at::@1
|
||||||
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
||||||
[20] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
[22] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
||||||
[21] call print_uint_at
|
[23] call print_uint_at
|
||||||
to:print_ulong_at::@return
|
to:print_ulong_at::@return
|
||||||
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
||||||
[22] return
|
[24] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
||||||
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
||||||
[23] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
[25] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
||||||
[23] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
[25] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
||||||
[24] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
[26] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
||||||
[25] print_uchar_at::at#0 = print_uint_at::at#2
|
[27] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
[26] call print_uchar_at
|
[28] call print_uchar_at
|
||||||
to:print_uint_at::@1
|
to:print_uint_at::@1
|
||||||
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
||||||
[27] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
[29] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
||||||
[28] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
[30] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
||||||
[29] call print_uchar_at
|
[31] call print_uchar_at
|
||||||
to:print_uint_at::@return
|
to:print_uint_at::@return
|
||||||
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
||||||
[30] return
|
[32] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
||||||
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
||||||
[31] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
[33] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
||||||
[31] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
[33] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
||||||
[32] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
[34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
||||||
[33] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
[35] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
||||||
[34] print_char_at::at#0 = print_uchar_at::at#2
|
[36] print_char_at::at#0 = print_uchar_at::at#2
|
||||||
[35] call print_char_at
|
[37] call print_char_at
|
||||||
to:print_uchar_at::@1
|
to:print_uchar_at::@1
|
||||||
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
||||||
[36] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
[38] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
||||||
[37] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
[39] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
||||||
[38] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
[40] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
||||||
[39] call print_char_at
|
[41] call print_char_at
|
||||||
to:print_uchar_at::@return
|
to:print_uchar_at::@return
|
||||||
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
||||||
[40] return
|
[42] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
||||||
[41] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
[43] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
||||||
[41] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
[43] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
||||||
[42] *print_char_at::at#2 = print_char_at::ch#2
|
[44] *print_char_at::at#2 = print_char_at::ch#2
|
||||||
to:print_char_at::@return
|
to:print_char_at::@return
|
||||||
print_char_at::@return: scope:[print_char_at] from print_char_at
|
print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||||
[43] return
|
[45] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
|
|
||||||
VARIABLE REGISTER WEIGHTS
|
VARIABLE REGISTER WEIGHTS
|
||||||
dword clock()
|
dword clock()
|
||||||
dword clock::return
|
dword clock::return
|
||||||
dword clock::return#0 37.33333333333333
|
dword clock::return#0 28.0
|
||||||
dword clock::return#2 22.0
|
dword clock::return#2 22.0
|
||||||
|
dword clock::ticks
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
dword~ main::$1 22.0
|
dword~ main::$1 22.0
|
||||||
@ -560,19 +571,21 @@ Statement [11] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TI
|
|||||||
Statement [12] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
Statement [12] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
Statement [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
Statement [14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [16] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:4 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [16] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:4 [ ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [18] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:9 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [17] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:4 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [20] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:9 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [18] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:4 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [25] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:9::print_uint_at:19 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
Statement [20] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:9 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [22] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:9 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [27] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:9::print_uint_at:21 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Statement [28] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:9::print_uint_at:19 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:9::print_uint_at:21 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
Statement [30] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:9::print_uint_at:21 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:9::print_uint_at:23 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [32] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Statement [34] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [36] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||||
Statement [36] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [38] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [37] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [39] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:33 [ print_uchar_at::$2 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:33 [ print_uchar_at::$2 ]
|
||||||
Statement [42] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26::print_char_at:35 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26::print_char_at:35 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29::print_char_at:35 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29::print_char_at:35 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:26::print_char_at:39 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26::print_char_at:39 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29::print_char_at:39 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29::print_char_at:39 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
Statement [44] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:37 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:37 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:37 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:37 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:41 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:41 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:41 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:41 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Statement [5] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [5] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [6] main::$1 = clock::return#2 [ main::$1 ] ( [ main::$1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a
|
Statement [6] main::$1 = clock::return#2 [ main::$1 ] ( [ main::$1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } } ) always clobbers reg byte a
|
||||||
@ -583,16 +596,18 @@ Statement [11] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TI
|
|||||||
Statement [12] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
Statement [12] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
Statement [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
Statement [14] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:2 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [16] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:4 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [16] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:4 [ ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [18] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:9 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [17] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:4 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [20] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:9 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [18] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:4 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [25] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:9::print_uint_at:19 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
Statement [20] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:9 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
Statement [28] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:9::print_uint_at:19 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:9::print_uint_at:21 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
Statement [22] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:9 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
Statement [32] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [27] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:9::print_uint_at:21 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [34] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [30] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:9::print_uint_at:21 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:9::print_uint_at:23 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [36] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Statement [37] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [36] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Statement [42] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:9::print_uint_at:19::print_uchar_at:26::print_char_at:35 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26::print_char_at:35 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29::print_char_at:35 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29::print_char_at:35 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:26::print_char_at:39 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:26::print_char_at:39 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:19::print_uchar_at:29::print_char_at:39 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:29::print_char_at:39 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
Statement [38] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [39] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [44] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:37 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:37 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:37 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:37 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:28::print_char_at:41 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:28::print_char_at:41 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:21::print_uchar_at:31::print_char_at:41 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:9::print_uint_at:23::print_uchar_at:31::print_char_at:41 [ ] { { print_ulong_at::dw#0 = main::cyclecount#0 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Potential registers zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:2 ,
|
Potential registers zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:2 ,
|
||||||
Potential registers zp[2]:4 [ print_uint_at::at#2 ] : zp[2]:4 ,
|
Potential registers zp[2]:4 [ print_uint_at::at#2 ] : zp[2]:4 ,
|
||||||
Potential registers zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:6 , reg byte x ,
|
Potential registers zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:6 , reg byte x ,
|
||||||
@ -612,7 +627,7 @@ Uplift Scope [print_char_at] 150,006: zp[1]:9 [ print_char_at::ch#2 print_char_a
|
|||||||
Uplift Scope [print_uchar_at] 20,002: zp[1]:32 [ print_uchar_at::$0 ] 10,001: zp[1]:33 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Uplift Scope [print_uchar_at] 20,002: zp[1]:32 [ print_uchar_at::$0 ] 10,001: zp[1]:33 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Uplift Scope [print_uint_at] 955: zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:4 [ print_uint_at::at#2 ]
|
Uplift Scope [print_uint_at] 955: zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:4 [ print_uint_at::at#2 ]
|
||||||
Uplift Scope [print_ulong_at] 71: zp[4]:24 [ print_ulong_at::dw#0 ]
|
Uplift Scope [print_ulong_at] 71: zp[4]:24 [ print_ulong_at::dw#0 ]
|
||||||
Uplift Scope [clock] 37.33: zp[4]:28 [ clock::return#0 ] 22: zp[4]:12 [ clock::return#2 ]
|
Uplift Scope [clock] 28: zp[4]:28 [ clock::return#0 ] 22: zp[4]:12 [ clock::return#2 ]
|
||||||
Uplift Scope [main] 22: zp[4]:16 [ main::$1 ] 22: zp[4]:20 [ main::cyclecount#0 ]
|
Uplift Scope [main] 22: zp[4]:16 [ main::$1 ] 22: zp[4]:20 [ main::cyclecount#0 ]
|
||||||
Uplift Scope [MOS6526_CIA]
|
Uplift Scope [MOS6526_CIA]
|
||||||
Uplift Scope [MOS6569_VICII]
|
Uplift Scope [MOS6569_VICII]
|
||||||
@ -621,20 +636,20 @@ Uplift Scope [clock_start]
|
|||||||
Uplift Scope [RADIX]
|
Uplift Scope [RADIX]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [print_char_at] best 1727 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
Uplifting [print_char_at] best 1739 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||||
Uplifting [print_uchar_at] best 1719 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Uplifting [print_uchar_at] best 1731 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Uplifting [print_uint_at] best 1719 combination zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:4 [ print_uint_at::at#2 ]
|
Uplifting [print_uint_at] best 1731 combination zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:4 [ print_uint_at::at#2 ]
|
||||||
Uplifting [print_ulong_at] best 1719 combination zp[4]:24 [ print_ulong_at::dw#0 ]
|
Uplifting [print_ulong_at] best 1731 combination zp[4]:24 [ print_ulong_at::dw#0 ]
|
||||||
Uplifting [clock] best 1719 combination zp[4]:28 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ]
|
Uplifting [clock] best 1731 combination zp[4]:28 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ]
|
||||||
Uplifting [main] best 1719 combination zp[4]:16 [ main::$1 ] zp[4]:20 [ main::cyclecount#0 ]
|
Uplifting [main] best 1731 combination zp[4]:16 [ main::$1 ] zp[4]:20 [ main::cyclecount#0 ]
|
||||||
Uplifting [MOS6526_CIA] best 1719 combination
|
Uplifting [MOS6526_CIA] best 1731 combination
|
||||||
Uplifting [MOS6569_VICII] best 1719 combination
|
Uplifting [MOS6569_VICII] best 1731 combination
|
||||||
Uplifting [MOS6581_SID] best 1719 combination
|
Uplifting [MOS6581_SID] best 1731 combination
|
||||||
Uplifting [clock_start] best 1719 combination
|
Uplifting [clock_start] best 1731 combination
|
||||||
Uplifting [RADIX] best 1719 combination
|
Uplifting [RADIX] best 1731 combination
|
||||||
Uplifting [] best 1719 combination
|
Uplifting [] best 1731 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Attempting to uplift remaining variables inzp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Uplifting [print_uchar_at] best 1719 combination zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Uplifting [print_uchar_at] best 1731 combination zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Coalescing zero page register [ zp[2]:4 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
Coalescing zero page register [ zp[2]:4 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
||||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 ] ] with [ zp[4]:16 [ main::$1 ] ] - score: 1
|
Coalescing zero page register [ zp[4]:12 [ clock::return#2 ] ] with [ zp[4]:16 [ main::$1 ] ] - score: 1
|
||||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 main::$1 ] ] with [ zp[4]:28 [ clock::return#0 ] ] - score: 1
|
Coalescing zero page register [ zp[4]:12 [ clock::return#2 main::$1 ] ] with [ zp[4]:28 [ clock::return#0 ] ] - score: 1
|
||||||
@ -753,7 +768,11 @@ clock_start: {
|
|||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock: {
|
clock: {
|
||||||
.label return = 9
|
.label return = 9
|
||||||
// [16] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
// [16] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2
|
||||||
|
// Stop the timer
|
||||||
|
lda #0
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
|
// [17] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
||||||
lda #<$ffffffff
|
lda #<$ffffffff
|
||||||
sec
|
sec
|
||||||
sbc CIA2_TIMER_AB
|
sbc CIA2_TIMER_AB
|
||||||
@ -767,10 +786,14 @@ clock: {
|
|||||||
lda #>$ffffffff>>$10
|
lda #>$ffffffff>>$10
|
||||||
sbc CIA2_TIMER_AB+3
|
sbc CIA2_TIMER_AB+3
|
||||||
sta.z return+3
|
sta.z return+3
|
||||||
|
// [18] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2
|
||||||
|
// Start the timer
|
||||||
|
lda #CIA_TIMER_CONTROL_START
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// clock::@return
|
// clock::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [17] return
|
// [19] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_ulong_at
|
// print_ulong_at
|
||||||
@ -778,43 +801,43 @@ clock: {
|
|||||||
// print_ulong_at(dword zp(9) dw)
|
// print_ulong_at(dword zp(9) dw)
|
||||||
print_ulong_at: {
|
print_ulong_at: {
|
||||||
.label dw = 9
|
.label dw = 9
|
||||||
// [18] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
// [20] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
||||||
lda.z dw+2
|
lda.z dw+2
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+3
|
lda.z dw+3
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [19] call print_uint_at
|
// [21] call print_uint_at
|
||||||
// [23] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
// [25] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
||||||
print_uint_at_from_print_ulong_at:
|
print_uint_at_from_print_ulong_at:
|
||||||
// [23] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
// [25] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [23] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
// [25] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
jmp __b1
|
jmp __b1
|
||||||
// print_ulong_at::@1
|
// print_ulong_at::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [20] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
// [22] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
||||||
lda.z dw
|
lda.z dw
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+1
|
lda.z dw+1
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [21] call print_uint_at
|
// [23] call print_uint_at
|
||||||
// [23] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
// [25] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
||||||
print_uint_at_from___b1:
|
print_uint_at_from___b1:
|
||||||
// [23] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
// [25] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN+4
|
lda #<SCREEN+4
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN+4
|
lda #>SCREEN+4
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [23] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
// [25] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_ulong_at::@return
|
// print_ulong_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [22] return
|
// [24] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uint_at
|
// print_uint_at
|
||||||
@ -823,23 +846,23 @@ print_ulong_at: {
|
|||||||
print_uint_at: {
|
print_uint_at: {
|
||||||
.label w = 2
|
.label w = 2
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// [24] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
// [26] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||||
lda.z w+1
|
lda.z w+1
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [25] print_uchar_at::at#0 = print_uint_at::at#2
|
// [27] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
// [26] call print_uchar_at
|
// [28] call print_uchar_at
|
||||||
// [31] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
// [33] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
||||||
print_uchar_at_from_print_uint_at:
|
print_uchar_at_from_print_uint_at:
|
||||||
// [31] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
// [33] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
||||||
// [31] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
// [33] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
jmp __b1
|
jmp __b1
|
||||||
// print_uint_at::@1
|
// print_uint_at::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [27] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
// [29] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
||||||
lda.z w
|
lda.z w
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [28] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
// [30] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
lda #2
|
lda #2
|
||||||
clc
|
clc
|
||||||
adc.z print_uchar_at.at
|
adc.z print_uchar_at.at
|
||||||
@ -847,16 +870,16 @@ print_uint_at: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z print_uchar_at.at+1
|
inc.z print_uchar_at.at+1
|
||||||
!:
|
!:
|
||||||
// [29] call print_uchar_at
|
// [31] call print_uchar_at
|
||||||
// [31] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
// [33] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
||||||
print_uchar_at_from___b1:
|
print_uchar_at_from___b1:
|
||||||
// [31] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
// [33] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
||||||
// [31] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
// [33] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_uint_at::@return
|
// print_uint_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [30] return
|
// [32] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uchar_at
|
// print_uchar_at
|
||||||
@ -865,35 +888,35 @@ print_uint_at: {
|
|||||||
print_uchar_at: {
|
print_uchar_at: {
|
||||||
.label b = 6
|
.label b = 6
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// [32] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
// [34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
||||||
lda.z b
|
lda.z b
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
// [33] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
// [35] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
||||||
tay
|
tay
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [34] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
// [36] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
||||||
lda.z at
|
lda.z at
|
||||||
sta.z print_char_at.at
|
sta.z print_char_at.at
|
||||||
lda.z at+1
|
lda.z at+1
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [35] call print_char_at
|
// [37] call print_char_at
|
||||||
// Table of hexadecimal digits
|
// Table of hexadecimal digits
|
||||||
// [41] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
// [43] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
||||||
print_char_at_from_print_uchar_at:
|
print_char_at_from_print_uchar_at:
|
||||||
// [41] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
// [43] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
||||||
// [41] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
// [43] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
jmp __b1
|
jmp __b1
|
||||||
// print_uchar_at::@1
|
// print_uchar_at::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [36] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
// [38] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
||||||
lda #$f
|
lda #$f
|
||||||
and.z b
|
and.z b
|
||||||
tay
|
tay
|
||||||
// [37] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
// [39] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
||||||
clc
|
clc
|
||||||
lda.z at
|
lda.z at
|
||||||
adc #1
|
adc #1
|
||||||
@ -901,18 +924,18 @@ print_uchar_at: {
|
|||||||
lda.z at+1
|
lda.z at+1
|
||||||
adc #0
|
adc #0
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [38] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
// [40] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [39] call print_char_at
|
// [41] call print_char_at
|
||||||
// [41] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
// [43] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
||||||
print_char_at_from___b1:
|
print_char_at_from___b1:
|
||||||
// [41] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
// [43] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
||||||
// [41] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
// [43] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_uchar_at::@return
|
// print_uchar_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [40] return
|
// [42] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_char_at
|
// print_char_at
|
||||||
@ -920,14 +943,14 @@ print_uchar_at: {
|
|||||||
// print_char_at(byte register(X) ch, byte* zp(7) at)
|
// print_char_at(byte register(X) ch, byte* zp(7) at)
|
||||||
print_char_at: {
|
print_char_at: {
|
||||||
.label at = 7
|
.label at = 7
|
||||||
// [42] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
// [44] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||||
txa
|
txa
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (at),y
|
sta (at),y
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_char_at::@return
|
// print_char_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [43] return
|
// [45] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -986,8 +1009,9 @@ constant byte RADIX::OCTAL = 8
|
|||||||
constant byte* const SCREEN = (byte*) 1024
|
constant byte* const SCREEN = (byte*) 1024
|
||||||
dword clock()
|
dword clock()
|
||||||
dword clock::return
|
dword clock::return
|
||||||
dword clock::return#0 return zp[4]:9 37.33333333333333
|
dword clock::return#0 return zp[4]:9 28.0
|
||||||
dword clock::return#2 return zp[4]:9 22.0
|
dword clock::return#2 return zp[4]:9 22.0
|
||||||
|
dword clock::ticks
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
dword~ main::$1 zp[4]:9 22.0
|
dword~ main::$1 zp[4]:9 22.0
|
||||||
@ -1037,7 +1061,7 @@ reg byte y [ print_uchar_at::$2 ]
|
|||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 869
|
Score: 881
|
||||||
|
|
||||||
// File Comments
|
// File Comments
|
||||||
// Counting cycles using a CIA timer
|
// Counting cycles using a CIA timer
|
||||||
@ -1150,8 +1174,13 @@ clock_start: {
|
|||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock: {
|
clock: {
|
||||||
.label return = 9
|
.label return = 9
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// [16] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2
|
||||||
|
// Stop the timer
|
||||||
|
lda #0
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// 0xffffffff - *CIA2_TIMER_AB
|
// 0xffffffff - *CIA2_TIMER_AB
|
||||||
// [16] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
// [17] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
||||||
lda #<$ffffffff
|
lda #<$ffffffff
|
||||||
sec
|
sec
|
||||||
sbc CIA2_TIMER_AB
|
sbc CIA2_TIMER_AB
|
||||||
@ -1165,9 +1194,14 @@ clock: {
|
|||||||
lda #>$ffffffff>>$10
|
lda #>$ffffffff>>$10
|
||||||
sbc CIA2_TIMER_AB+3
|
sbc CIA2_TIMER_AB+3
|
||||||
sta.z return+3
|
sta.z return+3
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// [18] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2
|
||||||
|
// Start the timer
|
||||||
|
lda #CIA_TIMER_CONTROL_START
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// clock::@return
|
// clock::@return
|
||||||
// }
|
// }
|
||||||
// [17] return
|
// [19] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_ulong_at
|
// print_ulong_at
|
||||||
@ -1176,39 +1210,39 @@ clock: {
|
|||||||
print_ulong_at: {
|
print_ulong_at: {
|
||||||
.label dw = 9
|
.label dw = 9
|
||||||
// print_uint_at(WORD1(dw), at)
|
// print_uint_at(WORD1(dw), at)
|
||||||
// [18] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
// [20] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
||||||
lda.z dw+2
|
lda.z dw+2
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+3
|
lda.z dw+3
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [19] call print_uint_at
|
// [21] call print_uint_at
|
||||||
// [23] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
// [25] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
||||||
// [23] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
// [25] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [23] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
// [25] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
// print_ulong_at::@1
|
// print_ulong_at::@1
|
||||||
// print_uint_at(WORD0(dw), at+4)
|
// print_uint_at(WORD0(dw), at+4)
|
||||||
// [20] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
// [22] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
||||||
lda.z dw
|
lda.z dw
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+1
|
lda.z dw+1
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [21] call print_uint_at
|
// [23] call print_uint_at
|
||||||
// [23] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
// [25] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
||||||
// [23] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
// [25] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN+4
|
lda #<SCREEN+4
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN+4
|
lda #>SCREEN+4
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [23] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
// [25] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
// print_ulong_at::@return
|
// print_ulong_at::@return
|
||||||
// }
|
// }
|
||||||
// [22] return
|
// [24] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uint_at
|
// print_uint_at
|
||||||
@ -1218,21 +1252,21 @@ print_uint_at: {
|
|||||||
.label w = 2
|
.label w = 2
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// print_uchar_at(BYTE1(w), at)
|
// print_uchar_at(BYTE1(w), at)
|
||||||
// [24] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
// [26] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||||
lda.z w+1
|
lda.z w+1
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [25] print_uchar_at::at#0 = print_uint_at::at#2
|
// [27] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
// [26] call print_uchar_at
|
// [28] call print_uchar_at
|
||||||
// [31] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
// [33] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
||||||
// [31] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
// [33] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
||||||
// [31] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
// [33] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
// print_uint_at::@1
|
// print_uint_at::@1
|
||||||
// print_uchar_at(BYTE0(w), at+2)
|
// print_uchar_at(BYTE0(w), at+2)
|
||||||
// [27] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
// [29] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
||||||
lda.z w
|
lda.z w
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [28] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
// [30] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
lda #2
|
lda #2
|
||||||
clc
|
clc
|
||||||
adc.z print_uchar_at.at
|
adc.z print_uchar_at.at
|
||||||
@ -1240,14 +1274,14 @@ print_uint_at: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z print_uchar_at.at+1
|
inc.z print_uchar_at.at+1
|
||||||
!:
|
!:
|
||||||
// [29] call print_uchar_at
|
// [31] call print_uchar_at
|
||||||
// [31] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
// [33] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
||||||
// [31] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
// [33] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
||||||
// [31] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
// [33] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
// print_uint_at::@return
|
// print_uint_at::@return
|
||||||
// }
|
// }
|
||||||
// [30] return
|
// [32] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uchar_at
|
// print_uchar_at
|
||||||
@ -1257,35 +1291,35 @@ print_uchar_at: {
|
|||||||
.label b = 6
|
.label b = 6
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// b>>4
|
// b>>4
|
||||||
// [32] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
// [34] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
||||||
lda.z b
|
lda.z b
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
// print_char_at(print_hextab[b>>4], at)
|
// print_char_at(print_hextab[b>>4], at)
|
||||||
// [33] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
// [35] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
||||||
tay
|
tay
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [34] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
// [36] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
||||||
lda.z at
|
lda.z at
|
||||||
sta.z print_char_at.at
|
sta.z print_char_at.at
|
||||||
lda.z at+1
|
lda.z at+1
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [35] call print_char_at
|
// [37] call print_char_at
|
||||||
// Table of hexadecimal digits
|
// Table of hexadecimal digits
|
||||||
// [41] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
// [43] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
||||||
// [41] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
// [43] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
||||||
// [41] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
// [43] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
// print_uchar_at::@1
|
// print_uchar_at::@1
|
||||||
// b&$f
|
// b&$f
|
||||||
// [36] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
// [38] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
||||||
lda #$f
|
lda #$f
|
||||||
and.z b
|
and.z b
|
||||||
tay
|
tay
|
||||||
// print_char_at(print_hextab[b&$f], at+1)
|
// print_char_at(print_hextab[b&$f], at+1)
|
||||||
// [37] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
// [39] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
||||||
clc
|
clc
|
||||||
lda.z at
|
lda.z at
|
||||||
adc #1
|
adc #1
|
||||||
@ -1293,16 +1327,16 @@ print_uchar_at: {
|
|||||||
lda.z at+1
|
lda.z at+1
|
||||||
adc #0
|
adc #0
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [38] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
// [40] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [39] call print_char_at
|
// [41] call print_char_at
|
||||||
// [41] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
// [43] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
||||||
// [41] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
// [43] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
||||||
// [41] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
// [43] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
// print_uchar_at::@return
|
// print_uchar_at::@return
|
||||||
// }
|
// }
|
||||||
// [40] return
|
// [42] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_char_at
|
// print_char_at
|
||||||
@ -1311,13 +1345,13 @@ print_uchar_at: {
|
|||||||
print_char_at: {
|
print_char_at: {
|
||||||
.label at = 7
|
.label at = 7
|
||||||
// *(at) = ch
|
// *(at) = ch
|
||||||
// [42] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
// [44] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||||
txa
|
txa
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (at),y
|
sta (at),y
|
||||||
// print_char_at::@return
|
// print_char_at::@return
|
||||||
// }
|
// }
|
||||||
// [43] return
|
// [45] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
|
@ -12,8 +12,9 @@ constant byte RADIX::OCTAL = 8
|
|||||||
constant byte* const SCREEN = (byte*) 1024
|
constant byte* const SCREEN = (byte*) 1024
|
||||||
dword clock()
|
dword clock()
|
||||||
dword clock::return
|
dword clock::return
|
||||||
dword clock::return#0 return zp[4]:9 37.33333333333333
|
dword clock::return#0 return zp[4]:9 28.0
|
||||||
dword clock::return#2 return zp[4]:9 22.0
|
dword clock::return#2 return zp[4]:9 22.0
|
||||||
|
dword clock::ticks
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
dword~ main::$1 zp[4]:9 22.0
|
dword~ main::$1 zp[4]:9 22.0
|
||||||
|
@ -62,6 +62,10 @@ clock_start: {
|
|||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock: {
|
clock: {
|
||||||
.label return = 9
|
.label return = 9
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// Stop the timer
|
||||||
|
lda #0
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// 0xffffffff - *CIA2_TIMER_AB
|
// 0xffffffff - *CIA2_TIMER_AB
|
||||||
lda #<$ffffffff
|
lda #<$ffffffff
|
||||||
sec
|
sec
|
||||||
@ -76,6 +80,10 @@ clock: {
|
|||||||
lda #>$ffffffff>>$10
|
lda #>$ffffffff>>$10
|
||||||
sbc CIA2_TIMER_AB+3
|
sbc CIA2_TIMER_AB+3
|
||||||
sta.z return+3
|
sta.z return+3
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// Start the timer
|
||||||
|
lda #CIA_TIMER_CONTROL_START
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// }
|
// }
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
@ -28,67 +28,69 @@ clock_start::@return: scope:[clock_start] from clock_start
|
|||||||
|
|
||||||
dword clock()
|
dword clock()
|
||||||
clock: scope:[clock] from main::@1
|
clock: scope:[clock] from main::@1
|
||||||
[13] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
[13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
|
||||||
|
[14] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
|
[15] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
|
||||||
to:clock::@return
|
to:clock::@return
|
||||||
clock::@return: scope:[clock] from clock
|
clock::@return: scope:[clock] from clock
|
||||||
[14] return
|
[16] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
||||||
print_ulong_at: scope:[print_ulong_at] from main::@2
|
print_ulong_at: scope:[print_ulong_at] from main::@2
|
||||||
[15] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
[17] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
||||||
[16] call print_uint_at
|
[18] call print_uint_at
|
||||||
to:print_ulong_at::@1
|
to:print_ulong_at::@1
|
||||||
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
||||||
[17] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
[19] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
||||||
[18] call print_uint_at
|
[20] call print_uint_at
|
||||||
to:print_ulong_at::@return
|
to:print_ulong_at::@return
|
||||||
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
||||||
[19] return
|
[21] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
||||||
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
||||||
[20] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
[22] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
||||||
[20] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
[22] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
||||||
[21] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
[23] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
||||||
[22] print_uchar_at::at#0 = print_uint_at::at#2
|
[24] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
[23] call print_uchar_at
|
[25] call print_uchar_at
|
||||||
to:print_uint_at::@1
|
to:print_uint_at::@1
|
||||||
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
||||||
[24] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
[26] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
||||||
[25] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
[27] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
||||||
[26] call print_uchar_at
|
[28] call print_uchar_at
|
||||||
to:print_uint_at::@return
|
to:print_uint_at::@return
|
||||||
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
||||||
[27] return
|
[29] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
||||||
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
||||||
[28] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
[30] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
||||||
[28] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
[30] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
||||||
[29] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
[31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
||||||
[30] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
[32] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
||||||
[31] print_char_at::at#0 = print_uchar_at::at#2
|
[33] print_char_at::at#0 = print_uchar_at::at#2
|
||||||
[32] call print_char_at
|
[34] call print_char_at
|
||||||
to:print_uchar_at::@1
|
to:print_uchar_at::@1
|
||||||
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
||||||
[33] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
[35] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
||||||
[34] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
[36] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
||||||
[35] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
[37] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
||||||
[36] call print_char_at
|
[38] call print_char_at
|
||||||
to:print_uchar_at::@return
|
to:print_uchar_at::@return
|
||||||
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
||||||
[37] return
|
[39] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
||||||
[38] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
[40] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
||||||
[38] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
[40] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
||||||
[39] *print_char_at::at#2 = print_char_at::ch#2
|
[41] *print_char_at::at#2 = print_char_at::ch#2
|
||||||
to:print_char_at::@return
|
to:print_char_at::@return
|
||||||
print_char_at::@return: scope:[print_char_at] from print_char_at
|
print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||||
[40] return
|
[42] return
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -5,8 +5,11 @@ CONTROL FLOW GRAPH SSA
|
|||||||
|
|
||||||
dword clock()
|
dword clock()
|
||||||
clock: scope:[clock] from main::@2
|
clock: scope:[clock] from main::@2
|
||||||
|
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
clock::return#0 = clock::$0
|
clock::ticks#0 = clock::$0
|
||||||
|
*((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
clock::return#0 = clock::ticks#0
|
||||||
to:clock::@return
|
to:clock::@return
|
||||||
clock::@return: scope:[clock] from clock
|
clock::@return: scope:[clock] from clock
|
||||||
clock::return#3 = phi( clock/clock::return#0 )
|
clock::return#3 = phi( clock/clock::return#0 )
|
||||||
@ -172,6 +175,8 @@ dword clock::return#1
|
|||||||
dword clock::return#2
|
dword clock::return#2
|
||||||
dword clock::return#3
|
dword clock::return#3
|
||||||
dword clock::return#4
|
dword clock::return#4
|
||||||
|
dword clock::ticks
|
||||||
|
dword clock::ticks#0
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
dword~ main::$1
|
dword~ main::$1
|
||||||
@ -259,7 +264,7 @@ Finalized unsigned number type (byte) 1
|
|||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
Inferred type updated to dword in clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
Inferred type updated to dword in clock::$0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
Inferred type updated to byte in print_uchar_at::$2 = print_uchar_at::b#3 & $f
|
Inferred type updated to byte in print_uchar_at::$2 = print_uchar_at::b#3 & $f
|
||||||
Alias clock::return#0 = clock::$0 clock::return#3 clock::return#1
|
Alias clock::return#0 = clock::ticks#0 clock::$0 clock::return#3 clock::return#1
|
||||||
Alias print_uchar_at::b#0 = print_uint_at::$0
|
Alias print_uchar_at::b#0 = print_uint_at::$0
|
||||||
Alias print_uint_at::w#2 = print_uint_at::w#3
|
Alias print_uint_at::w#2 = print_uint_at::w#3
|
||||||
Alias print_uint_at::at#2 = print_uint_at::at#3
|
Alias print_uint_at::at#2 = print_uint_at::at#3
|
||||||
@ -283,16 +288,19 @@ Constant print_ulong_at::at#0 = SCREEN
|
|||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
Constant print_uint_at::at#0 = print_ulong_at::at#0
|
Constant print_uint_at::at#0 = print_ulong_at::at#0
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
if() condition always true - replacing block destination [38] if(true) goto main::@2
|
if() condition always true - replacing block destination [40] if(true) goto main::@2
|
||||||
Successful SSA optimization Pass2ConstantIfs
|
Successful SSA optimization Pass2ConstantIfs
|
||||||
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [2] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [0] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS in [3] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES in [4] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
Simplifying constant evaluating to zero CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS in [5] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_STOP|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
||||||
Successful SSA optimization PassNSimplifyConstantZero
|
Successful SSA optimization PassNSimplifyConstantZero
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [3] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = 0|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [2] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [5] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
Simplifying expression containing zero CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A in [5] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = 0|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [6] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [7] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A
|
||||||
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS in [8] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS|CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||||
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [6] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [2] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
|
||||||
|
Simplifying expression containing zero CIA_TIMER_CONTROL_START in [8] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_CONTINUOUS
|
||||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||||
Removing unused block main::@return
|
Removing unused block main::@return
|
||||||
Successful SSA optimization Pass2EliminateUnusedBlocks
|
Successful SSA optimization Pass2EliminateUnusedBlocks
|
||||||
@ -307,7 +315,7 @@ Removing unused procedure block __start::@1
|
|||||||
Removing unused procedure block __start::@2
|
Removing unused procedure block __start::@2
|
||||||
Removing unused procedure block __start::@return
|
Removing unused procedure block __start::@return
|
||||||
Successful SSA optimization PassNEliminateEmptyStart
|
Successful SSA optimization PassNEliminateEmptyStart
|
||||||
Constant right-side identified [19] print_uint_at::at#1 = print_ulong_at::at#0 + 4
|
Constant right-side identified [21] print_uint_at::at#1 = print_ulong_at::at#0 + 4
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
Constant print_uint_at::at#1 = print_ulong_at::at#0+4
|
Constant print_uint_at::at#1 = print_ulong_at::at#0+4
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
@ -332,21 +340,21 @@ Adding NOP phi() at start of print_uint_at::@2
|
|||||||
Adding NOP phi() at start of print_uchar_at::@2
|
Adding NOP phi() at start of print_uchar_at::@2
|
||||||
CALL GRAPH
|
CALL GRAPH
|
||||||
Calls in [main] to clock_start:1 clock:5 print_ulong_at:8
|
Calls in [main] to clock_start:1 clock:5 print_ulong_at:8
|
||||||
Calls in [print_ulong_at] to print_uint_at:20 print_uint_at:23
|
Calls in [print_ulong_at] to print_uint_at:22 print_uint_at:25
|
||||||
Calls in [print_uint_at] to print_uchar_at:31 print_uchar_at:36
|
Calls in [print_uint_at] to print_uchar_at:33 print_uchar_at:38
|
||||||
Calls in [print_uchar_at] to print_char_at:45 print_char_at:51
|
Calls in [print_uchar_at] to print_char_at:47 print_char_at:53
|
||||||
|
|
||||||
Created 6 initial phi equivalence classes
|
Created 6 initial phi equivalence classes
|
||||||
Coalesced [19] print_uint_at::w#4 = print_uint_at::w#0
|
Coalesced [21] print_uint_at::w#4 = print_uint_at::w#0
|
||||||
Coalesced [22] print_uint_at::w#5 = print_uint_at::w#1
|
Coalesced [24] print_uint_at::w#5 = print_uint_at::w#1
|
||||||
Coalesced [29] print_uchar_at::b#4 = print_uchar_at::b#0
|
Coalesced [31] print_uchar_at::b#4 = print_uchar_at::b#0
|
||||||
Coalesced [30] print_uchar_at::at#4 = print_uchar_at::at#0
|
Coalesced [32] print_uchar_at::at#4 = print_uchar_at::at#0
|
||||||
Coalesced [34] print_uchar_at::b#5 = print_uchar_at::b#1
|
Coalesced [36] print_uchar_at::b#5 = print_uchar_at::b#1
|
||||||
Coalesced [35] print_uchar_at::at#5 = print_uchar_at::at#1
|
Coalesced [37] print_uchar_at::at#5 = print_uchar_at::at#1
|
||||||
Coalesced [43] print_char_at::ch#3 = print_char_at::ch#0
|
Coalesced [45] print_char_at::ch#3 = print_char_at::ch#0
|
||||||
Coalesced [44] print_char_at::at#3 = print_char_at::at#0
|
Coalesced [46] print_char_at::at#3 = print_char_at::at#0
|
||||||
Coalesced [49] print_char_at::ch#4 = print_char_at::ch#1
|
Coalesced [51] print_char_at::ch#4 = print_char_at::ch#1
|
||||||
Coalesced [50] print_char_at::at#4 = print_char_at::at#1
|
Coalesced [52] print_char_at::at#4 = print_char_at::at#1
|
||||||
Coalesced down to 6 phi equivalence classes
|
Coalesced down to 6 phi equivalence classes
|
||||||
Culled Empty Block label main::@3
|
Culled Empty Block label main::@3
|
||||||
Culled Empty Block label main::@1
|
Culled Empty Block label main::@1
|
||||||
@ -390,77 +398,80 @@ clock_start::@return: scope:[clock_start] from clock_start
|
|||||||
|
|
||||||
dword clock()
|
dword clock()
|
||||||
clock: scope:[clock] from main::@1
|
clock: scope:[clock] from main::@1
|
||||||
[13] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
[13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0
|
||||||
|
[14] clock::return#0 = $ffffffff - *CIA2_TIMER_AB
|
||||||
|
[15] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START
|
||||||
to:clock::@return
|
to:clock::@return
|
||||||
clock::@return: scope:[clock] from clock
|
clock::@return: scope:[clock] from clock
|
||||||
[14] return
|
[16] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
void print_ulong_at(dword print_ulong_at::dw , byte* print_ulong_at::at)
|
||||||
print_ulong_at: scope:[print_ulong_at] from main::@2
|
print_ulong_at: scope:[print_ulong_at] from main::@2
|
||||||
[15] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
[17] print_uint_at::w#0 = word1 print_ulong_at::dw#0
|
||||||
[16] call print_uint_at
|
[18] call print_uint_at
|
||||||
to:print_ulong_at::@1
|
to:print_ulong_at::@1
|
||||||
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
print_ulong_at::@1: scope:[print_ulong_at] from print_ulong_at
|
||||||
[17] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
[19] print_uint_at::w#1 = word0 print_ulong_at::dw#0
|
||||||
[18] call print_uint_at
|
[20] call print_uint_at
|
||||||
to:print_ulong_at::@return
|
to:print_ulong_at::@return
|
||||||
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
print_ulong_at::@return: scope:[print_ulong_at] from print_ulong_at::@1
|
||||||
[19] return
|
[21] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
void print_uint_at(word print_uint_at::w , byte* print_uint_at::at)
|
||||||
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
print_uint_at: scope:[print_uint_at] from print_ulong_at print_ulong_at::@1
|
||||||
[20] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
[22] print_uint_at::at#2 = phi( print_ulong_at/SCREEN, print_ulong_at::@1/SCREEN+4 )
|
||||||
[20] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
[22] print_uint_at::w#2 = phi( print_ulong_at/print_uint_at::w#0, print_ulong_at::@1/print_uint_at::w#1 )
|
||||||
[21] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
[23] print_uchar_at::b#0 = byte1 print_uint_at::w#2
|
||||||
[22] print_uchar_at::at#0 = print_uint_at::at#2
|
[24] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
[23] call print_uchar_at
|
[25] call print_uchar_at
|
||||||
to:print_uint_at::@1
|
to:print_uint_at::@1
|
||||||
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
print_uint_at::@1: scope:[print_uint_at] from print_uint_at
|
||||||
[24] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
[26] print_uchar_at::b#1 = byte0 print_uint_at::w#2
|
||||||
[25] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
[27] print_uchar_at::at#1 = print_uint_at::at#2 + 2
|
||||||
[26] call print_uchar_at
|
[28] call print_uchar_at
|
||||||
to:print_uint_at::@return
|
to:print_uint_at::@return
|
||||||
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
print_uint_at::@return: scope:[print_uint_at] from print_uint_at::@1
|
||||||
[27] return
|
[29] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
void print_uchar_at(byte print_uchar_at::b , byte* print_uchar_at::at)
|
||||||
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
print_uchar_at: scope:[print_uchar_at] from print_uint_at print_uint_at::@1
|
||||||
[28] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
[30] print_uchar_at::at#2 = phi( print_uint_at/print_uchar_at::at#0, print_uint_at::@1/print_uchar_at::at#1 )
|
||||||
[28] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
[30] print_uchar_at::b#2 = phi( print_uint_at/print_uchar_at::b#0, print_uint_at::@1/print_uchar_at::b#1 )
|
||||||
[29] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
[31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4
|
||||||
[30] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
[32] print_char_at::ch#0 = print_hextab[print_uchar_at::$0]
|
||||||
[31] print_char_at::at#0 = print_uchar_at::at#2
|
[33] print_char_at::at#0 = print_uchar_at::at#2
|
||||||
[32] call print_char_at
|
[34] call print_char_at
|
||||||
to:print_uchar_at::@1
|
to:print_uchar_at::@1
|
||||||
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
print_uchar_at::@1: scope:[print_uchar_at] from print_uchar_at
|
||||||
[33] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
[35] print_uchar_at::$2 = print_uchar_at::b#2 & $f
|
||||||
[34] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
[36] print_char_at::at#1 = print_uchar_at::at#2 + 1
|
||||||
[35] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
[37] print_char_at::ch#1 = print_hextab[print_uchar_at::$2]
|
||||||
[36] call print_char_at
|
[38] call print_char_at
|
||||||
to:print_uchar_at::@return
|
to:print_uchar_at::@return
|
||||||
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
print_uchar_at::@return: scope:[print_uchar_at] from print_uchar_at::@1
|
||||||
[37] return
|
[39] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
print_char_at: scope:[print_char_at] from print_uchar_at print_uchar_at::@1
|
||||||
[38] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
[40] print_char_at::at#2 = phi( print_uchar_at/print_char_at::at#0, print_uchar_at::@1/print_char_at::at#1 )
|
||||||
[38] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
[40] print_char_at::ch#2 = phi( print_uchar_at/print_char_at::ch#0, print_uchar_at::@1/print_char_at::ch#1 )
|
||||||
[39] *print_char_at::at#2 = print_char_at::ch#2
|
[41] *print_char_at::at#2 = print_char_at::ch#2
|
||||||
to:print_char_at::@return
|
to:print_char_at::@return
|
||||||
print_char_at::@return: scope:[print_char_at] from print_char_at
|
print_char_at::@return: scope:[print_char_at] from print_char_at
|
||||||
[40] return
|
[42] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
|
|
||||||
VARIABLE REGISTER WEIGHTS
|
VARIABLE REGISTER WEIGHTS
|
||||||
dword clock()
|
dword clock()
|
||||||
dword clock::return
|
dword clock::return
|
||||||
dword clock::return#0 37.33333333333333
|
dword clock::return#0 28.0
|
||||||
dword clock::return#2 22.0
|
dword clock::return#2 22.0
|
||||||
|
dword clock::ticks
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
@ -538,19 +549,21 @@ Statement [8] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIM
|
|||||||
Statement [9] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
Statement [9] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [10] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
Statement [10] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [11] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
Statement [11] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [13] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:3 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:3 [ ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [15] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:6 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [14] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:3 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [17] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:6 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [15] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:3 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [22] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:6::print_uint_at:16 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
Statement [17] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:6 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [19] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:6 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [24] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:6::print_uint_at:18 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Statement [25] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:6::print_uint_at:16 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:6::print_uint_at:18 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
Statement [27] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:6::print_uint_at:18 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:6::print_uint_at:20 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [29] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Statement [31] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [33] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:9 [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ]
|
||||||
Statement [33] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [35] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [34] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [36] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:25 [ print_uchar_at::$2 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:25 [ print_uchar_at::$2 ]
|
||||||
Statement [39] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23::print_char_at:32 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23::print_char_at:32 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26::print_char_at:32 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26::print_char_at:32 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:23::print_char_at:36 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23::print_char_at:36 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26::print_char_at:36 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26::print_char_at:36 [ ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
Statement [41] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:34 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:34 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:34 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:34 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:38 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:38 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:38 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:38 [ ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Statement [4] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [4] clock::return#2 = clock::return#0 [ clock::return#2 ] ( [ clock::return#2 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [5] print_ulong_at::dw#0 = clock::return#2 [ print_ulong_at::dw#0 ] ( [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [5] print_ulong_at::dw#0 = clock::return#2 [ print_ulong_at::dw#0 ] ( [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
@ -559,16 +572,18 @@ Statement [8] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIM
|
|||||||
Statement [9] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
Statement [9] *CIA2_TIMER_AB = $ffffffff [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [10] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
Statement [10] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_B_CONTROL) = CIA_TIMER_CONTROL_START|CIA_TIMER_CONTROL_B_COUNT_UNDERFLOW_A [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [11] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
Statement [11] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ ] ( clock_start:1 [ ] { } ) always clobbers reg byte a
|
||||||
Statement [13] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:3 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
Statement [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 [ ] ( clock:3 [ ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [15] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:6 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [14] clock::return#0 = $ffffffff - *CIA2_TIMER_AB [ clock::return#0 ] ( clock:3 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [17] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:6 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
Statement [15] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START [ clock::return#0 ] ( clock:3 [ clock::return#0 ] { { clock::return#0 = clock::return#2 } } ) always clobbers reg byte a
|
||||||
Statement [22] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:6::print_uint_at:16 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
Statement [17] print_uint_at::w#0 = word1 print_ulong_at::dw#0 [ print_ulong_at::dw#0 print_uint_at::w#0 ] ( print_ulong_at:6 [ print_ulong_at::dw#0 print_uint_at::w#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
Statement [25] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:6::print_uint_at:16 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:6::print_uint_at:18 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
Statement [19] print_uint_at::w#1 = word0 print_ulong_at::dw#0 [ print_uint_at::w#1 ] ( print_ulong_at:6 [ print_uint_at::w#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } } ) always clobbers reg byte a
|
||||||
Statement [29] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [24] print_uchar_at::at#0 = print_uint_at::at#2 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] ( print_ulong_at:6::print_uint_at:18 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#0 print_uchar_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [31] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
Statement [27] print_uchar_at::at#1 = print_uint_at::at#2 + 2 [ print_uchar_at::b#1 print_uchar_at::at#1 ] ( print_ulong_at:6::print_uint_at:18 [ print_ulong_at::dw#0 print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } print_ulong_at:6::print_uint_at:20 [ print_uchar_at::b#1 print_uchar_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } } ) always clobbers reg byte a
|
||||||
Statement [33] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::b#2 print_uchar_at::at#2 print_uchar_at::$0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Statement [34] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
Statement [33] print_char_at::at#0 = print_uchar_at::at#2 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::b#2 print_uchar_at::at#2 print_char_at::ch#0 print_char_at::at#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } ) always clobbers reg byte a
|
||||||
Statement [39] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:6::print_uint_at:16::print_uchar_at:23::print_char_at:32 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23::print_char_at:32 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26::print_char_at:32 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26::print_char_at:32 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:23::print_char_at:36 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:23::print_char_at:36 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:16::print_uchar_at:26::print_char_at:36 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:26::print_char_at:36 [ ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
Statement [35] print_uchar_at::$2 = print_uchar_at::b#2 & $f [ print_uchar_at::at#2 print_uchar_at::$2 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::at#2 print_uchar_at::$2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [36] print_char_at::at#1 = print_uchar_at::at#2 + 1 [ print_uchar_at::$2 print_char_at::at#1 ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28 [ print_ulong_at::dw#0 print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28 [ print_uchar_at::$2 print_char_at::at#1 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a
|
||||||
|
Statement [41] *print_char_at::at#2 = print_char_at::ch#2 [ ] ( print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:34 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:34 [ print_uint_at::w#2 print_uint_at::at#2 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#0 print_uint_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:34 [ print_ulong_at::dw#0 print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:34 [ print_uchar_at::b#2 print_uchar_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_char_at::ch#0 = print_char_at::ch#2 } { print_char_at::at#0 = print_char_at::at#2 print_uchar_at::at#2 print_uchar_at::at#1 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:25::print_char_at:38 [ print_ulong_at::dw#0 print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:25::print_char_at:38 [ print_uint_at::w#2 print_uint_at::at#2 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#0 = print_uchar_at::b#2 } { print_uchar_at::at#0 = print_uchar_at::at#2 print_uint_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:18::print_uchar_at:28::print_char_at:38 [ print_ulong_at::dw#0 ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#0 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } print_ulong_at:6::print_uint_at:20::print_uchar_at:28::print_char_at:38 [ ] { { print_ulong_at::dw#0 = clock::return#2 } { print_uint_at::w#1 = print_uint_at::w#2 } { print_uchar_at::b#1 = print_uchar_at::b#2 } { print_uchar_at::at#1 = print_uchar_at::at#2 } { print_char_at::ch#1 = print_char_at::ch#2 } { print_char_at::at#1 = print_char_at::at#2 } } ) always clobbers reg byte a reg byte y
|
||||||
Potential registers zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:2 ,
|
Potential registers zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] : zp[2]:2 ,
|
||||||
Potential registers zp[2]:4 [ print_uint_at::at#2 ] : zp[2]:4 ,
|
Potential registers zp[2]:4 [ print_uint_at::at#2 ] : zp[2]:4 ,
|
||||||
Potential registers zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:6 , reg byte x ,
|
Potential registers zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ] : zp[1]:6 , reg byte x ,
|
||||||
@ -586,7 +601,7 @@ Uplift Scope [print_char_at] 150,006: zp[1]:9 [ print_char_at::ch#2 print_char_a
|
|||||||
Uplift Scope [print_uchar_at] 20,002: zp[1]:24 [ print_uchar_at::$0 ] 10,001: zp[1]:25 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Uplift Scope [print_uchar_at] 20,002: zp[1]:24 [ print_uchar_at::$0 ] 10,001: zp[1]:25 [ print_uchar_at::$2 ] 7,671.33: zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] 6,402.8: zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Uplift Scope [print_uint_at] 955: zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:4 [ print_uint_at::at#2 ]
|
Uplift Scope [print_uint_at] 955: zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] 400.4: zp[2]:4 [ print_uint_at::at#2 ]
|
||||||
Uplift Scope [print_ulong_at] 71: zp[4]:16 [ print_ulong_at::dw#0 ]
|
Uplift Scope [print_ulong_at] 71: zp[4]:16 [ print_ulong_at::dw#0 ]
|
||||||
Uplift Scope [clock] 37.33: zp[4]:20 [ clock::return#0 ] 22: zp[4]:12 [ clock::return#2 ]
|
Uplift Scope [clock] 28: zp[4]:20 [ clock::return#0 ] 22: zp[4]:12 [ clock::return#2 ]
|
||||||
Uplift Scope [MOS6526_CIA]
|
Uplift Scope [MOS6526_CIA]
|
||||||
Uplift Scope [MOS6569_VICII]
|
Uplift Scope [MOS6569_VICII]
|
||||||
Uplift Scope [MOS6581_SID]
|
Uplift Scope [MOS6581_SID]
|
||||||
@ -595,20 +610,20 @@ Uplift Scope [RADIX]
|
|||||||
Uplift Scope [main]
|
Uplift Scope [main]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [print_char_at] best 1043 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
Uplifting [print_char_at] best 1055 combination reg byte x [ print_char_at::ch#2 print_char_at::ch#0 print_char_at::ch#1 ] zp[2]:10 [ print_char_at::at#2 print_char_at::at#0 print_char_at::at#1 ]
|
||||||
Uplifting [print_uchar_at] best 1035 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Uplifting [print_uchar_at] best 1047 combination reg byte a [ print_uchar_at::$0 ] reg byte y [ print_uchar_at::$2 ] zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Uplifting [print_uint_at] best 1035 combination zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:4 [ print_uint_at::at#2 ]
|
Uplifting [print_uint_at] best 1047 combination zp[2]:2 [ print_uint_at::w#2 print_uint_at::w#0 print_uint_at::w#1 ] zp[2]:4 [ print_uint_at::at#2 ]
|
||||||
Uplifting [print_ulong_at] best 1035 combination zp[4]:16 [ print_ulong_at::dw#0 ]
|
Uplifting [print_ulong_at] best 1047 combination zp[4]:16 [ print_ulong_at::dw#0 ]
|
||||||
Uplifting [clock] best 1035 combination zp[4]:20 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ]
|
Uplifting [clock] best 1047 combination zp[4]:20 [ clock::return#0 ] zp[4]:12 [ clock::return#2 ]
|
||||||
Uplifting [MOS6526_CIA] best 1035 combination
|
Uplifting [MOS6526_CIA] best 1047 combination
|
||||||
Uplifting [MOS6569_VICII] best 1035 combination
|
Uplifting [MOS6569_VICII] best 1047 combination
|
||||||
Uplifting [MOS6581_SID] best 1035 combination
|
Uplifting [MOS6581_SID] best 1047 combination
|
||||||
Uplifting [clock_start] best 1035 combination
|
Uplifting [clock_start] best 1047 combination
|
||||||
Uplifting [RADIX] best 1035 combination
|
Uplifting [RADIX] best 1047 combination
|
||||||
Uplifting [main] best 1035 combination
|
Uplifting [main] best 1047 combination
|
||||||
Uplifting [] best 1035 combination
|
Uplifting [] best 1047 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Attempting to uplift remaining variables inzp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Uplifting [print_uchar_at] best 1035 combination zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
Uplifting [print_uchar_at] best 1047 combination zp[1]:6 [ print_uchar_at::b#2 print_uchar_at::b#0 print_uchar_at::b#1 ]
|
||||||
Coalescing zero page register [ zp[2]:4 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
Coalescing zero page register [ zp[2]:4 [ print_uint_at::at#2 ] ] with [ zp[2]:7 [ print_uchar_at::at#2 print_uchar_at::at#0 print_uchar_at::at#1 ] ] - score: 2
|
||||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 ] ] with [ zp[4]:16 [ print_ulong_at::dw#0 ] ] - score: 1
|
Coalescing zero page register [ zp[4]:12 [ clock::return#2 ] ] with [ zp[4]:16 [ print_ulong_at::dw#0 ] ] - score: 1
|
||||||
Coalescing zero page register [ zp[4]:12 [ clock::return#2 print_ulong_at::dw#0 ] ] with [ zp[4]:20 [ clock::return#0 ] ] - score: 1
|
Coalescing zero page register [ zp[4]:12 [ clock::return#2 print_ulong_at::dw#0 ] ] with [ zp[4]:20 [ clock::return#0 ] ] - score: 1
|
||||||
@ -699,7 +714,11 @@ clock_start: {
|
|||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock: {
|
clock: {
|
||||||
.label return = 9
|
.label return = 9
|
||||||
// [13] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
// [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2
|
||||||
|
// Stop the timer
|
||||||
|
lda #0
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
|
// [14] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
||||||
lda #<$ffffffff
|
lda #<$ffffffff
|
||||||
sec
|
sec
|
||||||
sbc CIA2_TIMER_AB
|
sbc CIA2_TIMER_AB
|
||||||
@ -713,10 +732,14 @@ clock: {
|
|||||||
lda #>$ffffffff>>$10
|
lda #>$ffffffff>>$10
|
||||||
sbc CIA2_TIMER_AB+3
|
sbc CIA2_TIMER_AB+3
|
||||||
sta.z return+3
|
sta.z return+3
|
||||||
|
// [15] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2
|
||||||
|
// Start the timer
|
||||||
|
lda #CIA_TIMER_CONTROL_START
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// clock::@return
|
// clock::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [14] return
|
// [16] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_ulong_at
|
// print_ulong_at
|
||||||
@ -724,43 +747,43 @@ clock: {
|
|||||||
// print_ulong_at(dword zp(9) dw)
|
// print_ulong_at(dword zp(9) dw)
|
||||||
print_ulong_at: {
|
print_ulong_at: {
|
||||||
.label dw = 9
|
.label dw = 9
|
||||||
// [15] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
// [17] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
||||||
lda.z dw+2
|
lda.z dw+2
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+3
|
lda.z dw+3
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [16] call print_uint_at
|
// [18] call print_uint_at
|
||||||
// [20] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
// [22] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
||||||
print_uint_at_from_print_ulong_at:
|
print_uint_at_from_print_ulong_at:
|
||||||
// [20] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
// [22] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [20] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
// [22] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
jmp __b1
|
jmp __b1
|
||||||
// print_ulong_at::@1
|
// print_ulong_at::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [17] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
// [19] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
||||||
lda.z dw
|
lda.z dw
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+1
|
lda.z dw+1
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [18] call print_uint_at
|
// [20] call print_uint_at
|
||||||
// [20] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
// [22] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
||||||
print_uint_at_from___b1:
|
print_uint_at_from___b1:
|
||||||
// [20] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
// [22] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN+4
|
lda #<SCREEN+4
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN+4
|
lda #>SCREEN+4
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [20] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
// [22] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_ulong_at::@return
|
// print_ulong_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [19] return
|
// [21] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uint_at
|
// print_uint_at
|
||||||
@ -769,23 +792,23 @@ print_ulong_at: {
|
|||||||
print_uint_at: {
|
print_uint_at: {
|
||||||
.label w = 2
|
.label w = 2
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// [21] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
// [23] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||||
lda.z w+1
|
lda.z w+1
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [22] print_uchar_at::at#0 = print_uint_at::at#2
|
// [24] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
// [23] call print_uchar_at
|
// [25] call print_uchar_at
|
||||||
// [28] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
// [30] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
||||||
print_uchar_at_from_print_uint_at:
|
print_uchar_at_from_print_uint_at:
|
||||||
// [28] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
// [30] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
||||||
// [28] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
// [30] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
jmp __b1
|
jmp __b1
|
||||||
// print_uint_at::@1
|
// print_uint_at::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [24] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
// [26] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
||||||
lda.z w
|
lda.z w
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [25] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
// [27] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
lda #2
|
lda #2
|
||||||
clc
|
clc
|
||||||
adc.z print_uchar_at.at
|
adc.z print_uchar_at.at
|
||||||
@ -793,16 +816,16 @@ print_uint_at: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z print_uchar_at.at+1
|
inc.z print_uchar_at.at+1
|
||||||
!:
|
!:
|
||||||
// [26] call print_uchar_at
|
// [28] call print_uchar_at
|
||||||
// [28] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
// [30] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
||||||
print_uchar_at_from___b1:
|
print_uchar_at_from___b1:
|
||||||
// [28] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
// [30] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
||||||
// [28] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
// [30] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_uint_at::@return
|
// print_uint_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [27] return
|
// [29] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uchar_at
|
// print_uchar_at
|
||||||
@ -811,35 +834,35 @@ print_uint_at: {
|
|||||||
print_uchar_at: {
|
print_uchar_at: {
|
||||||
.label b = 6
|
.label b = 6
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// [29] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
// [31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
||||||
lda.z b
|
lda.z b
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
// [30] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
// [32] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
||||||
tay
|
tay
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [31] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
// [33] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
||||||
lda.z at
|
lda.z at
|
||||||
sta.z print_char_at.at
|
sta.z print_char_at.at
|
||||||
lda.z at+1
|
lda.z at+1
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [32] call print_char_at
|
// [34] call print_char_at
|
||||||
// Table of hexadecimal digits
|
// Table of hexadecimal digits
|
||||||
// [38] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
// [40] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
||||||
print_char_at_from_print_uchar_at:
|
print_char_at_from_print_uchar_at:
|
||||||
// [38] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
// [40] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
||||||
// [38] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
// [40] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
jmp __b1
|
jmp __b1
|
||||||
// print_uchar_at::@1
|
// print_uchar_at::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [33] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
// [35] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
||||||
lda #$f
|
lda #$f
|
||||||
and.z b
|
and.z b
|
||||||
tay
|
tay
|
||||||
// [34] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
// [36] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
||||||
clc
|
clc
|
||||||
lda.z at
|
lda.z at
|
||||||
adc #1
|
adc #1
|
||||||
@ -847,18 +870,18 @@ print_uchar_at: {
|
|||||||
lda.z at+1
|
lda.z at+1
|
||||||
adc #0
|
adc #0
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [35] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
// [37] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [36] call print_char_at
|
// [38] call print_char_at
|
||||||
// [38] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
// [40] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
||||||
print_char_at_from___b1:
|
print_char_at_from___b1:
|
||||||
// [38] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
// [40] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
||||||
// [38] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
// [40] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_uchar_at::@return
|
// print_uchar_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [37] return
|
// [39] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_char_at
|
// print_char_at
|
||||||
@ -866,14 +889,14 @@ print_uchar_at: {
|
|||||||
// print_char_at(byte register(X) ch, byte* zp(7) at)
|
// print_char_at(byte register(X) ch, byte* zp(7) at)
|
||||||
print_char_at: {
|
print_char_at: {
|
||||||
.label at = 7
|
.label at = 7
|
||||||
// [39] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
// [41] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||||
txa
|
txa
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (at),y
|
sta (at),y
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// print_char_at::@return
|
// print_char_at::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [40] return
|
// [42] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -929,8 +952,9 @@ constant byte RADIX::OCTAL = 8
|
|||||||
constant byte* const SCREEN = (byte*) 1024
|
constant byte* const SCREEN = (byte*) 1024
|
||||||
dword clock()
|
dword clock()
|
||||||
dword clock::return
|
dword clock::return
|
||||||
dword clock::return#0 return zp[4]:9 37.33333333333333
|
dword clock::return#0 return zp[4]:9 28.0
|
||||||
dword clock::return#2 return zp[4]:9 22.0
|
dword clock::return#2 return zp[4]:9 22.0
|
||||||
|
dword clock::ticks
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
@ -977,7 +1001,7 @@ reg byte y [ print_uchar_at::$2 ]
|
|||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 455
|
Score: 467
|
||||||
|
|
||||||
// File Comments
|
// File Comments
|
||||||
// Setup and run a simple CIA-timer
|
// Setup and run a simple CIA-timer
|
||||||
@ -1064,8 +1088,13 @@ clock_start: {
|
|||||||
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
// This uses CIA #2 Timer A+B on the C64, and must be initialized using clock_start()
|
||||||
clock: {
|
clock: {
|
||||||
.label return = 9
|
.label return = 9
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_STOP | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// [13] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = 0 -- _deref_pbuc1=vbuc2
|
||||||
|
// Stop the timer
|
||||||
|
lda #0
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// 0xffffffff - *CIA2_TIMER_AB
|
// 0xffffffff - *CIA2_TIMER_AB
|
||||||
// [13] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
// [14] clock::return#0 = $ffffffff - *CIA2_TIMER_AB -- vduz1=vduc1_minus__deref_pduc2
|
||||||
lda #<$ffffffff
|
lda #<$ffffffff
|
||||||
sec
|
sec
|
||||||
sbc CIA2_TIMER_AB
|
sbc CIA2_TIMER_AB
|
||||||
@ -1079,9 +1108,14 @@ clock: {
|
|||||||
lda #>$ffffffff>>$10
|
lda #>$ffffffff>>$10
|
||||||
sbc CIA2_TIMER_AB+3
|
sbc CIA2_TIMER_AB+3
|
||||||
sta.z return+3
|
sta.z return+3
|
||||||
|
// CIA2->TIMER_A_CONTROL = CIA_TIMER_CONTROL_START | CIA_TIMER_CONTROL_CONTINUOUS | CIA_TIMER_CONTROL_A_COUNT_CYCLES
|
||||||
|
// [15] *((byte*)CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL) = CIA_TIMER_CONTROL_START -- _deref_pbuc1=vbuc2
|
||||||
|
// Start the timer
|
||||||
|
lda #CIA_TIMER_CONTROL_START
|
||||||
|
sta CIA2+OFFSET_STRUCT_MOS6526_CIA_TIMER_A_CONTROL
|
||||||
// clock::@return
|
// clock::@return
|
||||||
// }
|
// }
|
||||||
// [14] return
|
// [16] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_ulong_at
|
// print_ulong_at
|
||||||
@ -1090,39 +1124,39 @@ clock: {
|
|||||||
print_ulong_at: {
|
print_ulong_at: {
|
||||||
.label dw = 9
|
.label dw = 9
|
||||||
// print_uint_at(WORD1(dw), at)
|
// print_uint_at(WORD1(dw), at)
|
||||||
// [15] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
// [17] print_uint_at::w#0 = word1 print_ulong_at::dw#0 -- vwuz1=_word1_vduz2
|
||||||
lda.z dw+2
|
lda.z dw+2
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+3
|
lda.z dw+3
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [16] call print_uint_at
|
// [18] call print_uint_at
|
||||||
// [20] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
// [22] phi from print_ulong_at to print_uint_at [phi:print_ulong_at->print_uint_at]
|
||||||
// [20] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
// [22] phi print_uint_at::at#2 = SCREEN [phi:print_ulong_at->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN
|
lda #<SCREEN
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN
|
lda #>SCREEN
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [20] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
// [22] phi print_uint_at::w#2 = print_uint_at::w#0 [phi:print_ulong_at->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
// print_ulong_at::@1
|
// print_ulong_at::@1
|
||||||
// print_uint_at(WORD0(dw), at+4)
|
// print_uint_at(WORD0(dw), at+4)
|
||||||
// [17] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
// [19] print_uint_at::w#1 = word0 print_ulong_at::dw#0 -- vwuz1=_word0_vduz2
|
||||||
lda.z dw
|
lda.z dw
|
||||||
sta.z print_uint_at.w
|
sta.z print_uint_at.w
|
||||||
lda.z dw+1
|
lda.z dw+1
|
||||||
sta.z print_uint_at.w+1
|
sta.z print_uint_at.w+1
|
||||||
// [18] call print_uint_at
|
// [20] call print_uint_at
|
||||||
// [20] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
// [22] phi from print_ulong_at::@1 to print_uint_at [phi:print_ulong_at::@1->print_uint_at]
|
||||||
// [20] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
// [22] phi print_uint_at::at#2 = SCREEN+4 [phi:print_ulong_at::@1->print_uint_at#0] -- pbuz1=pbuc1
|
||||||
lda #<SCREEN+4
|
lda #<SCREEN+4
|
||||||
sta.z print_uint_at.at
|
sta.z print_uint_at.at
|
||||||
lda #>SCREEN+4
|
lda #>SCREEN+4
|
||||||
sta.z print_uint_at.at+1
|
sta.z print_uint_at.at+1
|
||||||
// [20] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
// [22] phi print_uint_at::w#2 = print_uint_at::w#1 [phi:print_ulong_at::@1->print_uint_at#1] -- register_copy
|
||||||
jsr print_uint_at
|
jsr print_uint_at
|
||||||
// print_ulong_at::@return
|
// print_ulong_at::@return
|
||||||
// }
|
// }
|
||||||
// [19] return
|
// [21] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uint_at
|
// print_uint_at
|
||||||
@ -1132,21 +1166,21 @@ print_uint_at: {
|
|||||||
.label w = 2
|
.label w = 2
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// print_uchar_at(BYTE1(w), at)
|
// print_uchar_at(BYTE1(w), at)
|
||||||
// [21] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
// [23] print_uchar_at::b#0 = byte1 print_uint_at::w#2 -- vbuz1=_byte1_vwuz2
|
||||||
lda.z w+1
|
lda.z w+1
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [22] print_uchar_at::at#0 = print_uint_at::at#2
|
// [24] print_uchar_at::at#0 = print_uint_at::at#2
|
||||||
// [23] call print_uchar_at
|
// [25] call print_uchar_at
|
||||||
// [28] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
// [30] phi from print_uint_at to print_uchar_at [phi:print_uint_at->print_uchar_at]
|
||||||
// [28] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
// [30] phi print_uchar_at::at#2 = print_uchar_at::at#0 [phi:print_uint_at->print_uchar_at#0] -- register_copy
|
||||||
// [28] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
// [30] phi print_uchar_at::b#2 = print_uchar_at::b#0 [phi:print_uint_at->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
// print_uint_at::@1
|
// print_uint_at::@1
|
||||||
// print_uchar_at(BYTE0(w), at+2)
|
// print_uchar_at(BYTE0(w), at+2)
|
||||||
// [24] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
// [26] print_uchar_at::b#1 = byte0 print_uint_at::w#2 -- vbuz1=_byte0_vwuz2
|
||||||
lda.z w
|
lda.z w
|
||||||
sta.z print_uchar_at.b
|
sta.z print_uchar_at.b
|
||||||
// [25] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
// [27] print_uchar_at::at#1 = print_uint_at::at#2 + 2 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
lda #2
|
lda #2
|
||||||
clc
|
clc
|
||||||
adc.z print_uchar_at.at
|
adc.z print_uchar_at.at
|
||||||
@ -1154,14 +1188,14 @@ print_uint_at: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z print_uchar_at.at+1
|
inc.z print_uchar_at.at+1
|
||||||
!:
|
!:
|
||||||
// [26] call print_uchar_at
|
// [28] call print_uchar_at
|
||||||
// [28] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
// [30] phi from print_uint_at::@1 to print_uchar_at [phi:print_uint_at::@1->print_uchar_at]
|
||||||
// [28] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
// [30] phi print_uchar_at::at#2 = print_uchar_at::at#1 [phi:print_uint_at::@1->print_uchar_at#0] -- register_copy
|
||||||
// [28] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
// [30] phi print_uchar_at::b#2 = print_uchar_at::b#1 [phi:print_uint_at::@1->print_uchar_at#1] -- register_copy
|
||||||
jsr print_uchar_at
|
jsr print_uchar_at
|
||||||
// print_uint_at::@return
|
// print_uint_at::@return
|
||||||
// }
|
// }
|
||||||
// [27] return
|
// [29] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_uchar_at
|
// print_uchar_at
|
||||||
@ -1171,35 +1205,35 @@ print_uchar_at: {
|
|||||||
.label b = 6
|
.label b = 6
|
||||||
.label at = 4
|
.label at = 4
|
||||||
// b>>4
|
// b>>4
|
||||||
// [29] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
// [31] print_uchar_at::$0 = print_uchar_at::b#2 >> 4 -- vbuaa=vbuz1_ror_4
|
||||||
lda.z b
|
lda.z b
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
// print_char_at(print_hextab[b>>4], at)
|
// print_char_at(print_hextab[b>>4], at)
|
||||||
// [30] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
// [32] print_char_at::ch#0 = print_hextab[print_uchar_at::$0] -- vbuxx=pbuc1_derefidx_vbuaa
|
||||||
tay
|
tay
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [31] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
// [33] print_char_at::at#0 = print_uchar_at::at#2 -- pbuz1=pbuz2
|
||||||
lda.z at
|
lda.z at
|
||||||
sta.z print_char_at.at
|
sta.z print_char_at.at
|
||||||
lda.z at+1
|
lda.z at+1
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [32] call print_char_at
|
// [34] call print_char_at
|
||||||
// Table of hexadecimal digits
|
// Table of hexadecimal digits
|
||||||
// [38] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
// [40] phi from print_uchar_at to print_char_at [phi:print_uchar_at->print_char_at]
|
||||||
// [38] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
// [40] phi print_char_at::at#2 = print_char_at::at#0 [phi:print_uchar_at->print_char_at#0] -- register_copy
|
||||||
// [38] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
// [40] phi print_char_at::ch#2 = print_char_at::ch#0 [phi:print_uchar_at->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
// print_uchar_at::@1
|
// print_uchar_at::@1
|
||||||
// b&$f
|
// b&$f
|
||||||
// [33] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
// [35] print_uchar_at::$2 = print_uchar_at::b#2 & $f -- vbuyy=vbuz1_band_vbuc1
|
||||||
lda #$f
|
lda #$f
|
||||||
and.z b
|
and.z b
|
||||||
tay
|
tay
|
||||||
// print_char_at(print_hextab[b&$f], at+1)
|
// print_char_at(print_hextab[b&$f], at+1)
|
||||||
// [34] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
// [36] print_char_at::at#1 = print_uchar_at::at#2 + 1 -- pbuz1=pbuz2_plus_1
|
||||||
clc
|
clc
|
||||||
lda.z at
|
lda.z at
|
||||||
adc #1
|
adc #1
|
||||||
@ -1207,16 +1241,16 @@ print_uchar_at: {
|
|||||||
lda.z at+1
|
lda.z at+1
|
||||||
adc #0
|
adc #0
|
||||||
sta.z print_char_at.at+1
|
sta.z print_char_at.at+1
|
||||||
// [35] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
// [37] print_char_at::ch#1 = print_hextab[print_uchar_at::$2] -- vbuxx=pbuc1_derefidx_vbuyy
|
||||||
ldx print_hextab,y
|
ldx print_hextab,y
|
||||||
// [36] call print_char_at
|
// [38] call print_char_at
|
||||||
// [38] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
// [40] phi from print_uchar_at::@1 to print_char_at [phi:print_uchar_at::@1->print_char_at]
|
||||||
// [38] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
// [40] phi print_char_at::at#2 = print_char_at::at#1 [phi:print_uchar_at::@1->print_char_at#0] -- register_copy
|
||||||
// [38] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
// [40] phi print_char_at::ch#2 = print_char_at::ch#1 [phi:print_uchar_at::@1->print_char_at#1] -- register_copy
|
||||||
jsr print_char_at
|
jsr print_char_at
|
||||||
// print_uchar_at::@return
|
// print_uchar_at::@return
|
||||||
// }
|
// }
|
||||||
// [37] return
|
// [39] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// print_char_at
|
// print_char_at
|
||||||
@ -1225,13 +1259,13 @@ print_uchar_at: {
|
|||||||
print_char_at: {
|
print_char_at: {
|
||||||
.label at = 7
|
.label at = 7
|
||||||
// *(at) = ch
|
// *(at) = ch
|
||||||
// [39] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
// [41] *print_char_at::at#2 = print_char_at::ch#2 -- _deref_pbuz1=vbuxx
|
||||||
txa
|
txa
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (at),y
|
sta (at),y
|
||||||
// print_char_at::@return
|
// print_char_at::@return
|
||||||
// }
|
// }
|
||||||
// [40] return
|
// [42] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
|
@ -11,8 +11,9 @@ constant byte RADIX::OCTAL = 8
|
|||||||
constant byte* const SCREEN = (byte*) 1024
|
constant byte* const SCREEN = (byte*) 1024
|
||||||
dword clock()
|
dword clock()
|
||||||
dword clock::return
|
dword clock::return
|
||||||
dword clock::return#0 return zp[4]:9 37.33333333333333
|
dword clock::return#0 return zp[4]:9 28.0
|
||||||
dword clock::return#2 return zp[4]:9 22.0
|
dword clock::return#2 return zp[4]:9 22.0
|
||||||
|
dword clock::ticks
|
||||||
void clock_start()
|
void clock_start()
|
||||||
void main()
|
void main()
|
||||||
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
void print_char_at(byte print_char_at::ch , byte* print_char_at::at)
|
||||||
|
Loading…
Reference in New Issue
Block a user