mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-04-06 15:41:05 +00:00
Moved const/volatile to SymbolType. #121
This commit is contained in:
commit
6e0cacc908
src
main
fragment/cache
fragment-cache-csg65ce02.asmfragment-cache-mega45gs02.asmfragment-cache-mos6502x.asmfragment-cache-rom6502x.asmfragment-cache-wdc65c02.asm
java/dk/camelot64/kickc
test
java/dk/camelot64/kickc/test
kc
ref
32bit-rols.logfunction-pointer-noarg-call-14.logprintf-1.logprintf-12.logprintf-13.logprintf-14.logprintf-15.logprintf-16.logprintf-2.logprintf-speed.logprng-xorshift.logrand-1.logstars-1.logstars-2.logstdlib-string-memchr-1.logstruct-11.logstruct-12.logstruct-24.logstruct-26.logstruct-27.logstruct-28.logstruct-29.logstruct-30.logstruct-36.logstruct-43.logstruct-ptr-23.logstruct-ptr-28.logstruct-ptr-31.logstruct-ptr-33.logstruct-ptr-34.logstruct-ptr-35.log
adventofcode
atarixl-md5.logatoi-1.logcasting-negative.logcirclechars.logcomplex/includes
cpu-65ce02-eightqueens.logdeclared-memory-var-4.logexamples
atarixl
conio
cx16
eightqueens
helloworld
mega65
nes
480
src/main/fragment/cache/fragment-cache-csg65ce02.asm
vendored
480
src/main/fragment/cache/fragment-cache-csg65ce02.asm
vendored
@ -1,4 +1,244 @@
|
||||
//KICKC FRAGMENT CACHE 108dd16dc1 108dd18d7f
|
||||
//FRAGMENT vbuzz=vbuc1
|
||||
ldz #{c1}
|
||||
//FRAGMENT vbuzz_lt_vbuc1_then_la1
|
||||
cpz #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
|
||||
tza
|
||||
tax
|
||||
sta {c1},x
|
||||
//FRAGMENT vbuzz=_inc_vbuzz
|
||||
inz
|
||||
//FRAGMENT vbsz1=_deref_pbsc1
|
||||
lda {c1}
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbsz2
|
||||
lda {z2}
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pbsc1=vbsz1
|
||||
lda {z1}
|
||||
sta {c1}
|
||||
//FRAGMENT vbsz1=vbsz2_ror_2
|
||||
lda {z2}
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsaa=_deref_pbsc1
|
||||
lda {c1}
|
||||
//FRAGMENT vbsxx=_deref_pbsc1
|
||||
ldx {c1}
|
||||
//FRAGMENT vbsz1=_neg_vbsaa
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsaa=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbsaa
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
//FRAGMENT vbsxx=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbsaa
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsyy=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbsaa
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbszz=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbsaa
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT _deref_pbsc1=vbsaa
|
||||
sta {c1}
|
||||
//FRAGMENT vbsz1=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsaa=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsxx=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsyy=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbszz=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbsyy=_deref_pbsc1
|
||||
ldy {c1}
|
||||
//FRAGMENT vbszz=_deref_pbsc1
|
||||
lda {c1}
|
||||
taz
|
||||
//FRAGMENT _deref_pbsc1=vbsxx
|
||||
stx {c1}
|
||||
//FRAGMENT _deref_pbsc1=vbsyy
|
||||
sty {c1}
|
||||
//FRAGMENT _deref_pbsc1=vbszz
|
||||
tza
|
||||
sta {c1}
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
@ -1878,8 +2118,6 @@ cpx {z1}
|
||||
bcs {la1}
|
||||
//FRAGMENT vbuxx=vbuc1
|
||||
ldx #{c1}
|
||||
//FRAGMENT vbuzz=vbuc1
|
||||
ldz #{c1}
|
||||
//FRAGMENT vbuzz=vbuz1
|
||||
ldz {z1}
|
||||
//FRAGMENT vbuz1=vbuzz
|
||||
@ -1894,8 +2132,6 @@ inx
|
||||
ldy #{c1}
|
||||
//FRAGMENT vbuyy=_inc_vbuyy
|
||||
iny
|
||||
//FRAGMENT vbuzz=_inc_vbuzz
|
||||
inz
|
||||
//FRAGMENT vbuz1_ge_vbuxx_then_la1
|
||||
lda {z1}
|
||||
stx $ff
|
||||
@ -1952,9 +2188,6 @@ bcc {la1}
|
||||
cpy #{c1}
|
||||
bcc {la1}
|
||||
beq {la1}
|
||||
//FRAGMENT vbuzz_lt_vbuc1_then_la1
|
||||
cpz #{c1}
|
||||
bcc {la1}
|
||||
//FRAGMENT vbuzz_le_vbuc1_then_la1
|
||||
cpz #{c1}
|
||||
bcc {la1}
|
||||
@ -2176,236 +2409,3 @@ sta {z1}+1
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
//FRAGMENT pbuc1_derefidx_vbuzz=vbuzz
|
||||
tza
|
||||
tax
|
||||
sta {c1},x
|
||||
//FRAGMENT vbsz1=_deref_pbsc1
|
||||
lda {c1}
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbsz2
|
||||
lda {z2}
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pbsc1=vbsz1
|
||||
lda {z1}
|
||||
sta {c1}
|
||||
//FRAGMENT vbsz1=vbsz2_ror_2
|
||||
lda {z2}
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsaa=_deref_pbsc1
|
||||
lda {c1}
|
||||
//FRAGMENT vbsxx=_deref_pbsc1
|
||||
ldx {c1}
|
||||
//FRAGMENT vbsz1=_neg_vbsaa
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
sta {z1}
|
||||
//FRAGMENT vbsaa=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbsaa
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
//FRAGMENT vbsaa=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
//FRAGMENT vbsxx=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbsaa
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsxx=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
tax
|
||||
//FRAGMENT vbsyy=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbsaa
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbsyy=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
tay
|
||||
//FRAGMENT vbszz=_neg_vbsz1
|
||||
lda {z1}
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbsaa
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbsxx
|
||||
txa
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbsyy
|
||||
tya
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT vbszz=_neg_vbszz
|
||||
tza
|
||||
neg
|
||||
taz
|
||||
//FRAGMENT _deref_pbsc1=vbsaa
|
||||
sta {c1}
|
||||
//FRAGMENT vbsz1=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsz1=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
sta {z1}
|
||||
//FRAGMENT vbsaa=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsaa=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
//FRAGMENT vbsxx=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsxx=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
tax
|
||||
//FRAGMENT vbsyy=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbsyy=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
tay
|
||||
//FRAGMENT vbszz=vbsz1_ror_2
|
||||
lda {z1}
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbsaa_ror_2
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbsxx_ror_2
|
||||
txa
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbsyy_ror_2
|
||||
tya
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbszz=vbszz_ror_2
|
||||
tza
|
||||
asr
|
||||
asr
|
||||
taz
|
||||
//FRAGMENT vbsyy=_deref_pbsc1
|
||||
ldy {c1}
|
||||
//FRAGMENT vbszz=_deref_pbsc1
|
||||
lda {c1}
|
||||
taz
|
||||
//FRAGMENT _deref_pbsc1=vbsxx
|
||||
stx {c1}
|
||||
//FRAGMENT _deref_pbsc1=vbsyy
|
||||
sty {c1}
|
||||
//FRAGMENT _deref_pbsc1=vbszz
|
||||
tza
|
||||
sta {c1}
|
||||
|
@ -1,72 +1,24 @@
|
||||
//KICKC FRAGMENT CACHE 108dd16dc1 108dd18d7f
|
||||
//FRAGMENT _deref_pbuc1=vbuc2
|
||||
lda #{c2}
|
||||
sta {c1}
|
||||
//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
lda #{c2}
|
||||
ora {c1}
|
||||
sta {c1}
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
//FRAGMENT pbuz1=pbuc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1_lt_pbuc1_then_la1
|
||||
lda {z1}+1
|
||||
cmp #>{c1}
|
||||
bcc {la1}
|
||||
bne !+
|
||||
lda {z1}
|
||||
cmp #<{c1}
|
||||
bcc {la1}
|
||||
!:
|
||||
//FRAGMENT _deref_pbuc1=_deref_pbuc2
|
||||
lda {c2}
|
||||
sta {c1}
|
||||
//FRAGMENT vbuz1=_lo_pbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pbuz1=vbuz2
|
||||
lda {z2}
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT pbuz1=_inc_pbuz1
|
||||
inw {z1}
|
||||
//FRAGMENT _deref_pbuz1=vbuc1
|
||||
lda #{c1}
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuaa=_lo_pbuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_lo_pbuz1
|
||||
ldx {z1}
|
||||
//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 _deref_pbuz1=vbuzz
|
||||
tza
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuyy=_lo_pbuz1
|
||||
ldy {z1}
|
||||
//FRAGMENT vbuzz=_lo_pbuz1
|
||||
ldz {z1}
|
||||
//FRAGMENT vbuz1=vbuc1
|
||||
lda #{c1}
|
||||
sta {z1}
|
||||
//FRAGMENT isr_hardware_all_entry
|
||||
pha @clob_a
|
||||
phx @clob_x
|
||||
phy @clob_y
|
||||
phz @clob_z
|
||||
//FRAGMENT _deref_pbuc1=_deref_pbuc1_bor_vbuc2
|
||||
lda #{c2}
|
||||
ora {c1}
|
||||
sta {c1}
|
||||
//FRAGMENT _deref_pbuc1=vbuc2
|
||||
lda #{c2}
|
||||
sta {c1}
|
||||
//FRAGMENT vbuz1=_inc_vbuz1
|
||||
inc {z1}
|
||||
//FRAGMENT vbuz1=vbuz2
|
||||
@ -93,6 +45,8 @@ dec {z1}
|
||||
ldy #0
|
||||
lda ({z2}),y
|
||||
sta {z1}
|
||||
//FRAGMENT pbuz1=_inc_pbuz1
|
||||
inw {z1}
|
||||
//FRAGMENT vbuz1_neq_0_then_la1
|
||||
lda {z1}
|
||||
bne {la1}
|
||||
@ -190,6 +144,10 @@ bne {la1}
|
||||
lda {z1}
|
||||
cmp #<{c1}
|
||||
bne {la1}
|
||||
//FRAGMENT _deref_pbuz1=vbuc1
|
||||
lda #{c1}
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuaa=vbuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=vbuz1
|
||||
@ -1187,217 +1145,11 @@ inc
|
||||
stx {c1}
|
||||
//FRAGMENT _deref_pbuc1=vbuzz
|
||||
stz {c1}
|
||||
//FRAGMENT vbuz1=_deref_pbuc1_plus_1
|
||||
lda {c1}
|
||||
inc
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=_word_vbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_2
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz3
|
||||
lda {z2}
|
||||
clc
|
||||
adc {z3}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc {z3}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_4
|
||||
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
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT 0_neq_vbuz1_then_la1
|
||||
lda {z1}
|
||||
bne {la1}
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
|
||||
lda {z3}
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1
|
||||
lda #{c1}
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
adc {z1}
|
||||
sta {z1}
|
||||
bcc !+
|
||||
inc {z1}+1
|
||||
!:
|
||||
//FRAGMENT pvoz1=pvoc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz1_minus_vbuc1
|
||||
sec
|
||||
lda {z1}
|
||||
sbc #{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
sbc #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz2_plus_vwuc1
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1_neq_pbuz2_then_la1
|
||||
lda {z1}+1
|
||||
cmp {z2}+1
|
||||
bne {la1}
|
||||
lda {z1}
|
||||
cmp {z2}
|
||||
bne {la1}
|
||||
//FRAGMENT _deref_pbuz1=_deref_pbuz2
|
||||
ldy #0
|
||||
lda ({z2}),y
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT pbuz1=pbuz2_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda #0
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuaa=_deref_pbuc1_plus_1
|
||||
lda {c1}
|
||||
inc
|
||||
//FRAGMENT vbuxx=_deref_pbuc1_plus_1
|
||||
ldx {c1}
|
||||
inx
|
||||
//FRAGMENT vbuz1=vbuxx
|
||||
stx {z1}
|
||||
//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 vwuz1=_word_vbuzz
|
||||
tza
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT 0_neq_vbuaa_then_la1
|
||||
cmp #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuz1=vbuaa
|
||||
sta {z1}
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx
|
||||
txa
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy
|
||||
tya
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuzz
|
||||
tza
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT 0_neq_vbuxx_then_la1
|
||||
cpx #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa=vbuxx
|
||||
txa
|
||||
//FRAGMENT 0_neq_vbuyy_then_la1
|
||||
cpy #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa=vbuyy
|
||||
tya
|
||||
//FRAGMENT 0_neq_vbuzz_then_la1
|
||||
cpz #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa=vbuzz
|
||||
tza
|
||||
//FRAGMENT vbuz1=vbuyy
|
||||
sty {z1}
|
||||
//FRAGMENT vbuz1=vbuzz
|
||||
tza
|
||||
sta {z1}
|
||||
//FRAGMENT vbuxx=vbuaa
|
||||
tax
|
||||
//FRAGMENT vbuyy=_deref_pbuc1_plus_1
|
||||
ldy {c1}
|
||||
iny
|
||||
//FRAGMENT vbuxx=vbuyy
|
||||
tya
|
||||
tax
|
||||
//FRAGMENT vbuzz=_deref_pbuc1_plus_1
|
||||
lda {c1}
|
||||
inc
|
||||
taz
|
||||
//FRAGMENT vbuxx=vbuzz
|
||||
tza
|
||||
tax
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz1
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
|
||||
clc
|
||||
lda {z1}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_rol_4
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
//FRAGMENT vwuz1=vwuc1
|
||||
lda #<{c1}
|
||||
sta {z1}
|
||||
@ -1408,6 +1160,9 @@ lda #<{c1}
|
||||
sta {z1}
|
||||
lda #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT _deref_pbuc1=_deref_pbuc2
|
||||
lda {c2}
|
||||
sta {c1}
|
||||
//FRAGMENT pbuz1=pbuz1_plus_vwuc1
|
||||
clc
|
||||
lda {z1}
|
||||
@ -1416,10 +1171,23 @@ sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz1_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
adc {z1}
|
||||
sta {z1}
|
||||
bcc !+
|
||||
inc {z1}+1
|
||||
!:
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=pbuz3_derefidx_vbuz2
|
||||
ldy {z2}
|
||||
lda ({z3}),y
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vwuz1=_word_vbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT pwuz1=pwuz1_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
@ -1493,6 +1261,21 @@ sta ({z1}),y
|
||||
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 vwuz1=_word_vbuzz
|
||||
tza
|
||||
sta {z1}
|
||||
lda #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuz1=vbuaa_rol_1
|
||||
asl
|
||||
sta {z1}
|
||||
@ -1661,6 +1444,8 @@ inc {c1},x
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_lo_vwuz1
|
||||
ldx {z1}
|
||||
//FRAGMENT vbuz1=vbuaa
|
||||
sta {z1}
|
||||
//FRAGMENT vbuaa=_hi_vwuz1
|
||||
lda {z1}+1
|
||||
//FRAGMENT vbuxx=_hi_vwuz1
|
||||
@ -1700,10 +1485,17 @@ ora {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT vbuz1=vbuxx_bor_vbuxx
|
||||
stx {z1}
|
||||
//FRAGMENT vbuz1=vbuxx
|
||||
stx {z1}
|
||||
//FRAGMENT vbuyy=_lo_vwuz1
|
||||
ldy {z1}
|
||||
//FRAGMENT vbuz1=vbuyy
|
||||
sty {z1}
|
||||
//FRAGMENT vbuzz=_lo_vwuz1
|
||||
ldz {z1}
|
||||
//FRAGMENT vbuz1=vbuzz
|
||||
tza
|
||||
sta {z1}
|
||||
//FRAGMENT vbuyy=_hi_vwuz1
|
||||
ldy {z1}+1
|
||||
//FRAGMENT vbuzz=_hi_vwuz1
|
||||
@ -2541,6 +2333,8 @@ tza
|
||||
tax
|
||||
tya
|
||||
sta {c1},x
|
||||
//FRAGMENT vbuxx=vbuaa
|
||||
tax
|
||||
//FRAGMENT vbuyy=vbuaa
|
||||
tay
|
||||
//FRAGMENT vbuzz=vbuaa
|
||||
@ -2609,3 +2403,209 @@ sta {z1}+3
|
||||
NO_SYNTHESIS
|
||||
//FRAGMENT vduz1=vwsc1
|
||||
NO_SYNTHESIS
|
||||
//FRAGMENT pbuz1_lt_pbuc1_then_la1
|
||||
lda {z1}+1
|
||||
cmp #>{c1}
|
||||
bcc {la1}
|
||||
bne !+
|
||||
lda {z1}
|
||||
cmp #<{c1}
|
||||
bcc {la1}
|
||||
!:
|
||||
//FRAGMENT vbuz1=_lo_pbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
//FRAGMENT _deref_pbuz1=vbuz2
|
||||
lda {z2}
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuaa=_lo_pbuz1
|
||||
lda {z1}
|
||||
//FRAGMENT vbuxx=_lo_pbuz1
|
||||
ldx {z1}
|
||||
//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 _deref_pbuz1=vbuzz
|
||||
tza
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT vbuyy=_lo_pbuz1
|
||||
ldy {z1}
|
||||
//FRAGMENT vbuzz=_lo_pbuz1
|
||||
ldz {z1}
|
||||
//FRAGMENT vbuz1=_deref_pbuc1_plus_1
|
||||
lda {c1}
|
||||
inc
|
||||
sta {z1}
|
||||
//FRAGMENT vwuz1=vwuz2_rol_2
|
||||
lda {z2}
|
||||
asl
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
rol
|
||||
sta {z1}+1
|
||||
asl {z1}
|
||||
rol {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz3
|
||||
lda {z2}
|
||||
clc
|
||||
adc {z3}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc {z3}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz2_rol_4
|
||||
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
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz2
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz2
|
||||
lda {z2}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT 0_neq_vbuz1_then_la1
|
||||
lda {z1}
|
||||
bne {la1}
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuz3
|
||||
lda {z3}
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuc1
|
||||
lda #{c1}
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1=pbuz1_minus_vbuc1
|
||||
sec
|
||||
lda {z1}
|
||||
sbc #{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
sbc #0
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuz2_plus_vwuc1
|
||||
clc
|
||||
lda {z2}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z2}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1_neq_pbuz2_then_la1
|
||||
lda {z1}+1
|
||||
cmp {z2}+1
|
||||
bne {la1}
|
||||
lda {z1}
|
||||
cmp {z2}
|
||||
bne {la1}
|
||||
//FRAGMENT _deref_pbuz1=_deref_pbuz2
|
||||
ldy #0
|
||||
lda ({z2}),y
|
||||
ldy #0
|
||||
sta ({z1}),y
|
||||
//FRAGMENT pbuz1=pbuz2_plus_vbuc1
|
||||
lda #{c1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda #0
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT vbuaa=_deref_pbuc1_plus_1
|
||||
lda {c1}
|
||||
inc
|
||||
//FRAGMENT vbuxx=_deref_pbuc1_plus_1
|
||||
ldx {c1}
|
||||
inx
|
||||
//FRAGMENT 0_neq_vbuaa_then_la1
|
||||
cmp #0
|
||||
bne {la1}
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuaa
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuxx
|
||||
txa
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuyy
|
||||
tya
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT pbuz1_derefidx_vbuz2=vbuzz
|
||||
tza
|
||||
ldz {z2}
|
||||
sta ({z1}),z
|
||||
//FRAGMENT 0_neq_vbuxx_then_la1
|
||||
cpx #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa=vbuxx
|
||||
txa
|
||||
//FRAGMENT 0_neq_vbuyy_then_la1
|
||||
cpy #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa=vbuyy
|
||||
tya
|
||||
//FRAGMENT 0_neq_vbuzz_then_la1
|
||||
cpz #0
|
||||
bne {la1}
|
||||
//FRAGMENT vbuaa=vbuzz
|
||||
tza
|
||||
//FRAGMENT vbuyy=_deref_pbuc1_plus_1
|
||||
ldy {c1}
|
||||
iny
|
||||
//FRAGMENT vbuxx=vbuyy
|
||||
tya
|
||||
tax
|
||||
//FRAGMENT vbuzz=_deref_pbuc1_plus_1
|
||||
lda {c1}
|
||||
inc
|
||||
taz
|
||||
//FRAGMENT vbuxx=vbuzz
|
||||
tza
|
||||
tax
|
||||
//FRAGMENT vwuz1=vwuz2_plus_vwuz1
|
||||
lda {z1}
|
||||
clc
|
||||
adc {z2}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc {z2}+1
|
||||
sta {z1}+1
|
||||
//FRAGMENT pbuz1=pbuc1_plus_vwuz1
|
||||
clc
|
||||
lda {z1}
|
||||
adc #<{c1}
|
||||
sta {z1}
|
||||
lda {z1}+1
|
||||
adc #>{c1}
|
||||
sta {z1}+1
|
||||
//FRAGMENT vwuz1=vwuz1_rol_4
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
asw {z1}
|
||||
|
25010
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
25010
src/main/fragment/cache/fragment-cache-mos6502x.asm
vendored
File diff suppressed because it is too large
Load Diff
1422
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
1422
src/main/fragment/cache/fragment-cache-rom6502x.asm
vendored
File diff suppressed because it is too large
Load Diff
3072
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
3072
src/main/fragment/cache/fragment-cache-wdc65c02.asm
vendored
File diff suppressed because it is too large
Load Diff
@ -73,6 +73,9 @@ public class Initializers {
|
||||
* @return The constantified value. A {@link ConstantValue} is possible
|
||||
*/
|
||||
public static RValue constantify(RValue initValue, ValueTypeSpec typeSpec, Program program, StatementSource source) {
|
||||
// Remove any const/volatile qualifiers
|
||||
typeSpec = new ValueTypeSpec(typeSpec.getType().getQualified(false, false));
|
||||
|
||||
if(initValue == null) {
|
||||
// Add an zero-value
|
||||
initValue = createZeroValue(typeSpec, source);
|
||||
|
@ -54,13 +54,20 @@ public class VariableBuilder {
|
||||
* @return The variable
|
||||
*/
|
||||
public Variable build() {
|
||||
Variable variable = new Variable(varName, getKind(), type, scope, getMemoryArea(), dataSegment, null);
|
||||
|
||||
// Todo: #121 move to type parsing!
|
||||
SymbolType typeQualified = type.getQualified(this.isVolatile(), this.isNoModify());
|
||||
|
||||
Variable variable = new Variable(varName, getKind(), typeQualified, scope, getMemoryArea(), dataSegment, null);
|
||||
|
||||
// Todo: #121 remove!
|
||||
variable.setNoModify(this.isNoModify());
|
||||
variable.setVolatile(this.isVolatile());
|
||||
variable.setExport(this.isExport());
|
||||
variable.setPermanent(this.isPermanent());
|
||||
variable.setToNoModify(this.isToNoModify());
|
||||
variable.setToVolatile(this.isToVolatile());
|
||||
|
||||
variable.setExport(this.isExport());
|
||||
variable.setPermanent(this.isPermanent());
|
||||
variable.setOptimize(this.isOptimize());
|
||||
variable.setRegister(this.getRegister());
|
||||
if(variable.getRegister() instanceof Registers.RegisterMainMem) {
|
||||
|
@ -193,11 +193,14 @@ public class Variable implements Symbol {
|
||||
version.setMemoryAlignment(phiMaster.getMemoryAlignment());
|
||||
version.setMemoryAddress(phiMaster.getMemoryAddress());
|
||||
version.setOptimize(phiMaster.isOptimize());
|
||||
version.setNoModify(phiMaster.isNoModify());
|
||||
version.setRegister(phiMaster.getRegister());
|
||||
|
||||
// TODO: #121 remove
|
||||
version.setVolatile(phiMaster.isVolatile());
|
||||
version.setNoModify(phiMaster.isNoModify());
|
||||
version.setToNoModify(phiMaster.isToNoModify());
|
||||
version.setToVolatile(phiMaster.isToVolatile());
|
||||
|
||||
version.setRegister(phiMaster.getRegister());
|
||||
version.setPermanent(phiMaster.isPermanent());
|
||||
version.setExport(phiMaster.isExport());
|
||||
version.setComments(phiMaster.getComments());
|
||||
@ -239,11 +242,13 @@ public class Variable implements Symbol {
|
||||
constVar.setMemoryAlignment(variable.getMemoryAlignment());
|
||||
constVar.setMemoryAddress(variable.getMemoryAddress());
|
||||
constVar.setOptimize(variable.isOptimize());
|
||||
constVar.setNoModify(variable.isNoModify());
|
||||
constVar.setRegister(variable.getRegister());
|
||||
// Todo: #121 remove
|
||||
constVar.setVolatile(variable.isVolatile());
|
||||
constVar.setNoModify(variable.isNoModify());
|
||||
constVar.setToNoModify(variable.isToNoModify());
|
||||
constVar.setToVolatile(variable.isToVolatile());
|
||||
|
||||
constVar.setPermanent(variable.isPermanent());
|
||||
constVar.setExport(variable.isExport());
|
||||
constVar.setComments(variable.getComments());
|
||||
@ -262,11 +267,14 @@ public class Variable implements Symbol {
|
||||
copy.setMemoryAlignment(original.getMemoryAlignment());
|
||||
copy.setMemoryAddress(original.getMemoryAddress());
|
||||
copy.setOptimize(original.isOptimize());
|
||||
copy.setNoModify(original.isNoModify());
|
||||
copy.setPermanent(original.isPermanent());
|
||||
|
||||
// Todo: #121 remove
|
||||
copy.setVolatile(original.isVolatile());
|
||||
copy.setNoModify(original.isNoModify());
|
||||
copy.setToNoModify(original.isToNoModify());
|
||||
copy.setToVolatile(original.isToVolatile());
|
||||
|
||||
copy.setExport(original.isExport());
|
||||
copy.setRegister(original.getRegister());
|
||||
copy.setComments(original.getComments());
|
||||
@ -288,18 +296,24 @@ public class Variable implements Symbol {
|
||||
if(isParameter && memberDefinition.isArray()) {
|
||||
// Array struct members are converted to pointers when unwound (use same kind as the struct variable)
|
||||
SymbolTypePointer arrayType = (SymbolTypePointer) memberDefinition.getType();
|
||||
memberVariable = new Variable(name, structVar.getKind(), new SymbolTypePointer(arrayType.getElementType()), structVar.getScope(), memoryArea, structVar.getDataSegment(), null);
|
||||
SymbolType typeQualified = new SymbolTypePointer(arrayType.getElementType()).getQualified(structVar.isVolatile, structVar.isNoModify());
|
||||
memberVariable = new Variable(name, structVar.getKind(), typeQualified, structVar.getScope(), memoryArea, structVar.getDataSegment(), null);
|
||||
} else if(memberDefinition.isKindConstant()) {
|
||||
// Constant members are unwound as constants
|
||||
memberVariable = new Variable(name, Kind.CONSTANT, memberDefinition.getType(), structVar.getScope(), memoryArea, structVar.getDataSegment(), memberDefinition.getInitValue());
|
||||
SymbolType typeQualified = memberDefinition.getType().getQualified(structVar.isVolatile, structVar.isNoModify());
|
||||
memberVariable = new Variable(name, Kind.CONSTANT, typeQualified, structVar.getScope(), memoryArea, structVar.getDataSegment(), memberDefinition.getInitValue());
|
||||
} else {
|
||||
// For others the kind is preserved from the member definition
|
||||
memberVariable = new Variable(name, structVar.getKind(), memberDefinition.getType(), structVar.getScope(), memoryArea, structVar.getDataSegment(), memberDefinition.getInitValue());
|
||||
SymbolType typeQualified = memberDefinition.getType().getQualified(structVar.isVolatile, structVar.isNoModify());
|
||||
memberVariable = new Variable(name, structVar.getKind(),typeQualified, structVar.getScope(), memoryArea, structVar.getDataSegment(), memberDefinition.getInitValue());
|
||||
}
|
||||
|
||||
// Todo: #121 fix struct member qualifiers - and remove!
|
||||
memberVariable.setVolatile(structVar.isVolatile());
|
||||
memberVariable.setNoModify(structVar.isNoModify());
|
||||
memberVariable.setToNoModify(structVar.isToNoModify());
|
||||
memberVariable.setToVolatile(structVar.isToVolatile());
|
||||
|
||||
memberVariable.setExport(structVar.isExport());
|
||||
memberVariable.setPermanent(structVar.isPermanent());
|
||||
return memberVariable;
|
||||
|
@ -11,6 +11,14 @@ public interface SymbolType extends Serializable {
|
||||
/** Specifies that the variable is not allowed to be modified (const keyword). The compiler should try to detect modifications and generate compile-time errors if they occur.*/
|
||||
boolean isNomodify();
|
||||
|
||||
/** Get the type with different type qualifiers.
|
||||
*
|
||||
* @param isVolatile Should the type be marked as volatile
|
||||
* @param isNomodify Should the type be marked as nomodify (keyword const)
|
||||
* @return The type with different qualifiers
|
||||
*/
|
||||
SymbolType getQualified(boolean isVolatile, boolean isNomodify);
|
||||
|
||||
/** Unsigned byte (8 bits)). */
|
||||
SymbolTypeIntegerFixed BYTE = new SymbolTypeIntegerFixed("byte", 0, 255, false, 8, false, false);
|
||||
/** Signed byte (8 bits). */
|
||||
|
@ -4,12 +4,11 @@ package dk.camelot64.kickc.model.types;
|
||||
public class SymbolTypeBlockScope implements SymbolType {
|
||||
|
||||
public SymbolTypeBlockScope() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "BLOCK";
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -22,6 +21,11 @@ public class SymbolTypeBlockScope implements SymbolType {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "BLOCK";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSizeBytes() {
|
||||
return -1;
|
||||
|
@ -8,7 +8,7 @@ import java.util.Objects;
|
||||
public class SymbolTypeEnum implements SymbolType {
|
||||
|
||||
/** Name of the enum type. */
|
||||
private String name;
|
||||
private String enumName;
|
||||
|
||||
/** The enum definition. */
|
||||
private EnumDefinition definition;
|
||||
@ -18,11 +18,16 @@ public class SymbolTypeEnum implements SymbolType {
|
||||
|
||||
public SymbolTypeEnum(EnumDefinition definition, boolean isVolatile, boolean isNomodify) {
|
||||
this.definition = definition;
|
||||
this.name = definition.getLocalName();
|
||||
this.enumName = definition.getLocalName();
|
||||
this.isVolatile = isVolatile;
|
||||
this.isNomodify = isNomodify;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return new SymbolTypeEnum(this.definition, isVolatile, isNomodify);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVolatile() {
|
||||
return isVolatile;
|
||||
@ -35,7 +40,17 @@ public class SymbolTypeEnum implements SymbolType {
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "enum " + name;
|
||||
String name = "";
|
||||
|
||||
// TODO #121 Add
|
||||
/*
|
||||
if(isVolatile)
|
||||
name += "volatile ";
|
||||
if(isNomodify)
|
||||
name += "const ";
|
||||
*/
|
||||
name += "enum " + this.enumName;
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -57,12 +72,12 @@ public class SymbolTypeEnum implements SymbolType {
|
||||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
SymbolTypeEnum that = (SymbolTypeEnum) o;
|
||||
return Objects.equals(name, that.name);
|
||||
return Objects.equals(enumName, that.enumName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(name);
|
||||
return Objects.hash(enumName);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -19,10 +19,10 @@ public class SymbolTypeInference {
|
||||
Variable variable = symbols.getVar((SymbolVariableRef) rValue);
|
||||
if(variable==null)
|
||||
throw new CompileError("Unknown variable "+rValue.toString());
|
||||
type = variable.getType();
|
||||
type = variable.getType().getQualified(false, variable.getType().isNomodify());
|
||||
} else if(rValue instanceof Symbol) {
|
||||
Symbol rSymbol = (Symbol) rValue;
|
||||
type = rSymbol.getType();
|
||||
type = rSymbol.getType().getQualified(false, rSymbol.getType().isNomodify());
|
||||
} else if(rValue instanceof LvalueIntermediate) {
|
||||
return inferType(symbols, ((LvalueIntermediate) rValue).getVariable());
|
||||
} else if(rValue instanceof ConstantInteger) {
|
||||
@ -36,12 +36,14 @@ public class SymbolTypeInference {
|
||||
} else if(rValue instanceof ConstantUnary) {
|
||||
ConstantUnary constUnary = (ConstantUnary) rValue;
|
||||
SymbolType valueType = inferType(symbols, constUnary.getOperand());
|
||||
return constUnary.getOperator().inferType(valueType);
|
||||
final SymbolType unaryType = constUnary.getOperator().inferType(valueType);
|
||||
return unaryType.getQualified(false, true);
|
||||
} else if(rValue instanceof ConstantBinary) {
|
||||
ConstantBinary constBin = (ConstantBinary) rValue;
|
||||
SymbolType leftType = inferType(symbols, constBin.getLeft());
|
||||
SymbolType rightType = inferType(symbols, constBin.getRight());
|
||||
return constBin.getOperator().inferType(leftType, rightType);
|
||||
final SymbolType binaryType = constBin.getOperator().inferType(leftType, rightType);
|
||||
return binaryType.getQualified(false, true);
|
||||
} else if(rValue instanceof ValueList) {
|
||||
return SymbolType.VAR;
|
||||
} else if(rValue instanceof PointerDereference) {
|
||||
@ -97,7 +99,7 @@ public class SymbolTypeInference {
|
||||
} else {
|
||||
throw new InternalError("Cannot infer type of " + assignment.toString());
|
||||
}
|
||||
return rValueType;
|
||||
return rValueType.getQualified(false, false);
|
||||
} else if(rValue instanceof StructMemberRef) {
|
||||
StructMemberRef structMemberRef = (StructMemberRef) rValue;
|
||||
SymbolType structType = inferType(symbols, structMemberRef.getStruct());
|
||||
|
@ -11,6 +11,11 @@ public class SymbolTypeIntegerAuto implements SymbolTypeInteger {
|
||||
this.typeName = typeName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVolatile() {
|
||||
return false;
|
||||
|
@ -7,16 +7,19 @@ import java.util.Objects;
|
||||
/** Integer type with a fixed size (byte, signed byte, word, ...). */
|
||||
public class SymbolTypeIntegerFixed implements SymbolTypeInteger {
|
||||
|
||||
private final String typeName;
|
||||
/** The basename of the the type (without any qualifiers). */
|
||||
private final String typeBaseName;
|
||||
|
||||
private final long minValue;
|
||||
private final long maxValue;
|
||||
private final boolean signed;
|
||||
private final int bits;
|
||||
|
||||
private final boolean isVolatile;
|
||||
private final boolean isNomodify;
|
||||
|
||||
SymbolTypeIntegerFixed(String typeName, long minValue, long maxValue, boolean signed, int bits, boolean isVolatile, boolean isNomodify) {
|
||||
this.typeName = typeName;
|
||||
SymbolTypeIntegerFixed(String typeBaseName, long minValue, long maxValue, boolean signed, int bits, boolean isVolatile, boolean isNomodify) {
|
||||
this.typeBaseName = typeBaseName;
|
||||
this.minValue = minValue;
|
||||
this.maxValue = maxValue;
|
||||
this.signed = signed;
|
||||
@ -25,10 +28,15 @@ public class SymbolTypeIntegerFixed implements SymbolTypeInteger {
|
||||
this.isNomodify = isNomodify;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return new SymbolTypeIntegerFixed(this.typeBaseName, this.minValue, this.maxValue, this.signed, this.bits, isVolatile, isNomodify);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all fixed size integer types.
|
||||
* Get all (unqualified) fixed size integer types.
|
||||
*
|
||||
* @return All fixed size integer types
|
||||
* @return All (unqualified) fixed size integer types
|
||||
*/
|
||||
public static Collection<SymbolTypeIntegerFixed> getIntegerFixedTypes() {
|
||||
ArrayList<SymbolTypeIntegerFixed> types = new ArrayList<>();
|
||||
@ -88,7 +96,16 @@ public class SymbolTypeIntegerFixed implements SymbolTypeInteger {
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return typeName;
|
||||
String name = "";
|
||||
// TODO #121 Add
|
||||
/*
|
||||
if(isVolatile)
|
||||
name += "volatile ";
|
||||
if(isNomodify)
|
||||
name += "const ";
|
||||
*/
|
||||
name += typeBaseName;
|
||||
return name;
|
||||
}
|
||||
|
||||
public long getMinValue() {
|
||||
@ -122,11 +139,11 @@ public class SymbolTypeIntegerFixed implements SymbolTypeInteger {
|
||||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
SymbolTypeIntegerFixed that = (SymbolTypeIntegerFixed) o;
|
||||
return Objects.equals(typeName, that.typeName);
|
||||
return Objects.equals(typeBaseName, that.typeBaseName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(typeName);
|
||||
return Objects.hash(typeBaseName);
|
||||
}
|
||||
}
|
||||
|
@ -3,18 +3,23 @@ package dk.camelot64.kickc.model.types;
|
||||
/** Basic named (string, char, ...) Symbol Types */
|
||||
public class SymbolTypeNamed implements SymbolType {
|
||||
|
||||
private String typeName;
|
||||
private String typeBaseName;
|
||||
private int sizeBytes;
|
||||
private final boolean isVolatile;
|
||||
private final boolean isNomodify;
|
||||
|
||||
SymbolTypeNamed(String typeName, int sizeBytes, boolean isVolatile, boolean isNomodify) {
|
||||
this.typeName = typeName;
|
||||
SymbolTypeNamed(String typeBaseName, int sizeBytes, boolean isVolatile, boolean isNomodify) {
|
||||
this.typeBaseName = typeBaseName;
|
||||
this.sizeBytes = sizeBytes;
|
||||
this.isVolatile = isVolatile;
|
||||
this.isNomodify = isNomodify;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return new SymbolTypeNamed(this.typeBaseName, this.sizeBytes, isVolatile, isNomodify);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVolatile() {
|
||||
return isVolatile;
|
||||
@ -26,7 +31,16 @@ public class SymbolTypeNamed implements SymbolType {
|
||||
}
|
||||
|
||||
public String getTypeName() {
|
||||
return typeName;
|
||||
String name = "";
|
||||
// TODO #121 Add
|
||||
/*
|
||||
if(isVolatile)
|
||||
name += "volatile ";
|
||||
if(isNomodify)
|
||||
name += "const ";
|
||||
*/
|
||||
name += typeBaseName;
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -45,12 +59,12 @@ public class SymbolTypeNamed implements SymbolType {
|
||||
|
||||
SymbolTypeNamed that = (SymbolTypeNamed) o;
|
||||
|
||||
return typeName != null ? typeName.equals(that.typeName) : that.typeName == null;
|
||||
return typeBaseName != null ? typeBaseName.equals(that.typeBaseName) : that.typeBaseName == null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return typeName != null ? typeName.hashCode() : 0;
|
||||
return typeBaseName != null ? typeBaseName.hashCode() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -18,7 +18,6 @@ public class SymbolTypePointer implements SymbolType {
|
||||
private final boolean isVolatile;
|
||||
private final boolean isNomodify;
|
||||
|
||||
|
||||
public SymbolTypePointer(SymbolType elementType, ArraySpec arraySpec, boolean isVolatile, boolean isNomodify) {
|
||||
this.elementType = elementType;
|
||||
this.arraySpec = arraySpec;
|
||||
@ -30,14 +29,19 @@ public class SymbolTypePointer implements SymbolType {
|
||||
this(elementType, null, false, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return new SymbolTypePointer(this.elementType, this.arraySpec, isVolatile, isNomodify);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVolatile() {
|
||||
return false;
|
||||
return isVolatile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isNomodify() {
|
||||
return false;
|
||||
return isNomodify;
|
||||
}
|
||||
|
||||
public SymbolType getElementType() {
|
||||
@ -54,7 +58,15 @@ public class SymbolTypePointer implements SymbolType {
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return elementType.getTypeName() + "*";
|
||||
String name = elementType.getTypeName() + "*";
|
||||
// TODO #121 Add
|
||||
/*
|
||||
if(isVolatile)
|
||||
name += " volatile";
|
||||
if(isNomodify)
|
||||
name += " const";
|
||||
*/
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -11,6 +11,11 @@ public class SymbolTypeProcedure implements SymbolType {
|
||||
this.returnType = returnType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVolatile() {
|
||||
return false;
|
||||
|
@ -4,7 +4,11 @@ package dk.camelot64.kickc.model.types;
|
||||
public class SymbolTypeProgram implements SymbolType {
|
||||
|
||||
public SymbolTypeProgram() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -13,7 +13,7 @@ import java.util.Objects;
|
||||
public class SymbolTypeStruct implements SymbolType {
|
||||
|
||||
/** Name of the struct type. */
|
||||
private String name;
|
||||
private String structName;
|
||||
|
||||
/** Size of the struct in bytes. */
|
||||
private int sizeBytes;
|
||||
@ -21,13 +21,25 @@ public class SymbolTypeStruct implements SymbolType {
|
||||
private final boolean isVolatile;
|
||||
private final boolean isNomodify;
|
||||
|
||||
public SymbolTypeStruct(String structName, int sizeBytes, boolean isVolatile, boolean isNomodify) {
|
||||
this.structName = structName;
|
||||
this.sizeBytes = sizeBytes;
|
||||
this.isVolatile = isVolatile;
|
||||
this.isNomodify = isNomodify;
|
||||
}
|
||||
|
||||
public SymbolTypeStruct(StructDefinition structDefinition, boolean isVolatile, boolean isNomodify) {
|
||||
this.name = structDefinition.getLocalName();
|
||||
this.structName = structDefinition.getLocalName();
|
||||
this.sizeBytes = calculateSizeBytes(structDefinition, null);
|
||||
this.isVolatile = isVolatile;
|
||||
this.isNomodify = isNomodify;
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return new SymbolTypeStruct(this.structName, this.sizeBytes, isVolatile, isNomodify);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isVolatile() {
|
||||
return isVolatile;
|
||||
@ -40,15 +52,24 @@ public class SymbolTypeStruct implements SymbolType {
|
||||
|
||||
@Override
|
||||
public String getTypeName() {
|
||||
return "struct " + name;
|
||||
}
|
||||
|
||||
public String getStructTypeName() {
|
||||
String name = "";
|
||||
// TODO #121 Add
|
||||
/*
|
||||
if(isVolatile)
|
||||
name += "volatile ";
|
||||
if(isNomodify)
|
||||
name += "const ";
|
||||
*/
|
||||
name += "struct " + this.structName;
|
||||
return name;
|
||||
}
|
||||
|
||||
public String getStructTypeName() {
|
||||
return structName;
|
||||
}
|
||||
|
||||
public StructDefinition getStructDefinition(ProgramScope programScope) {
|
||||
return programScope.getLocalStructDefinition(name);
|
||||
return programScope.getLocalStructDefinition(structName);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -98,12 +119,12 @@ public class SymbolTypeStruct implements SymbolType {
|
||||
if(this == o) return true;
|
||||
if(o == null || getClass() != o.getClass()) return false;
|
||||
SymbolTypeStruct that = (SymbolTypeStruct) o;
|
||||
return Objects.equals(name, that.name);
|
||||
return Objects.equals(structName, that.structName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(name, sizeBytes);
|
||||
return Objects.hash(structName, sizeBytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -4,7 +4,11 @@ package dk.camelot64.kickc.model.types;
|
||||
public class SymbolTypeTypeDefScope implements SymbolType {
|
||||
|
||||
public SymbolTypeTypeDefScope() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SymbolType getQualified(boolean isVolatile, boolean isNomodify) {
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -794,9 +794,11 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
}
|
||||
|
||||
/** The declared type of a variable. Combines SymbolType, type directives (const, volatile) and ArraySpec. It holds advanced type information like <p><code>char volatile * const * [42]</code> */
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
static class VariableDeclType {
|
||||
/** The type. */
|
||||
SymbolType type;
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
/** Const / Volatile Directives if applied to the type */
|
||||
List<Directive> typeDirectives;
|
||||
/** If the type is SymbolTypePointer this holds the declaration type of the elements. */
|
||||
@ -820,6 +822,12 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
|
||||
void setTypeDirectives(List<Directive> directives) {
|
||||
this.typeDirectives = directives;
|
||||
for(Directive directive : directives) {
|
||||
if(directive instanceof Directive.Const)
|
||||
setType(type.getQualified(type.isVolatile(), true));
|
||||
if(directive instanceof Directive.Volatile)
|
||||
setType(type.getQualified(true, type.isNomodify()));
|
||||
}
|
||||
}
|
||||
|
||||
void setElementDeclType(VariableDeclType elementDeclType) {
|
||||
@ -851,8 +859,20 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
void setDeclDirectives(List<Directive> directives) {
|
||||
this.declDirectives = new ArrayList<>();
|
||||
for(Directive directive : directives) {
|
||||
if(directive instanceof Directive.Const || directive instanceof Directive.Volatile) {
|
||||
if(directive instanceof Directive.Volatile) {
|
||||
// Type directive
|
||||
SymbolType type = this.declType.getType();
|
||||
SymbolType typeQualified = type.getQualified(true, type.isNomodify());
|
||||
this.declType.setType(typeQualified);
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
if(!this.declType.getTypeDirectives().contains(directive))
|
||||
this.declType.getTypeDirectives().add(directive);
|
||||
} else if(directive instanceof Directive.Const) {
|
||||
// Type directive
|
||||
SymbolType type = this.declType.getType();
|
||||
SymbolType typeQualified = type.getQualified(type.isVolatile(), true);
|
||||
this.declType.setType(typeQualified);
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
if(!this.declType.getTypeDirectives().contains(directive))
|
||||
this.declType.getTypeDirectives().add(directive);
|
||||
} else {
|
||||
@ -868,9 +888,11 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
// Add all general directives
|
||||
dirs.addAll(declDirectives);
|
||||
// Add type-directives
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
final VariableDeclType effectiveDeclType = getEffectiveDeclType();
|
||||
dirs.addAll(effectiveDeclType.getTypeDirectives());
|
||||
// Convert element directives
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
final VariableDeclType elementDeclType = effectiveDeclType.getElementDeclType();
|
||||
if(elementDeclType != null) {
|
||||
for(Directive elementTypeDirective : elementDeclType.getTypeDirectives()) {
|
||||
@ -881,6 +903,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
}
|
||||
}
|
||||
// Produce error on any deeper directives
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
VariableDeclType deepDeclType = elementDeclType.getElementDeclType();
|
||||
while(deepDeclType != null) {
|
||||
if(!deepDeclType.getTypeDirectives().isEmpty()) {
|
||||
@ -2039,6 +2062,7 @@ public class Pass0GenerateStatementSequence extends KickCParserBaseVisitor<Objec
|
||||
type = elementType;
|
||||
declType = elementDeclType;
|
||||
}
|
||||
// TODO: #121 Remove when const/volatile are put into type
|
||||
if(typeDefVariable.isNoModify())
|
||||
varDecl.getDeclType().getTypeDirectives().add(new Directive.Const());
|
||||
if(typeDefVariable.isVolatile())
|
||||
|
@ -7,6 +7,7 @@ import dk.camelot64.kickc.model.iterator.ProgramValueIterator;
|
||||
import dk.camelot64.kickc.model.operators.Operators;
|
||||
import dk.camelot64.kickc.model.symbols.Symbol;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeStruct;
|
||||
import dk.camelot64.kickc.model.values.ConstantSymbolPointer;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
@ -60,11 +61,17 @@ public class Pass1AddressOfHandling extends Pass2SsaOptimization {
|
||||
private void updateAddressOfVariable(Variable variable, String stmtStr) {
|
||||
if(variable.getType() instanceof SymbolTypeStruct) {
|
||||
variable.setKind(Variable.Kind.LOAD_STORE);
|
||||
SymbolType typeQualified = variable.getType().getQualified(true, variable.getType().isNomodify());
|
||||
variable.setType(typeQualified);
|
||||
// TODO: #121 remove
|
||||
variable.setVolatile(true);
|
||||
getLog().append("Setting struct to load/store in variable affected by address-of " + stmtStr);
|
||||
//getLog().append("Setting struct to load/store in variable affected by address-of: " + variable.toString() + " in " + stmtStr);
|
||||
} else {
|
||||
variable.setKind(Variable.Kind.LOAD_STORE);
|
||||
SymbolType typeQualified = variable.getType().getQualified(true, variable.getType().isNomodify());
|
||||
variable.setType(typeQualified);
|
||||
// TODO: #121 remove
|
||||
variable.setVolatile(true);
|
||||
getLog().append("Setting inferred volatile on symbol affected by address-of " + stmtStr);
|
||||
//getLog().append("Setting inferred volatile on symbol affected by address-of: " + variable.toString() + " in " + stmtStr);
|
||||
|
@ -4,6 +4,7 @@ import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.iterator.ProgramValue;
|
||||
import dk.camelot64.kickc.model.iterator.ProgramValueIterator;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeStruct;
|
||||
import dk.camelot64.kickc.model.values.SymbolVariableRef;
|
||||
import dk.camelot64.kickc.model.values.Value;
|
||||
@ -39,9 +40,13 @@ public class Pass1AsmUsesHandling extends Pass2SsaOptimization {
|
||||
private void updateAddressOfVariable(Variable variable, String stmtStr) {
|
||||
if(variable.getType() instanceof SymbolTypeStruct) {
|
||||
variable.setKind(Variable.Kind.LOAD_STORE);
|
||||
// TODO: #121 Add volatile??
|
||||
getLog().append("Setting struct to load/store in variable affected by address-of: " + variable.toString() + " in " + stmtStr);
|
||||
} else {
|
||||
variable.setKind(Variable.Kind.LOAD_STORE);
|
||||
SymbolType typeQualified = variable.getType().getQualified(true, variable.getType().isNomodify());
|
||||
variable.setType(typeQualified);
|
||||
// TODO: #121 Remove
|
||||
variable.setVolatile(true);
|
||||
getLog().append("Setting inferred volatile on symbol affected by address-of: " + variable.toString() + " in " + stmtStr);
|
||||
}
|
||||
|
@ -1,12 +1,16 @@
|
||||
package dk.camelot64.kickc.passes;
|
||||
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.iterator.ProgramValueIterator;
|
||||
import dk.camelot64.kickc.model.symbols.Scope;
|
||||
import dk.camelot64.kickc.model.symbols.StructDefinition;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeStruct;
|
||||
import dk.camelot64.kickc.model.values.ConstantStructValue;
|
||||
import dk.camelot64.kickc.model.values.StructUnwoundPlaceholder;
|
||||
import dk.camelot64.kickc.model.values.StructZero;
|
||||
import dk.camelot64.kickc.passes.utils.SizeOfConstants;
|
||||
|
||||
/**
|
||||
@ -27,6 +31,20 @@ public class Pass1StructTypeSizeFix extends Pass2SsaOptimization {
|
||||
modified |= fixStructSize(variable.getType());
|
||||
}
|
||||
|
||||
// Update all types hidden inside values
|
||||
ProgramValueIterator.execute(getProgram(), (programValue, currentStmt, stmtIt, currentBlock) -> {
|
||||
if(programValue.get() instanceof StructZero) {
|
||||
final SymbolTypeStruct typeStruct = ((StructZero) programValue.get()).getTypeStruct();
|
||||
fixStructSize(typeStruct);
|
||||
} else if(programValue.get() instanceof ConstantStructValue) {
|
||||
final SymbolTypeStruct typeStruct = ((ConstantStructValue) programValue.get()).getStructType();
|
||||
fixStructSize(typeStruct);
|
||||
} else if(programValue.get() instanceof StructUnwoundPlaceholder) {
|
||||
final SymbolTypeStruct typeStruct = ((StructUnwoundPlaceholder) programValue.get()).getTypeStruct();
|
||||
fixStructSize(typeStruct);
|
||||
}
|
||||
});
|
||||
|
||||
// Update all SIZEOF_XXX constants
|
||||
for(Scope subScope : getScope().getAllScopes(false)) {
|
||||
if(subScope instanceof StructDefinition) {
|
||||
|
@ -13,6 +13,7 @@ import dk.camelot64.kickc.model.statements.StatementConditionalJump;
|
||||
import dk.camelot64.kickc.model.StatementInfos;
|
||||
import dk.camelot64.kickc.model.symbols.Scope;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.values.RValue;
|
||||
import dk.camelot64.kickc.model.values.ScopeRef;
|
||||
import dk.camelot64.kickc.model.values.SymbolRef;
|
||||
@ -134,7 +135,8 @@ public class Pass2ConditionalJumpSimplification extends Pass2SsaOptimization {
|
||||
final ScopeRef conditionDefineScopeRef = conditionDefineBlock.getScope();
|
||||
final Scope conditionDefineScope = getScope().getScope(conditionDefineScopeRef);
|
||||
final Variable intermediateLoadStoreVar = conditionDefineScope.addVariableIntermediate();
|
||||
intermediateLoadStoreVar.setType(referencedLoadStoreVariable.getType());
|
||||
SymbolType typeQualified = referencedLoadStoreVariable.getType().getQualified(false, referencedLoadStoreVariable.getType().isNomodify());
|
||||
intermediateLoadStoreVar.setType(typeQualified);
|
||||
final StatementAssignment intermediateLoadStoreAssignment = new StatementAssignment(intermediateLoadStoreVar.getVariableRef(), referencedLoadStoreVariable.getRef(), true, simpleCondition.conditionAssignment.getSource(), Comment.NO_COMMENTS);
|
||||
conditionDefineBlock.addStatementAfter(intermediateLoadStoreAssignment, simpleCondition.conditionAssignment);
|
||||
// Replace all references to the load/store variable in the expressions with the new intermediate
|
||||
|
@ -9,6 +9,7 @@ import dk.camelot64.kickc.model.symbols.Scope;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypeInference;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.model.values.*;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
@ -40,6 +41,10 @@ public class Pass2DeInlineWordDerefIdx extends Pass2SsaOptimization {
|
||||
programValue.set(new PointerDereferenceSimple(tmpVar.getRef()));
|
||||
SymbolType pointerType = SymbolTypeInference.inferType(getScope(), new AssignmentRValue(tmpVarAssignment));
|
||||
tmpVar.setType(pointerType);
|
||||
if(((SymbolTypePointer)pointerType).getElementType().isNomodify())
|
||||
tmpVar.setToNoModify(true);
|
||||
if(((SymbolTypePointer)pointerType).getElementType().isVolatile())
|
||||
tmpVar.setToVolatile(true);
|
||||
optimized.set(true);
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,9 @@ public class Pass2NopCastInlining extends Pass2SsaOptimization {
|
||||
delete.add((SymbolRef) castValue.getValue());
|
||||
// Change the type of the assignment variable
|
||||
Variable castVar = getScope().getVariable((VariableRef) castValue.getValue());
|
||||
assignmentVar.setType(castVar.getType());
|
||||
// Copy type qualifiers from the variable being assigned
|
||||
SymbolType qualifiedType = castVar.getType().getQualified(assignmentVar.getType().isVolatile(), assignmentVar.getType().isNomodify());
|
||||
assignmentVar.setType(qualifiedType);
|
||||
// Remove the assignment
|
||||
stmtIt.remove();
|
||||
}
|
||||
|
@ -8,6 +8,10 @@ import dk.camelot64.kickc.asm.AsmProgram;
|
||||
import dk.camelot64.kickc.model.CompileError;
|
||||
import dk.camelot64.kickc.model.Program;
|
||||
import dk.camelot64.kickc.model.TargetPlatform;
|
||||
import dk.camelot64.kickc.model.symbols.Symbol;
|
||||
import dk.camelot64.kickc.model.symbols.Variable;
|
||||
import dk.camelot64.kickc.model.types.SymbolType;
|
||||
import dk.camelot64.kickc.model.types.SymbolTypePointer;
|
||||
import dk.camelot64.kickc.parser.CTargetPlatformParser;
|
||||
import kickass.KickAssembler65CE02;
|
||||
import kickass.nonasm.c64.CharToPetsciiConverter;
|
||||
@ -2236,7 +2240,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testStructPtr12() throws IOException, URISyntaxException {
|
||||
compileAndCompare("struct-ptr-12.c");
|
||||
compileAndCompare("struct-ptr-12.c", log());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -2916,7 +2920,7 @@ public class TestPrograms {
|
||||
|
||||
@Test
|
||||
public void testTypeIdPlusBytes() throws IOException, URISyntaxException {
|
||||
compileAndCompare("typeid-plus-bytes.c");
|
||||
compileAndCompare("typeid-plus-bytes.c", log());
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -5094,6 +5098,25 @@ public class TestPrograms {
|
||||
defines.put("__KICKC__", "1");
|
||||
defines.putAll(program.getTargetPlatform().getDefines());
|
||||
compiler.compile(files, defines);
|
||||
|
||||
// TODO: #121 Delete when const/volatile is confirmed to work on SymbolType
|
||||
for(Symbol symbol : program.getScope().getAllSymbols(true)) {
|
||||
if(symbol instanceof Variable) {
|
||||
Variable var = (Variable) symbol;
|
||||
SymbolType varType = var.getType();
|
||||
assertEquals(var.isVolatile(), varType.isVolatile(), "Variable volatile "+var.toString());
|
||||
assertEquals(var.isNoModify(), varType.isNomodify(), "Variable nomodify "+var.toString());
|
||||
boolean isToVolatile = false;
|
||||
boolean isToNomodify = false;
|
||||
if(varType instanceof SymbolTypePointer) {
|
||||
isToVolatile = ((SymbolTypePointer) varType).getElementType().isVolatile();
|
||||
isToNomodify = ((SymbolTypePointer) varType).getElementType().isNomodify();
|
||||
}
|
||||
assertEquals(var.isToVolatile(), isToVolatile, "Variable to volatile "+var.toString());
|
||||
assertEquals(var.isToNoModify(), isToNomodify, "Variable to nomodify "+var.toString());
|
||||
}
|
||||
}
|
||||
|
||||
compileAsm(fileName, program);
|
||||
boolean success = true;
|
||||
ReferenceHelper helper = new ReferenceHelperFolder(refPath);
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#include "lib.h"
|
||||
|
||||
const char* SCREEN = 0x0400;
|
||||
char* const SCREEN = 0x0400;
|
||||
|
||||
void main() {
|
||||
|
||||
|
@ -65,8 +65,6 @@ void main() {
|
||||
SEI();
|
||||
// Map memory to BANK 0 : 0x00XXXX - giving access to I/O
|
||||
memoryRemap(0x00,0,0);
|
||||
// Fast CPU, M65 IO
|
||||
POKE(0,65);
|
||||
// Disable Kernal & Basic
|
||||
*PROCPORT_DDR = PROCPORT_DDR_MEMORY_MASK;
|
||||
*PROCPORT = PROCPORT_RAM_IO;
|
||||
@ -124,10 +122,13 @@ void main() {
|
||||
VICIV->CHARPTR_HILO = 0;
|
||||
graphics_render = GRAPHICS1;
|
||||
}
|
||||
VICIV->BORDER_COLOR = BLUE;
|
||||
// Clear the graphics
|
||||
memset_dma(graphics_render, 0x00, 40*25*8);
|
||||
VICIV->BORDER_COLOR = PURPLE;
|
||||
// Render some dots
|
||||
render_dots();
|
||||
VICIV->BORDER_COLOR = BLACK;
|
||||
//Play SID
|
||||
(*musicPlay)();
|
||||
|
||||
@ -212,7 +213,7 @@ unsigned int SINX2[SINX2_SIZE+256] = kickasm {{
|
||||
|
||||
void graphics_mode(void) {
|
||||
// 16-bit text mode
|
||||
VICIV->CONTROLC = VICIV_CHR16;
|
||||
VICIV->CONTROLC = VICIV_CHR16|VICIV_VFAST;
|
||||
// H320, fast CPU
|
||||
VICIV->CONTROLB = VICIV_FAST;
|
||||
// 320x200 per char, 16 pixels wide per char
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_sint 0 (struct printf_format_number){ 2, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -3,6 +3,7 @@ Fixing struct type size struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type size struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type SIZE_OF struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
@ -6808,13 +6809,13 @@ ASSEMBLER BEFORE OPTIMIZATION
|
||||
// Find 2 entries that give 2020 when added together
|
||||
// And 3 entries that give 2020 when added together
|
||||
// Upstart
|
||||
// Atari XL/XE executable XEX file with a single segment
|
||||
// https://www.atarimax.com/jindroush.atari.org/afmtexe.html
|
||||
.plugin "dk.camelot64.kickass.xexplugin.AtariXex"
|
||||
.file [name="2020-01.xex", type="bin", segments="XexFile"]
|
||||
.segmentdef XexFile [segments="Program", modify="XexFormat", _RunAddr=main]
|
||||
.segmentdef Program [segments="Code, Data"]
|
||||
.segmentdef Code [start=$2000]
|
||||
// Atari XL/XE executable XEX file with a single segment
|
||||
// https://www.atarimax.com/jindroush.atari.org/afmtexe.html
|
||||
.plugin "dk.camelot64.kickass.xexplugin.AtariXex"
|
||||
.file [name="2020-01.xex", type="bin", segments="XexFile"]
|
||||
.segmentdef XexFile [segments="Program", modify="XexFormat", _RunAddr=main]
|
||||
.segmentdef Program [segments="Code, Data"]
|
||||
.segmentdef Code [start=$2000]
|
||||
.segmentdef Data [startAfter="Code"]
|
||||
// Global Constants & labels
|
||||
.const SIZEOF_WORD = 2
|
||||
@ -9782,13 +9783,13 @@ Score: 27696937
|
||||
// Find 2 entries that give 2020 when added together
|
||||
// And 3 entries that give 2020 when added together
|
||||
// Upstart
|
||||
// Atari XL/XE executable XEX file with a single segment
|
||||
// https://www.atarimax.com/jindroush.atari.org/afmtexe.html
|
||||
.plugin "dk.camelot64.kickass.xexplugin.AtariXex"
|
||||
.file [name="2020-01.xex", type="bin", segments="XexFile"]
|
||||
.segmentdef XexFile [segments="Program", modify="XexFormat", _RunAddr=main]
|
||||
.segmentdef Program [segments="Code, Data"]
|
||||
.segmentdef Code [start=$2000]
|
||||
// Atari XL/XE executable XEX file with a single segment
|
||||
// https://www.atarimax.com/jindroush.atari.org/afmtexe.html
|
||||
.plugin "dk.camelot64.kickass.xexplugin.AtariXex"
|
||||
.file [name="2020-01.xex", type="bin", segments="XexFile"]
|
||||
.segmentdef XexFile [segments="Program", modify="XexFormat", _RunAddr=main]
|
||||
.segmentdef Program [segments="Code, Data"]
|
||||
.segmentdef Code [start=$2000]
|
||||
.segmentdef Data [startAfter="Code"]
|
||||
// Global Constants & labels
|
||||
.const SIZEOF_WORD = 2
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of main::$3 = call strtouc main::pwd &main::pwd
|
||||
|
@ -3,6 +3,7 @@ Fixing struct type size struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type size struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type SIZE_OF struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
|
@ -4,6 +4,7 @@ Fixing struct type size struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type size struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type SIZE_OF struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
|
@ -3,6 +3,7 @@ Fixing struct type size struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type size struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type SIZE_OF struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_sint main::$1 (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_sint test_casting::signed_short_value (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uint main::count (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -39,7 +39,7 @@ __start::@return: scope:[__start] from __start::@2
|
||||
to:@return
|
||||
|
||||
SYMBOL TABLE SSA
|
||||
const to_nomodify byte* SCREEN = (byte*)$400
|
||||
const nomodify byte* SCREEN = (byte*)$400
|
||||
void __start()
|
||||
void main()
|
||||
byte main::i
|
||||
@ -172,7 +172,7 @@ Removing instruction __breturn:
|
||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||
|
||||
FINAL SYMBOL TABLE
|
||||
const to_nomodify byte* SCREEN = (byte*) 1024
|
||||
const nomodify byte* SCREEN = (byte*) 1024
|
||||
void main()
|
||||
byte main::i
|
||||
byte value
|
||||
|
@ -1,4 +1,4 @@
|
||||
const to_nomodify byte* SCREEN = (byte*) 1024
|
||||
const nomodify byte* SCREEN = (byte*) 1024
|
||||
void main()
|
||||
byte main::i
|
||||
byte value
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uint 8 (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct foo to 14
|
||||
Fixing struct type size struct foo to 14
|
||||
Fixing struct type size struct foo to 14
|
||||
Fixing struct type SIZE_OF struct foo to 14
|
||||
Fixing struct type SIZE_OF struct foo to 14
|
||||
Setting struct to load/store in variable affected by address-of main::barp = &bar
|
||||
|
@ -3,6 +3,7 @@ Fixing struct type size struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type size struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct ATARI_GTIA_READ to 32
|
||||
Fixing struct type SIZE_OF struct ATARI_POKEY_READ to 16
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
|
@ -1,4 +1,17 @@
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type size struct $0 to 41
|
||||
Fixing struct type SIZE_OF struct $0 to 41
|
||||
Fixing struct type SIZE_OF struct $0 to 41
|
||||
Setting inferred volatile on symbol affected by address-of main::$0 = call screensize &XSize &YSize
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of kbhit::ch
|
||||
|
@ -1,6 +1,7 @@
|
||||
Loading link script "cx16-bankload.ld"
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of kbhit::ch
|
||||
|
@ -1,6 +1,7 @@
|
||||
Resolved forward reference irq_vsync to __interrupt(rom_sys_cx16) void irq_vsync()
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of kbhit::ch
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of kbhit::ch
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of kbhit::ch
|
||||
@ -9775,21 +9776,21 @@ word~ bitmap_init::$25 2002.0
|
||||
word~ bitmap_init::$26 2002.0
|
||||
byte~ bitmap_init::$27 202.0
|
||||
word~ bitmap_init::$28 2002.0
|
||||
word*~ bitmap_init::$29 2002.0
|
||||
to_nomodify word*~ bitmap_init::$29 2002.0
|
||||
byte~ bitmap_init::$3 202.0
|
||||
byte*~ bitmap_init::$30 2002.0
|
||||
byte*~ bitmap_init::$31 2002.0
|
||||
word*~ bitmap_init::$32 2002.0
|
||||
byte*~ bitmap_init::$33 2002.0
|
||||
byte*~ bitmap_init::$34 2002.0
|
||||
word*~ bitmap_init::$35 2002.0
|
||||
byte*~ bitmap_init::$36 2002.0
|
||||
byte*~ bitmap_init::$37 2002.0
|
||||
word*~ bitmap_init::$38 2002.0
|
||||
byte*~ bitmap_init::$39 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$30 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$31 2002.0
|
||||
to_nomodify word*~ bitmap_init::$32 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$33 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$34 2002.0
|
||||
to_nomodify word*~ bitmap_init::$35 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$36 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$37 2002.0
|
||||
to_nomodify word*~ bitmap_init::$38 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$39 2002.0
|
||||
byte~ bitmap_init::$4 202.0
|
||||
byte*~ bitmap_init::$40 2002.0
|
||||
dword*~ bitmap_init::$41 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$40 2002.0
|
||||
to_nomodify dword*~ bitmap_init::$41 2002.0
|
||||
word~ bitmap_init::$7 667.3333333333334
|
||||
dword bitmap_init::address
|
||||
byte bitmap_init::bitmask
|
||||
@ -10013,10 +10014,10 @@ word bitmap_line_ydxi::yd#1 6667.333333333333
|
||||
word bitmap_line_ydxi::yd#5 1.3334666933333334E7
|
||||
void bitmap_plot(word bitmap_plot::x , word bitmap_plot::y , byte bitmap_plot::c)
|
||||
word~ bitmap_plot::$10 2.000000002E9
|
||||
word*~ bitmap_plot::$12 1.000000001E9
|
||||
dword*~ bitmap_plot::$13 2.000000002E9
|
||||
byte*~ bitmap_plot::$14 2.000000002E9
|
||||
byte*~ bitmap_plot::$15 2.000000002E9
|
||||
to_nomodify word*~ bitmap_plot::$12 1.000000001E9
|
||||
to_nomodify dword*~ bitmap_plot::$13 2.000000002E9
|
||||
to_nomodify byte*~ bitmap_plot::$14 2.000000002E9
|
||||
to_nomodify byte*~ bitmap_plot::$15 2.000000002E9
|
||||
byte~ bitmap_plot::$3 2.000000002E9
|
||||
byte~ bitmap_plot::$6 2.000000002E9
|
||||
byte~ bitmap_plot::$7 2.000000002E9
|
||||
@ -19035,21 +19036,21 @@ word~ bitmap_init::$25 zp[2]:82 2002.0
|
||||
word~ bitmap_init::$26 zp[2]:114 2002.0
|
||||
byte~ bitmap_init::$27 reg byte a 202.0
|
||||
word~ bitmap_init::$28 zp[2]:104 2002.0
|
||||
word*~ bitmap_init::$29 zp[2]:67 2002.0
|
||||
to_nomodify word*~ bitmap_init::$29 zp[2]:67 2002.0
|
||||
byte~ bitmap_init::$3 reg byte a 202.0
|
||||
byte*~ bitmap_init::$30 zp[2]:69 2002.0
|
||||
byte*~ bitmap_init::$31 zp[2]:72 2002.0
|
||||
word*~ bitmap_init::$32 zp[2]:106 2002.0
|
||||
byte*~ bitmap_init::$33 zp[2]:108 2002.0
|
||||
byte*~ bitmap_init::$34 zp[2]:110 2002.0
|
||||
word*~ bitmap_init::$35 zp[2]:82 2002.0
|
||||
byte*~ bitmap_init::$36 zp[2]:84 2002.0
|
||||
byte*~ bitmap_init::$37 zp[2]:86 2002.0
|
||||
word*~ bitmap_init::$38 zp[2]:114 2002.0
|
||||
byte*~ bitmap_init::$39 zp[2]:90 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$30 zp[2]:69 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$31 zp[2]:72 2002.0
|
||||
to_nomodify word*~ bitmap_init::$32 zp[2]:106 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$33 zp[2]:108 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$34 zp[2]:110 2002.0
|
||||
to_nomodify word*~ bitmap_init::$35 zp[2]:82 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$36 zp[2]:84 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$37 zp[2]:86 2002.0
|
||||
to_nomodify word*~ bitmap_init::$38 zp[2]:114 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$39 zp[2]:90 2002.0
|
||||
byte~ bitmap_init::$4 reg byte a 202.0
|
||||
byte*~ bitmap_init::$40 zp[2]:92 2002.0
|
||||
dword*~ bitmap_init::$41 zp[2]:104 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$40 zp[2]:92 2002.0
|
||||
to_nomodify dword*~ bitmap_init::$41 zp[2]:104 2002.0
|
||||
word~ bitmap_init::$7 zp[2]:65 667.3333333333334
|
||||
dword bitmap_init::address
|
||||
const dword bitmap_init::address#0 address = 0
|
||||
@ -19275,10 +19276,10 @@ word bitmap_line_ydxi::yd#1 yd zp[2]:69 6667.333333333333
|
||||
word bitmap_line_ydxi::yd#5 yd zp[2]:69 1.3334666933333334E7
|
||||
void bitmap_plot(word bitmap_plot::x , word bitmap_plot::y , byte bitmap_plot::c)
|
||||
word~ bitmap_plot::$10 zp[2]:98 2.000000002E9
|
||||
word*~ bitmap_plot::$12 zp[2]:92 1.000000001E9
|
||||
dword*~ bitmap_plot::$13 zp[2]:98 2.000000002E9
|
||||
byte*~ bitmap_plot::$14 zp[2]:104 2.000000002E9
|
||||
byte*~ bitmap_plot::$15 zp[2]:110 2.000000002E9
|
||||
to_nomodify word*~ bitmap_plot::$12 zp[2]:92 1.000000001E9
|
||||
to_nomodify dword*~ bitmap_plot::$13 zp[2]:98 2.000000002E9
|
||||
to_nomodify byte*~ bitmap_plot::$14 zp[2]:104 2.000000002E9
|
||||
to_nomodify byte*~ bitmap_plot::$15 zp[2]:110 2.000000002E9
|
||||
byte~ bitmap_plot::$3 reg byte x 2.000000002E9
|
||||
byte~ bitmap_plot::$6 reg byte a 2.000000002E9
|
||||
byte~ bitmap_plot::$7 reg byte a 2.000000002E9
|
||||
|
@ -86,21 +86,21 @@ word~ bitmap_init::$25 zp[2]:82 2002.0
|
||||
word~ bitmap_init::$26 zp[2]:114 2002.0
|
||||
byte~ bitmap_init::$27 reg byte a 202.0
|
||||
word~ bitmap_init::$28 zp[2]:104 2002.0
|
||||
word*~ bitmap_init::$29 zp[2]:67 2002.0
|
||||
to_nomodify word*~ bitmap_init::$29 zp[2]:67 2002.0
|
||||
byte~ bitmap_init::$3 reg byte a 202.0
|
||||
byte*~ bitmap_init::$30 zp[2]:69 2002.0
|
||||
byte*~ bitmap_init::$31 zp[2]:72 2002.0
|
||||
word*~ bitmap_init::$32 zp[2]:106 2002.0
|
||||
byte*~ bitmap_init::$33 zp[2]:108 2002.0
|
||||
byte*~ bitmap_init::$34 zp[2]:110 2002.0
|
||||
word*~ bitmap_init::$35 zp[2]:82 2002.0
|
||||
byte*~ bitmap_init::$36 zp[2]:84 2002.0
|
||||
byte*~ bitmap_init::$37 zp[2]:86 2002.0
|
||||
word*~ bitmap_init::$38 zp[2]:114 2002.0
|
||||
byte*~ bitmap_init::$39 zp[2]:90 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$30 zp[2]:69 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$31 zp[2]:72 2002.0
|
||||
to_nomodify word*~ bitmap_init::$32 zp[2]:106 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$33 zp[2]:108 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$34 zp[2]:110 2002.0
|
||||
to_nomodify word*~ bitmap_init::$35 zp[2]:82 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$36 zp[2]:84 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$37 zp[2]:86 2002.0
|
||||
to_nomodify word*~ bitmap_init::$38 zp[2]:114 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$39 zp[2]:90 2002.0
|
||||
byte~ bitmap_init::$4 reg byte a 202.0
|
||||
byte*~ bitmap_init::$40 zp[2]:92 2002.0
|
||||
dword*~ bitmap_init::$41 zp[2]:104 2002.0
|
||||
to_nomodify byte*~ bitmap_init::$40 zp[2]:92 2002.0
|
||||
to_nomodify dword*~ bitmap_init::$41 zp[2]:104 2002.0
|
||||
word~ bitmap_init::$7 zp[2]:65 667.3333333333334
|
||||
dword bitmap_init::address
|
||||
const dword bitmap_init::address#0 address = 0
|
||||
@ -326,10 +326,10 @@ word bitmap_line_ydxi::yd#1 yd zp[2]:69 6667.333333333333
|
||||
word bitmap_line_ydxi::yd#5 yd zp[2]:69 1.3334666933333334E7
|
||||
void bitmap_plot(word bitmap_plot::x , word bitmap_plot::y , byte bitmap_plot::c)
|
||||
word~ bitmap_plot::$10 zp[2]:98 2.000000002E9
|
||||
word*~ bitmap_plot::$12 zp[2]:92 1.000000001E9
|
||||
dword*~ bitmap_plot::$13 zp[2]:98 2.000000002E9
|
||||
byte*~ bitmap_plot::$14 zp[2]:104 2.000000002E9
|
||||
byte*~ bitmap_plot::$15 zp[2]:110 2.000000002E9
|
||||
to_nomodify word*~ bitmap_plot::$12 zp[2]:92 1.000000001E9
|
||||
to_nomodify dword*~ bitmap_plot::$13 zp[2]:98 2.000000002E9
|
||||
to_nomodify byte*~ bitmap_plot::$14 zp[2]:104 2.000000002E9
|
||||
to_nomodify byte*~ bitmap_plot::$15 zp[2]:110 2.000000002E9
|
||||
byte~ bitmap_plot::$3 reg byte x 2.000000002E9
|
||||
byte~ bitmap_plot::$6 reg byte a 2.000000002E9
|
||||
byte~ bitmap_plot::$7 reg byte a 2.000000002E9
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of kbhit::ch
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of: queen::column in asm { ldacolumn pha ldar pha }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uint 8 (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Inlined call vicSelectGfxBank::$0 = call toDd00 vicSelectGfxBank::gfx
|
||||
|
@ -1,6 +1,7 @@
|
||||
Fixing struct type size struct F018_DMAGIC to 17
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct F018_DMAGIC to 17
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct F018_DMAGIC to 17
|
||||
|
@ -4,6 +4,7 @@ Resolved forward reference x_scroll to x_scroll
|
||||
Resolved forward reference y_scroll to y_scroll
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Inlined call call disableVideoOutput
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Inlined call vicSelectGfxBank::$0 = call toDd00 vicSelectGfxBank::gfx
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list main::$1 = call printf_string "cml" (struct printf_format_string){ $a, 0 }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Setting inferred volatile on symbol affected by address-of call printf_uint (word)&main::c { 0, 0, 0, 0, 0, HEXADECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_string "x" (struct printf_format_string){ 3, 0 }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uchar main::c (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Inlined call vicSelectGfxBank::$0 = call toDd00 vicSelectGfxBank::gfx
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_sint 1 (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list main::$1 = call printf_schar -$4d (struct printf_format_number){ 6, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_string main::$3 (struct printf_format_string){ 0, 0 }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uint main::rnd (struct printf_format_number){ 5, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uint main::rnd (struct printf_format_number){ 5, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uint (word)main::pStar (struct printf_format_number){ 0, 0, 0, 0, 0, HEXADECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uchar (stars.star_x)[main::i] (struct printf_format_number){ 0, 0, 0, 0, 0, DECIMAL }
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type size struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Fixing struct type SIZE_OF struct printf_buffer_number to 12
|
||||
Added struct type cast to parameter value list call printf_uchar assert_char::expect (struct printf_format_number){ 0, 0, 0, 0, 0, HEXADECIMAL }
|
||||
|
@ -1,6 +1,8 @@
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type SIZE_OF struct Person to 65
|
||||
Fixing struct type SIZE_OF struct Person to 65
|
||||
Inlined call call __init
|
||||
|
@ -1,6 +1,8 @@
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type size struct Person to 65
|
||||
Fixing struct type SIZE_OF struct Person to 65
|
||||
Fixing struct type SIZE_OF struct Person to 65
|
||||
Inlined call call __init
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
|
||||
|
@ -1,5 +1,6 @@
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 4
|
||||
Fixing struct type size struct Point to 4
|
||||
Fixing struct type SIZE_OF struct Point to 4
|
||||
Fixing struct type SIZE_OF struct Point to 4
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 4
|
||||
Fixing struct type size struct Point to 4
|
||||
Fixing struct type SIZE_OF struct Point to 4
|
||||
Fixing struct type SIZE_OF struct Point to 4
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type size struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
Fixing struct type SIZE_OF struct Point to 3
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
Fixing struct type size struct Point to 7
|
||||
Fixing struct type size struct Point to 7
|
||||
Fixing struct type SIZE_OF struct Point to 7
|
||||
Fixing struct type SIZE_OF struct Point to 7
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
Fixing struct type size struct Person to 5
|
||||
Fixing struct type size struct Person to 5
|
||||
Fixing struct type size struct Person to 5
|
||||
Fixing struct type size struct Person to 5
|
||||
Fixing struct type size struct Person to 5
|
||||
Fixing struct type SIZE_OF struct Person to 5
|
||||
Fixing struct type SIZE_OF struct Person to 5
|
||||
Inlined call call __init
|
||||
|
@ -1,6 +1,8 @@
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type SIZE_OF struct Person to 17
|
||||
Fixing struct type SIZE_OF struct Person to 17
|
||||
Setting struct to load/store in variable affected by address-of main::$0 = call print_person &main::jesper
|
||||
|
@ -1,5 +1,7 @@
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type SIZE_OF struct Person to 17
|
||||
Fixing struct type SIZE_OF struct Person to 17
|
||||
Fixing constant pointer addition persons+1
|
||||
|
@ -1,5 +1,7 @@
|
||||
Fixing struct type size struct Person to 16
|
||||
Fixing struct type size struct Person to 16
|
||||
Fixing struct type size struct Person to 16
|
||||
Fixing struct type size struct Person to 16
|
||||
Fixing struct type SIZE_OF struct Person to 16
|
||||
Fixing struct type SIZE_OF struct Person to 16
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type size struct Person to 17
|
||||
Fixing struct type SIZE_OF struct Person to 17
|
||||
Fixing struct type SIZE_OF struct Person to 17
|
||||
Inlined call call __init
|
||||
|
@ -2,6 +2,8 @@ Fixing struct type size struct Tile to 25
|
||||
Fixing struct type size struct Tile to 25
|
||||
Fixing struct type size struct Tile to 25
|
||||
Fixing struct type size struct Tile to 25
|
||||
Fixing struct type size struct Tile to 25
|
||||
Fixing struct type size struct Tile to 25
|
||||
Fixing struct type SIZE_OF struct Tile to 25
|
||||
Fixing struct type SIZE_OF struct Tile to 25
|
||||
Setting struct to load/store in variable affected by address-of S1
|
||||
|
Loading…
x
Reference in New Issue
Block a user