diff --git a/src/main/fragment/(_deref_pptc1)_derefidx_vbuyy=vbuaa.asm b/src/main/fragment/(_deref_pptc1)_derefidx_vbuyy=vbuaa.asm new file mode 100644 index 000000000..9acec5275 --- /dev/null +++ b/src/main/fragment/(_deref_pptc1)_derefidx_vbuyy=vbuaa.asm @@ -0,0 +1,5 @@ +ldx {c1} +stx $fe +ldx {c1}+1 +stx $ff +sta ($fe),y \ No newline at end of file diff --git a/src/main/fragment/_deref__deref_pptc1=vbuaa.asm b/src/main/fragment/_deref_(_deref_pptc1)=vbuaa.asm similarity index 100% rename from src/main/fragment/_deref__deref_pptc1=vbuaa.asm rename to src/main/fragment/_deref_(_deref_pptc1)=vbuaa.asm diff --git a/src/main/fragment/_deref__deref_pptz1=pbuc1_derefidx_vbuxx.asm b/src/main/fragment/_deref_(_deref_pptz1)=pbuc1_derefidx_vbuxx.asm similarity index 100% rename from src/main/fragment/_deref__deref_pptz1=pbuc1_derefidx_vbuxx.asm rename to src/main/fragment/_deref_(_deref_pptz1)=pbuc1_derefidx_vbuxx.asm diff --git a/src/main/fragment/_deref__deref_pptz1=vbuaa.asm b/src/main/fragment/_deref_(_deref_pptz1)=vbuaa.asm similarity index 100% rename from src/main/fragment/_deref__deref_pptz1=vbuaa.asm rename to src/main/fragment/_deref_(_deref_pptz1)=vbuaa.asm diff --git a/src/main/fragment/_deref_pptc1_derefidx_vbuyy=vbuaa.asm b/src/main/fragment/_deref_(pptc1_derefidx_vbuyy)=vbuaa.asm similarity index 100% rename from src/main/fragment/_deref_pptc1_derefidx_vbuyy=vbuaa.asm rename to src/main/fragment/_deref_(pptc1_derefidx_vbuyy)=vbuaa.asm diff --git a/src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuaa.asm b/src/main/fragment/_deref_(pptz1_derefidx_vbuc1)=vbuaa.asm similarity index 100% rename from src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuaa.asm rename to src/main/fragment/_deref_(pptz1_derefidx_vbuc1)=vbuaa.asm diff --git a/src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuxx.asm b/src/main/fragment/_deref_(pptz1_derefidx_vbuc1)=vbuxx.asm similarity index 100% rename from src/main/fragment/_deref_pptz1_derefidx_vbuc1=vbuxx.asm rename to src/main/fragment/_deref_(pptz1_derefidx_vbuc1)=vbuxx.asm diff --git a/src/main/fragment/pbuc1_derefidx__deref_pbuz1=_inc_pbuc1_derefidx__deref_pbuz1.asm b/src/main/fragment/pbuc1_derefidx_(_deref_pbuz1)=_inc_pbuc1_derefidx_(_deref_pbuz1).asm similarity index 100% rename from src/main/fragment/pbuc1_derefidx__deref_pbuz1=_inc_pbuc1_derefidx__deref_pbuz1.asm rename to src/main/fragment/pbuc1_derefidx_(_deref_pbuz1)=_inc_pbuc1_derefidx_(_deref_pbuz1).asm diff --git a/src/main/fragment/pbuc1_derefidx_pbuc2_derefidx_vbuxx=pbuc3_derefidx_vbuxx.asm b/src/main/fragment/pbuc1_derefidx_(pbuc2_derefidx_vbuxx)=pbuc3_derefidx_vbuxx.asm similarity index 100% rename from src/main/fragment/pbuc1_derefidx_pbuc2_derefidx_vbuxx=pbuc3_derefidx_vbuxx.asm rename to src/main/fragment/pbuc1_derefidx_(pbuc2_derefidx_vbuxx)=pbuc3_derefidx_vbuxx.asm diff --git a/src/main/fragment/pbuc1_derefidx_(pbuc2_derefidx_vbuyy)=pbuc3_derefidx_vbuyy.asm b/src/main/fragment/pbuc1_derefidx_(pbuc2_derefidx_vbuyy)=pbuc3_derefidx_vbuyy.asm new file mode 100644 index 000000000..64858cb43 --- /dev/null +++ b/src/main/fragment/pbuc1_derefidx_(pbuc2_derefidx_vbuyy)=pbuc3_derefidx_vbuyy.asm @@ -0,0 +1,3 @@ +lda {c3},x +ldx {c2},y +sta {c1},x \ No newline at end of file diff --git a/src/main/fragment/pbuc1_derefidx_pbuz1_derefidx_vbuyy=vbuaa.asm b/src/main/fragment/pbuc1_derefidx_(pbuz1_derefidx_vbuyy)=vbuaa.asm similarity index 100% rename from src/main/fragment/pbuc1_derefidx_pbuz1_derefidx_vbuyy=vbuaa.asm rename to src/main/fragment/pbuc1_derefidx_(pbuz1_derefidx_vbuyy)=vbuaa.asm diff --git a/src/main/fragment/pbuc1_derefidx_pbuc2_derefidx_vbuyy=pbuc3_derefidx_vbuyy.asm b/src/main/fragment/pbuc1_derefidx_pbuc2_derefidx_vbuyy=pbuc3_derefidx_vbuyy.asm deleted file mode 100644 index 78a125877..000000000 --- a/src/main/fragment/pbuc1_derefidx_pbuc2_derefidx_vbuyy=pbuc3_derefidx_vbuyy.asm +++ /dev/null @@ -1,3 +0,0 @@ -lda {c3},x -ldy {c2},x -sta {c1},y \ No newline at end of file diff --git a/src/main/fragment/pbuz1_derefidx__deref_pbuz2=_inc_pbuz1_derefidx__deref_pbuz2.asm b/src/main/fragment/pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2).asm similarity index 100% rename from src/main/fragment/pbuz1_derefidx__deref_pbuz2=_inc_pbuz1_derefidx__deref_pbuz2.asm rename to src/main/fragment/pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2).asm diff --git a/src/main/fragment/pwuc1_derefidx_vbuyy=_deref_pptc2_derefidx_vbuyy.asm b/src/main/fragment/pwuc1_derefidx_vbuyy=(_deref_pptc2)_derefidx_vbuyy.asm similarity index 100% rename from src/main/fragment/pwuc1_derefidx_vbuyy=_deref_pptc2_derefidx_vbuyy.asm rename to src/main/fragment/pwuc1_derefidx_vbuyy=(_deref_pptc2)_derefidx_vbuyy.asm diff --git a/src/main/fragment/vbuaa=_deref__deref_pptc1.asm b/src/main/fragment/vbuaa=_deref_(_deref_pptc1).asm similarity index 100% rename from src/main/fragment/vbuaa=_deref__deref_pptc1.asm rename to src/main/fragment/vbuaa=_deref_(_deref_pptc1).asm diff --git a/src/main/fragment/vbuaa=pbuz1_derefidx_pbuz2_derefidx_vbuyy_plus_pbuz3_derefidx_pbuz4_derefidx_vbuyy.asm b/src/main/fragment/vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuyy)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuyy).asm similarity index 100% rename from src/main/fragment/vbuaa=pbuz1_derefidx_pbuz2_derefidx_vbuyy_plus_pbuz3_derefidx_pbuz4_derefidx_vbuyy.asm rename to src/main/fragment/vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuyy)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuyy).asm diff --git a/src/main/fragment/vbuaa=pbuz1_derefidx_vbuyy_plus_pbuz2_derefidx_pbuz3_derefidx_vbuyy.asm b/src/main/fragment/vbuaa=pbuz1_derefidx_vbuyy_plus_pbuz2_derefidx_(pbuz3_derefidx_vbuyy).asm similarity index 100% rename from src/main/fragment/vbuaa=pbuz1_derefidx_vbuyy_plus_pbuz2_derefidx_pbuz3_derefidx_vbuyy.asm rename to src/main/fragment/vbuaa=pbuz1_derefidx_vbuyy_plus_pbuz2_derefidx_(pbuz3_derefidx_vbuyy).asm diff --git a/src/main/fragment/vbuaa_ge_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1.asm b/src/main/fragment/vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1.asm similarity index 100% rename from src/main/fragment/vbuaa_ge_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1.asm rename to src/main/fragment/vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1.asm diff --git a/src/main/fragment/vbuaa_ge_pbuc1_derefidx_pbuc2_derefidx_vbuyy_then_la1.asm b/src/main/fragment/vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1.asm similarity index 100% rename from src/main/fragment/vbuaa_ge_pbuc1_derefidx_pbuc2_derefidx_vbuyy_then_la1.asm rename to src/main/fragment/vbuaa_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1.asm diff --git a/src/main/fragment/vbuaa_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1.asm b/src/main/fragment/vbuaa_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1.asm similarity index 100% rename from src/main/fragment/vbuaa_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1.asm rename to src/main/fragment/vbuaa_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1.asm diff --git a/src/main/fragment/vbuaa_lt_pbuc1_derefidx_pbuc2_derefidx_vbuyy_then_la1.asm b/src/main/fragment/vbuaa_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1.asm similarity index 100% rename from src/main/fragment/vbuaa_lt_pbuc1_derefidx_pbuc2_derefidx_vbuyy_then_la1.asm rename to src/main/fragment/vbuaa_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuyy)_then_la1.asm diff --git a/src/main/java/dk/camelot64/kickc/KickC.java b/src/main/java/dk/camelot64/kickc/KickC.java index 97cadeaf3..2a1524000 100644 --- a/src/main/java/dk/camelot64/kickc/KickC.java +++ b/src/main/java/dk/camelot64/kickc/KickC.java @@ -45,7 +45,7 @@ public class KickC implements Callable { @CommandLine.Option(names = {"-F", "-fragmentdir"}, description = "Path to the ASM fragment folder, where the compiler looks for ASM fragments.") private Path fragmentDir = null; - @CommandLine.Option(names = {"-o"}, description = "Name of the output assembler file. By default it is the same as the input file with extension .asm") + @CommandLine.Option(names = {"-o", "-output"}, description = "Name of the output assembler file. By default it is the same as the input file with extension .asm") private String asmFileName = null; @CommandLine.Option(names = {"-odir"}, description = "Path to the output folder, where the compiler places all generated files. By default the folder of the output file is used.") diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java index 86508f363..91838d9be 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpecFactory.java @@ -309,10 +309,32 @@ public class AsmFragmentInstanceSpecFactory { ptrType = new SymbolTypePointer(castType); } if(value instanceof PointerDereferenceSimple) { - return "_deref_" + bind(deref.getPointer(), ptrType); + String bindPointer = bind(deref.getPointer(), ptrType); + if(bindPointer.contains("deref")) { + // Special handling of nested derefs - add parenthesis! + return "_deref_" + "(" + bindPointer + ")"; + } else { + return "_deref_" + bindPointer; + } } else if(value instanceof PointerDereferenceIndexed) { PointerDereferenceIndexed derefIdx = (PointerDereferenceIndexed) value; - return bind(derefIdx.getPointer(), ptrType) + "_derefidx_" + bind(derefIdx.getIndex()); + StringBuilder bindValue = new StringBuilder(); + String bindPointer = bind(derefIdx.getPointer(), ptrType); + if(bindPointer.contains("deref")) { + // Special handling of nested derefs - add parenthesis! + bindValue.append("(").append(bindPointer).append(")"); + } else { + bindValue.append(bindPointer); + } + bindValue.append("_derefidx_"); + String bindIndex = bind(derefIdx.getIndex()); + if(bindIndex.contains("deref")) { + // Special handling of nested derefs - add parenthesis! + bindValue.append("(").append(bindIndex).append(")"); + } else { + bindValue.append(bindIndex); + } + return bindValue.toString(); } } else if(value instanceof VariableRef) { Variable variable = program.getSymbolInfos().getVariable((VariableRef) value); diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java index aac692569..22b5d0719 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplateSynthesisRule.java @@ -640,6 +640,9 @@ class AsmFragmentTemplateSynthesisRule { synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*c2.*)pb(.)c2_derefidx_vbuyy(.*)", rvalAa, "lda {c2},y", "$1=$2vb$3aa$4", null, null)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)=(.*)pb(.)c2_derefidx_vbuyy(.*c2.*)", rvalAa, "lda {c2},y", "$1=$2vb$3aa$4", null, null)); + // Remove any parenthesis ending up around values + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)\\(([vp][bwd][us][zcaxy][123456axy])\\)(.*)", null, null, "$1$2$3", null, null)); + synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(.*)", rvalYy+"|"+twoZ1, "ldy {z1}", "$1_derefidx_vbuyy_$2", null, mapZ1)); synths.add(new AsmFragmentTemplateSynthesisRule("(.*)_derefidx_vbuz1_(lt|gt|le|ge|eq|neq)_(.*)", rvalXx+"|"+twoZ1, "ldx {z1}", "$1_derefidx_vbuxx_$2_$3", null, mapZ1)); synths.add(new AsmFragmentTemplateSynthesisRule("pb(.)c1_derefidx_vbuyy_(lt|gt|le|ge|eq|neq)_(.*)", rvalAa+"|"+twoC1, "lda {c1},y", "vb$1aa_$2_$3", null, mapC1)); diff --git a/src/test/ref/c64dtv-gfxexplorer.log b/src/test/ref/c64dtv-gfxexplorer.log index cd1456f91..7892a5dc6 100644 --- a/src/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/ref/c64dtv-gfxexplorer.log @@ -17669,7 +17669,7 @@ form_render_values: { jmp b3 // form_render_values::@3 b3: - // [332] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#5)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_pbuc2_derefidx_vbuz3 + // [332] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#5)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3) ldx.z idx ldy form_fields_val,x lda print_hextab,y @@ -18146,7 +18146,7 @@ form_control: { jmp b16 // form_control::@16 b16: - // [394] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_pbuc2_derefidx_vbuz3 + // [394] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3) // Render field value ldx.z form_field_idx ldy form_fields_val,x @@ -24791,7 +24791,7 @@ form_render_values: { jmp b3 // form_render_values::@3 b3: - // [332] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#5)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_pbuc2_derefidx_vbuxx + // [332] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#5)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuxx) ldy form_fields_val,x lda print_hextab,y ldy.z form_field_ptr.x @@ -25221,7 +25221,7 @@ form_control: { jmp b16 // form_control::@16 b16: - // [394] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_pbuc2_derefidx_vbuz3 + // [394] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3) // Render field value ldx.z form_field_idx ldy form_fields_val,x @@ -32537,7 +32537,7 @@ form_render_values: { jsr form_field_ptr // form_render_values::@3 // *field = print_hextab[form_fields_val[idx]] - // [332] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#5)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_pbuc2_derefidx_vbuxx + // [332] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#5)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuxx) ldy form_fields_val,x lda print_hextab,y ldy.z form_field_ptr.x @@ -32921,7 +32921,7 @@ form_control: { // form_control::@16 b16: // *field = print_hextab[form_fields_val[form_field_idx]] - // [394] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_pbuc2_derefidx_vbuz3 + // [394] *((byte*)(word) form_field_ptr::line#0 + (byte) form_field_ptr::x#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_(pbuc2_derefidx_vbuz3) // Render field value ldx.z form_field_idx ldy form_fields_val,x diff --git a/src/test/ref/complex/clearscreen/clearscreen.log b/src/test/ref/complex/clearscreen/clearscreen.log index a7211b77a..14a94eb32 100644 --- a/src/test/ref/complex/clearscreen/clearscreen.log +++ b/src/test/ref/complex/clearscreen/clearscreen.log @@ -7163,7 +7163,7 @@ processChars: { jmp b11 // processChars::@11 b11: - // [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + // [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_(pptz1_derefidx_vbuc1)=vbuc2 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -7180,7 +7180,7 @@ processChars: { lda SPRITES_ENABLE ora.z bitmask sta SPRITES_ENABLE - // [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3 // Set the sprite color ldy #OFFSET_STRUCT_PROCESSINGSPRITE_COL lda (processing),y @@ -7190,7 +7190,7 @@ processChars: { tay pla sta SPRITES_COLS,y - // [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -9997,7 +9997,7 @@ processChars: { jmp b11 // processChars::@11 b11: - // [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + // [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_(pptz1_derefidx_vbuc1)=vbuc2 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -10014,7 +10014,7 @@ processChars: { lda SPRITES_ENABLE ora.z bitmask sta SPRITES_ENABLE - // [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3 // Set the sprite color ldy #OFFSET_STRUCT_PROCESSINGSPRITE_COL lda (processing),y @@ -10024,7 +10024,7 @@ processChars: { tay pla sta SPRITES_COLS,y - // [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y @@ -12862,7 +12862,7 @@ processChars: { bne b3 // processChars::@11 // *(processing->screenPtr) = ' ' - // [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_pptz1_derefidx_vbuc1=vbuc2 + // [265] *(*((byte**)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR)) ← (byte) ' ' -- _deref_(pptz1_derefidx_vbuc1)=vbuc2 // Clear the char on the screen ldx #' ' ldy #OFFSET_STRUCT_PROCESSINGSPRITE_SCREENPTR @@ -12881,7 +12881,7 @@ processChars: { ora.z bitmask sta SPRITES_ENABLE // SPRITES_COLS[processing->id] = processing->col - // [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // [267] *((const byte*) SPRITES_COLS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_COL) -- pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3 // Set the sprite color ldy #OFFSET_STRUCT_PROCESSINGSPRITE_COL lda (processing),y @@ -12892,7 +12892,7 @@ processChars: { pla sta SPRITES_COLS,y // *(SCREEN+SPRITE_PTRS+processing->id) = processing->ptr - // [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_pbuz1_derefidx_vbuc2=pbuz1_derefidx_vbuc3 + // [268] *((const byte*) SCREEN#0+(const word) SPRITE_PTRS#0 + *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_ID)) ← *((byte*)(struct ProcessingSprite*) processChars::processing#0 + (const byte) OFFSET_STRUCT_PROCESSINGSPRITE_PTR) -- pbuc1_derefidx_(pbuz1_derefidx_vbuc2)=pbuz1_derefidx_vbuc3 // Set sprite pointer ldy #OFFSET_STRUCT_PROCESSINGSPRITE_PTR lda (processing),y diff --git a/src/test/ref/double-indexing-arrays.log b/src/test/ref/double-indexing-arrays.log index 3608b3768..335658fee 100644 --- a/src/test/ref/double-indexing-arrays.log +++ b/src/test/ref/double-indexing-arrays.log @@ -376,35 +376,35 @@ main: { // [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA,y sta SCREEN,y - // [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA,y lda COLORMAP1,x sta COLS,y // [8] *((const byte*) SCREEN#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$c8,y sta SCREEN+$c8,y - // [9] *((const byte*) COLS#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [9] *((const byte*) COLS#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$c8,y lda COLORMAP1,x sta COLS+$c8,y // [10] *((const byte*) SCREEN#0+(word) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$190,y sta SCREEN+$190,y - // [11] *((const byte*) COLS#0+(word) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [11] *((const byte*) COLS#0+(word) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$190,y lda COLORMAP1,x sta COLS+$190,y // [12] *((const byte*) SCREEN#0+(word) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$258,y sta SCREEN+$258,y - // [13] *((const byte*) COLS#0+(word) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [13] *((const byte*) COLS#0+(word) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$258,y lda COLORMAP2,x sta COLS+$258,y // [14] *((const byte*) SCREEN#0+(word) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$320,y sta SCREEN+$320,y - // [15] *((const byte*) COLS#0+(word) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [15] *((const byte*) COLS#0+(word) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$320,y lda COLORMAP2,x sta COLS+$320,y @@ -487,35 +487,35 @@ main: { // [6] *((const byte*) SCREEN#0 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA,y sta SCREEN,y - // [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA,y lda COLORMAP1,x sta COLS,y // [8] *((const byte*) SCREEN#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$c8,y sta SCREEN+$c8,y - // [9] *((const byte*) COLS#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [9] *((const byte*) COLS#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$c8,y lda COLORMAP1,x sta COLS+$c8,y // [10] *((const byte*) SCREEN#0+(word) $190 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$190,y sta SCREEN+$190,y - // [11] *((const byte*) COLS#0+(word) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [11] *((const byte*) COLS#0+(word) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$190,y lda COLORMAP1,x sta COLS+$190,y // [12] *((const byte*) SCREEN#0+(word) $258 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$258,y sta SCREEN+$258,y - // [13] *((const byte*) COLS#0+(word) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [13] *((const byte*) COLS#0+(word) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$258,y lda COLORMAP2,x sta COLS+$258,y // [14] *((const byte*) SCREEN#0+(word) $320 + (byte) main::x#2) ← *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_vbuyy lda MAPDATA+$320,y sta SCREEN+$320,y - // [15] *((const byte*) COLS#0+(word) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [15] *((const byte*) COLS#0+(word) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$320,y lda COLORMAP2,x sta COLS+$320,y @@ -617,7 +617,7 @@ main: { lda MAPDATA,y sta SCREEN,y // COLS[x] = COLORMAP1[MAPDATA[x]] - // [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [7] *((const byte*) COLS#0 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA,y lda COLORMAP1,x sta COLS,y @@ -626,7 +626,7 @@ main: { lda MAPDATA+$c8,y sta SCREEN+$c8,y // COLS[200+x] = COLORMAP1[MAPDATA[200+x]] - // [9] *((const byte*) COLS#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [9] *((const byte*) COLS#0+(byte) $c8 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(byte) $c8 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$c8,y lda COLORMAP1,x sta COLS+$c8,y @@ -635,7 +635,7 @@ main: { lda MAPDATA+$190,y sta SCREEN+$190,y // COLS[400+x] = COLORMAP1[MAPDATA[400+x]] - // [11] *((const byte*) COLS#0+(word) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [11] *((const byte*) COLS#0+(word) $190 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP1#0 + *((const byte[$3e8]) MAPDATA#0+(word) $190 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$190,y lda COLORMAP1,x sta COLS+$190,y @@ -644,7 +644,7 @@ main: { lda MAPDATA+$258,y sta SCREEN+$258,y // COLS[600+x] = COLORMAP2[MAPDATA[600+x]] - // [13] *((const byte*) COLS#0+(word) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [13] *((const byte*) COLS#0+(word) $258 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $258 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$258,y lda COLORMAP2,x sta COLS+$258,y @@ -653,7 +653,7 @@ main: { lda MAPDATA+$320,y sta SCREEN+$320,y // COLS[800+x] = COLORMAP2[MAPDATA[800+x]] - // [15] *((const byte*) COLS#0+(word) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_pbuc3_derefidx_vbuyy + // [15] *((const byte*) COLS#0+(word) $320 + (byte) main::x#2) ← *((const byte[$100]) COLORMAP2#0 + *((const byte[$3e8]) MAPDATA#0+(word) $320 + (byte) main::x#2)) -- pbuc1_derefidx_vbuyy=pbuc2_derefidx_(pbuc3_derefidx_vbuyy) ldx MAPDATA+$320,y lda COLORMAP2,x sta COLS+$320,y diff --git a/src/test/ref/examples/multiplexer/simple-multiplexer.log b/src/test/ref/examples/multiplexer/simple-multiplexer.log index 9c7679e6f..0919fc00e 100644 --- a/src/test/ref/examples/multiplexer/simple-multiplexer.log +++ b/src/test/ref/examples/multiplexer/simple-multiplexer.log @@ -2510,7 +2510,7 @@ plexShowSprite: { lda.z plex_sprite_idx asl sta.z plex_sprite_idx2 - // [36] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + // [36] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- vbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x ldx PLEX_YPOS,y @@ -2541,7 +2541,7 @@ plexShowSprite: { jmp b4 // plexShowSprite::@4 b4: - // [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + // [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y @@ -2665,7 +2665,7 @@ plexSort: { ldy.z nxt_idx lda PLEX_YPOS,y sta.z nxt_y - // [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 lda.z nxt_y ldx.z m ldy PLEX_SORTED_IDX,x @@ -2697,7 +2697,7 @@ plexSort: { jmp b6 // plexSort::@6 b6: - // [70] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [70] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 lda.z nxt_y ldx.z s ldy PLEX_SORTED_IDX,x @@ -3325,7 +3325,7 @@ plexShowSprite: { lda.z plex_sprite_idx asl sta.z plex_sprite_idx2 - // [36] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + // [36] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y @@ -3350,7 +3350,7 @@ plexShowSprite: { jmp b4 // plexShowSprite::@4 b4: - // [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + // [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y @@ -3459,7 +3459,7 @@ plexSort: { ldy.z nxt_idx lda PLEX_YPOS,y sta.z nxt_y - // [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 lda.z nxt_y ldx.z m ldy PLEX_SORTED_IDX,x @@ -3488,7 +3488,7 @@ plexSort: { jmp b6 // plexSort::@6 b6: - // [70] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + // [70] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 lda.z nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y @@ -4235,7 +4235,7 @@ plexShowSprite: { asl sta.z plex_sprite_idx2 // ypos = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] - // [36] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + // [36] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y @@ -4262,7 +4262,7 @@ plexShowSprite: { sax.z plex_free_next // plexShowSprite::@4 // PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] - // [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + // [42] *((const byte*) PLEX_SCREEN_PTR#1 + (byte) plex_sprite_idx#42) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#42)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y @@ -4375,7 +4375,7 @@ plexSort: { lda PLEX_YPOS,y sta.z nxt_y // if(nxt_y=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [64] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 ldx.z m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y @@ -4398,7 +4398,7 @@ plexSort: { cpx #$ff beq b4 // plexSort::@6 - // [70] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + // [70] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 lda.z nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y diff --git a/src/test/ref/hex2dec-ptrptr.log b/src/test/ref/hex2dec-ptrptr.log index 0dbc48c52..06c124240 100644 --- a/src/test/ref/hex2dec-ptrptr.log +++ b/src/test/ref/hex2dec-ptrptr.log @@ -1046,7 +1046,7 @@ utoa16n: { jmp b2 // utoa16n::@2 b2: - // [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuz1 + // [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref_(_deref_pptc1)=pbuc2_derefidx_vbuz1 ldy.z nybble lda DIGITS,y ldy #0 @@ -1415,7 +1415,7 @@ utoa16n: { jmp b2 // utoa16n::@2 b2: - // [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa + // [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref_(_deref_pptc1)=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy #0 @@ -1839,7 +1839,7 @@ utoa16n: { beq breturn // utoa16n::@2 // *(*dst)++ = DIGITS[nybble] - // [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa + // [43] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref_(_deref_pptc1)=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy #0 diff --git a/src/test/ref/hex2dec.log b/src/test/ref/hex2dec.log index e9ba7ccb6..5c6bc54a1 100644 --- a/src/test/ref/hex2dec.log +++ b/src/test/ref/hex2dec.log @@ -1989,7 +1989,7 @@ utoa16n: { jmp b2 // utoa16n::@2 b2: - // [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuz1 + // [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref_(_deref_pptc1)=pbuc2_derefidx_vbuz1 ldy.z nybble lda DIGITS,y ldy #0 @@ -2685,7 +2685,7 @@ utoa16n: { jmp b2 // utoa16n::@2 b2: - // [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa + // [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref_(_deref_pptc1)=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy #0 @@ -3455,7 +3455,7 @@ utoa16n: { beq breturn // utoa16n::@2 // *(*dst)++ = DIGITS[nybble] - // [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref__deref_pptc1=pbuc2_derefidx_vbuaa + // [82] *(*(&(byte*) utoa16w::dst#5)) ← *((const byte[]) DIGITS#0 + (byte) utoa16n::nybble#4) -- _deref_(_deref_pptc1)=pbuc2_derefidx_vbuaa tay lda DIGITS,y ldy #0 diff --git a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log index 8c8ccfcc3..925157ab7 100644 --- a/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log +++ b/src/test/ref/multiplexer-irq/simple-multiplexer-irq.log @@ -2649,7 +2649,7 @@ plexSort: { ldy.z nxt_idx lda PLEX_YPOS,y sta.z nxt_y - // [36] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [36] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 lda.z nxt_y ldx.z m ldy PLEX_SORTED_IDX,x @@ -2681,7 +2681,7 @@ plexSort: { jmp b7 // plexSort::@7 b7: - // [42] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [42] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 lda.z nxt_y ldx.z s ldy PLEX_SORTED_IDX,x @@ -3017,7 +3017,7 @@ plexShowSprite: { lda.z plex_sprite_idx asl sta.z plex_sprite_idx2 - // [100] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- vbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + // [100] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- vbuz1=pbuc1_derefidx_(pbuc2_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x ldx PLEX_YPOS,y @@ -3048,7 +3048,7 @@ plexShowSprite: { jmp b5 // plexShowSprite::@5 b5: - // [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + // [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y @@ -3687,7 +3687,7 @@ plexSort: { ldy.z nxt_idx lda PLEX_YPOS,y sta.z nxt_y - // [36] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [36] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 lda.z nxt_y ldx.z m ldy PLEX_SORTED_IDX,x @@ -3716,7 +3716,7 @@ plexSort: { jmp b7 // plexSort::@7 b7: - // [42] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + // [42] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 lda.z nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y @@ -4018,7 +4018,7 @@ plexShowSprite: { lda.z plex_sprite_idx asl sta.z plex_sprite_idx2 - // [100] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + // [100] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y @@ -4043,7 +4043,7 @@ plexShowSprite: { jmp b5 // plexShowSprite::@5 b5: - // [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + // [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y @@ -4758,7 +4758,7 @@ plexSort: { lda PLEX_YPOS,y sta.z nxt_y // if(nxt_y=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_pbuc2_derefidx_vbuz2_then_la1 + // [36] if((byte) plexSort::nxt_y#0>=*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::m#2))) goto plexSort::@2 -- vbuz1_ge_pbuc1_derefidx_(pbuc2_derefidx_vbuz2)_then_la1 ldx.z m ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y @@ -4781,7 +4781,7 @@ plexSort: { cpx #$ff beq b4 // plexSort::@7 - // [42] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_pbuc2_derefidx_vbuxx_then_la1 + // [42] if((byte) plexSort::nxt_y#0<*((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plexSort::s#1))) goto plexSort::@3 -- vbuz1_lt_pbuc1_derefidx_(pbuc2_derefidx_vbuxx)_then_la1 lda.z nxt_y ldy PLEX_SORTED_IDX,x cmp PLEX_YPOS,y @@ -5066,7 +5066,7 @@ plexShowSprite: { asl sta.z plex_sprite_idx2 // ypos = PLEX_YPOS[PLEX_SORTED_IDX[plex_show_idx]] - // [100] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- vbuaa=pbuc1_derefidx_pbuc2_derefidx_vbuz1 + // [100] (byte) plexShowSprite::plexFreeAdd1_ypos#0 ← *((const byte[PLEX_COUNT#0]) PLEX_YPOS#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- vbuaa=pbuc1_derefidx_(pbuc2_derefidx_vbuz1) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_YPOS,y @@ -5093,7 +5093,7 @@ plexShowSprite: { sax.z plexFreeAdd1__2 // plexShowSprite::@5 // PLEX_SCREEN_PTR[plex_sprite_idx] = PLEX_PTR[PLEX_SORTED_IDX[plex_show_idx]] - // [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_pbuc3_derefidx_vbuz2 + // [106] *((const byte*) PLEX_SCREEN_PTR#0 + (byte) plex_sprite_idx#25) ← *((const byte[PLEX_COUNT#0]) PLEX_PTR#0 + *((const byte[PLEX_COUNT#0]) PLEX_SORTED_IDX#0 + (byte) plex_show_idx#27)) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_(pbuc3_derefidx_vbuz2) ldx.z plex_show_idx ldy PLEX_SORTED_IDX,x lda PLEX_PTR,y diff --git a/src/test/ref/plasma-center.log b/src/test/ref/plasma-center.log index 59a5a329b..f06e6e9c8 100644 --- a/src/test/ref/plasma-center.log +++ b/src/test/ref/plasma-center.log @@ -5709,7 +5709,7 @@ doplasma: { jmp b2 // doplasma::@2 b2: - // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuz1=pbuz2_derefidx_pbuz3_derefidx_vbuz4_plus_pbuz5_derefidx_pbuz6_derefidx_vbuz4 + // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuz1=pbuz2_derefidx_(pbuz3_derefidx_vbuz4)_plus_pbuz5_derefidx_(pbuz6_derefidx_vbuz4) ldy.z x lda (dist),y sta.z $ff @@ -8244,7 +8244,7 @@ doplasma: { jmp b2 // doplasma::@2 b2: - // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuaa=pbuz1_derefidx_pbuz2_derefidx_vbuxx_plus_pbuz3_derefidx_pbuz4_derefidx_vbuxx + // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx) txa tay lda (dist),y @@ -10736,7 +10736,7 @@ doplasma: { // doplasma::@2 b2: // sin_x[angle[x]] + sin_y[dist[x]] - // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuaa=pbuz1_derefidx_pbuz2_derefidx_vbuxx_plus_pbuz3_derefidx_pbuz4_derefidx_vbuxx + // [32] (byte~) doplasma::$2 ← *((byte*) doplasma::sin_x#0 + *((byte*) doplasma::angle#4 + (byte) doplasma::x#2)) + *((byte*) doplasma::sin_y#0 + *((byte*) doplasma::dist#4 + (byte) doplasma::x#2)) -- vbuaa=pbuz1_derefidx_(pbuz2_derefidx_vbuxx)_plus_pbuz3_derefidx_(pbuz4_derefidx_vbuxx) txa tay lda (dist),y diff --git a/src/test/ref/pointer-pointer-1.log b/src/test/ref/pointer-pointer-1.log index 9fe0a0b4d..b9eff724b 100644 --- a/src/test/ref/pointer-pointer-1.log +++ b/src/test/ref/pointer-pointer-1.log @@ -145,7 +145,7 @@ main: { sta.z pb lda #>b sta.z pb+1 - // [6] *((const byte*) main::SCREEN#0) ← *(*((const byte**) main::ppb#0)) -- _deref_pbuc1=_deref__deref_pptc2 + // [6] *((const byte*) main::SCREEN#0) ← *(*((const byte**) main::ppb#0)) -- _deref_pbuc1=_deref_(_deref_pptc2) ldy #0 lda (ppb),y sta SCREEN @@ -209,7 +209,7 @@ main: { sta.z pb lda #>b sta.z pb+1 - // [6] *((const byte*) main::SCREEN#0) ← *(*((const byte**) main::ppb#0)) -- _deref_pbuc1=_deref__deref_pptc2 + // [6] *((const byte*) main::SCREEN#0) ← *(*((const byte**) main::ppb#0)) -- _deref_pbuc1=_deref_(_deref_pptc2) ldy #0 lda (ppb),y sta SCREEN @@ -291,7 +291,7 @@ main: { lda #>b sta.z pb+1 // *SCREEN = **ppb - // [6] *((const byte*) main::SCREEN#0) ← *(*((const byte**) main::ppb#0)) -- _deref_pbuc1=_deref__deref_pptc2 + // [6] *((const byte*) main::SCREEN#0) ← *(*((const byte**) main::ppb#0)) -- _deref_pbuc1=_deref_(_deref_pptc2) ldy #0 lda (ppb),y sta SCREEN diff --git a/src/test/ref/ptrptr-optimize-0.log b/src/test/ref/ptrptr-optimize-0.log index 043ad23bc..09027874a 100644 --- a/src/test/ref/ptrptr-optimize-0.log +++ b/src/test/ref/ptrptr-optimize-0.log @@ -122,7 +122,7 @@ main: { sta.z screen lda #>$400 sta.z screen+1 - // [5] *(*((const byte**) main::pscreen#0)) ← (byte) 'a' -- _deref__deref_pptc1=vbuc2 + // [5] *(*((const byte**) main::pscreen#0)) ← (byte) 'a' -- _deref_(_deref_pptc1)=vbuc2 lda #'a' ldy #0 sta (pscreen),y @@ -131,7 +131,7 @@ main: { bne !+ inc pscreen+1 !: - // [7] *(*((const byte**) main::pscreen#0)) ← (byte) 'b' -- _deref__deref_pptc1=vbuc2 + // [7] *(*((const byte**) main::pscreen#0)) ← (byte) 'b' -- _deref_(_deref_pptc1)=vbuc2 lda #'b' ldy #0 sta (pscreen),y @@ -187,7 +187,7 @@ main: { sta.z screen lda #>$400 sta.z screen+1 - // [5] *(*((const byte**) main::pscreen#0)) ← (byte) 'a' -- _deref__deref_pptc1=vbuc2 + // [5] *(*((const byte**) main::pscreen#0)) ← (byte) 'a' -- _deref_(_deref_pptc1)=vbuc2 lda #'a' ldy #0 sta (pscreen),y @@ -196,7 +196,7 @@ main: { bne !+ inc pscreen+1 !: - // [7] *(*((const byte**) main::pscreen#0)) ← (byte) 'b' -- _deref__deref_pptc1=vbuc2 + // [7] *(*((const byte**) main::pscreen#0)) ← (byte) 'b' -- _deref_(_deref_pptc1)=vbuc2 lda #'b' ldy #0 sta (pscreen),y @@ -267,7 +267,7 @@ main: { lda #>$400 sta.z screen+1 // **pscreen = 'a' - // [5] *(*((const byte**) main::pscreen#0)) ← (byte) 'a' -- _deref__deref_pptc1=vbuc2 + // [5] *(*((const byte**) main::pscreen#0)) ← (byte) 'a' -- _deref_(_deref_pptc1)=vbuc2 lda #'a' ldy #0 sta (pscreen),y @@ -278,7 +278,7 @@ main: { inc pscreen+1 !: // **pscreen = 'b' - // [7] *(*((const byte**) main::pscreen#0)) ← (byte) 'b' -- _deref__deref_pptc1=vbuc2 + // [7] *(*((const byte**) main::pscreen#0)) ← (byte) 'b' -- _deref_(_deref_pptc1)=vbuc2 lda #'b' ldy #0 sta (pscreen),y diff --git a/src/test/ref/ptrptr-optimize-1.log b/src/test/ref/ptrptr-optimize-1.log index 0a00a7996..98aea9238 100644 --- a/src/test/ref/ptrptr-optimize-1.log +++ b/src/test/ref/ptrptr-optimize-1.log @@ -221,7 +221,7 @@ main: { // sub(byte zeropage(2) ch) sub: { .label ch = 2 - // [10] *(*((const byte**) main::pscreen#0)) ← (byte) sub::ch#2 -- _deref__deref_pptc1=vbuz1 + // [10] *(*((const byte**) main::pscreen#0)) ← (byte) sub::ch#2 -- _deref_(_deref_pptc1)=vbuz1 lda.z ch ldy #0 sta (main.pscreen),y @@ -311,7 +311,7 @@ main: { // sub // sub(byte register(A) ch) sub: { - // [10] *(*((const byte**) main::pscreen#0)) ← (byte) sub::ch#2 -- _deref__deref_pptc1=vbuaa + // [10] *(*((const byte**) main::pscreen#0)) ← (byte) sub::ch#2 -- _deref_(_deref_pptc1)=vbuaa ldy #0 sta (main.pscreen),y // [11] *((const byte**) main::pscreen#0) ← ++ *((const byte**) main::pscreen#0) -- _deref_pptc1=_inc__deref_pptc1 @@ -422,7 +422,7 @@ main: { // sub(byte register(A) ch) sub: { // *(*dst)++ = ch - // [10] *(*((const byte**) main::pscreen#0)) ← (byte) sub::ch#2 -- _deref__deref_pptc1=vbuaa + // [10] *(*((const byte**) main::pscreen#0)) ← (byte) sub::ch#2 -- _deref_(_deref_pptc1)=vbuaa ldy #0 sta (main.pscreen),y // *(*dst)++ = ch; diff --git a/src/test/ref/ptrptr-optimize-2.log b/src/test/ref/ptrptr-optimize-2.log index 1f3c75eb4..40e144218 100644 --- a/src/test/ref/ptrptr-optimize-2.log +++ b/src/test/ref/ptrptr-optimize-2.log @@ -221,7 +221,7 @@ main: { // sub(byte zeropage(2) ch) sub: { .label ch = 2 - // [10] *(*(&(byte*) main::screen#0)) ← (byte) sub::ch#2 -- _deref__deref_pptc1=vbuz1 + // [10] *(*(&(byte*) main::screen#0)) ← (byte) sub::ch#2 -- _deref_(_deref_pptc1)=vbuz1 lda.z ch ldy #0 sta (main.screen),y @@ -311,7 +311,7 @@ main: { // sub // sub(byte register(A) ch) sub: { - // [10] *(*(&(byte*) main::screen#0)) ← (byte) sub::ch#2 -- _deref__deref_pptc1=vbuaa + // [10] *(*(&(byte*) main::screen#0)) ← (byte) sub::ch#2 -- _deref_(_deref_pptc1)=vbuaa ldy #0 sta (main.screen),y // [11] *(&(byte*) main::screen#0) ← ++ *(&(byte*) main::screen#0) -- _deref_pptc1=_inc__deref_pptc1 @@ -420,7 +420,7 @@ main: { // sub(byte register(A) ch) sub: { // *(*dst)++ = ch - // [10] *(*(&(byte*) main::screen#0)) ← (byte) sub::ch#2 -- _deref__deref_pptc1=vbuaa + // [10] *(*(&(byte*) main::screen#0)) ← (byte) sub::ch#2 -- _deref_(_deref_pptc1)=vbuaa ldy #0 sta (main.screen),y // *(*dst)++ = ch; diff --git a/src/test/ref/screen-show-spiral-buckets.log b/src/test/ref/screen-show-spiral-buckets.log index 095573e96..a244719a3 100644 --- a/src/test/ref/screen-show-spiral-buckets.log +++ b/src/test/ref/screen-show-spiral-buckets.log @@ -5024,7 +5024,7 @@ init_buckets: { jmp b3 // init_buckets::@3 b3: - // [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) -- pbuz1_derefidx__deref_pbuz2=_inc_pbuz1_derefidx__deref_pbuz2 + // [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) -- pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2) ldy #0 lda (dist),y tay @@ -7598,7 +7598,7 @@ init_buckets: { jmp b3 // init_buckets::@3 b3: - // [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) -- pbuz1_derefidx__deref_pbuz2=_inc_pbuz1_derefidx__deref_pbuz2 + // [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) -- pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2) ldy #0 lda (dist),y tay @@ -10045,7 +10045,7 @@ init_buckets: { // init_buckets::@3 b3: // BUCKET_SIZES[*dist]++; - // [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) -- pbuz1_derefidx__deref_pbuz2=_inc_pbuz1_derefidx__deref_pbuz2 + // [60] *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) ← ++ *((byte[])(void*) BUCKET_SIZES#0 + *((byte*) init_buckets::dist#4)) -- pbuz1_derefidx_(_deref_pbuz2)=_inc_pbuz1_derefidx_(_deref_pbuz2) ldy #0 lda (dist),y tay diff --git a/src/test/ref/struct-ptr-21.log b/src/test/ref/struct-ptr-21.log index 0b1e24077..5c7cd9708 100644 --- a/src/test/ref/struct-ptr-21.log +++ b/src/test/ref/struct-ptr-21.log @@ -299,7 +299,7 @@ main: { lda.z i asl sta.z _3 - // [9] *((const word*) SCREEN#0 + (byte~) main::$3) ← *(*((word**)(const struct Setting[]) settings#0+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$3) -- pwuc1_derefidx_vbuz1=_deref_pptc2_derefidx_vbuz1 + // [9] *((const word*) SCREEN#0 + (byte~) main::$3) ← *(*((word**)(const struct Setting[]) settings#0+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$3) -- pwuc1_derefidx_vbuz1=(_deref_pptc2)_derefidx_vbuz1 ldy.z _3 lda settings+OFFSET_STRUCT_SETTING_BUF sta.z $fe @@ -390,7 +390,7 @@ main: { // [8] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [9] *((const word*) SCREEN#0 + (byte~) main::$3) ← *(*((word**)(const struct Setting[]) settings#0+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$3) -- pwuc1_derefidx_vbuaa=_deref_pptc2_derefidx_vbuaa + // [9] *((const word*) SCREEN#0 + (byte~) main::$3) ← *(*((word**)(const struct Setting[]) settings#0+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$3) -- pwuc1_derefidx_vbuaa=(_deref_pptc2)_derefidx_vbuaa tay lda settings+OFFSET_STRUCT_SETTING_BUF sta.z $fe @@ -503,7 +503,7 @@ main: { // [8] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1 txa asl - // [9] *((const word*) SCREEN#0 + (byte~) main::$3) ← *(*((word**)(const struct Setting[]) settings#0+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$3) -- pwuc1_derefidx_vbuaa=_deref_pptc2_derefidx_vbuaa + // [9] *((const word*) SCREEN#0 + (byte~) main::$3) ← *(*((word**)(const struct Setting[]) settings#0+(const byte) OFFSET_STRUCT_SETTING_BUF) + (byte~) main::$3) -- pwuc1_derefidx_vbuaa=(_deref_pptc2)_derefidx_vbuaa tay lda settings+OFFSET_STRUCT_SETTING_BUF sta.z $fe diff --git a/src/test/ref/struct-ptr-22.asm b/src/test/ref/struct-ptr-22.asm index 906255c86..e91b0a4df 100644 --- a/src/test/ref/struct-ptr-22.asm +++ b/src/test/ref/struct-ptr-22.asm @@ -13,12 +13,11 @@ main: { sta files+1 lda #$aa ldy #3 - ldx files,y - stx !+ +1 - ldx files+1,y - stx !+ +2 - !: - sta $ffff + ldx files + stx.z $fe + ldx files+1 + stx.z $ff + sta ($fe),y lda files sta.z _0 lda files+1 diff --git a/src/test/ref/struct-ptr-22.log b/src/test/ref/struct-ptr-22.log index c0e3709ad..66e0c8edd 100644 --- a/src/test/ref/struct-ptr-22.log +++ b/src/test/ref/struct-ptr-22.log @@ -1055,15 +1055,14 @@ main: { sta files lda #>$4000 sta files+1 - // [5] *(*((byte**)(const struct fileentry[$a]) files#0) + (byte) 3) ← (byte) $aa -- _deref_pptc1_derefidx_vbuc2=vbuc3 + // [5] *(*((byte**)(const struct fileentry[$a]) files#0) + (byte) 3) ← (byte) $aa -- (_deref_pptc1)_derefidx_vbuc2=vbuc3 lda #$aa ldy #3 - ldx files,y - stx !+ +1 - ldx files+1,y - stx !+ +2 - !: - sta $ffff + ldx files + stx.z $fe + ldx files+1 + stx.z $ff + sta ($fe),y // [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry[$a]) files#0) -- pbuz1=_deref_pptc1 lda files sta.z _0 @@ -1430,16 +1429,16 @@ Uplift Scope [print_ln] Uplift Scope [print_cls] Uplift Scope [fileentry] -Uplifting [] best 1979 combination zp ZP_WORD:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#48 print_char_cursor#1 ] -Uplifting [print_str] best 1979 combination zp ZP_WORD:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] -Uplifting [memset] best 1979 combination zp ZP_WORD:10 [ memset::dst#4 memset::dst#1 ] -Uplifting [print_byte] best 1961 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] -Uplifting [print_char] best 1952 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] -Uplifting [main] best 1952 combination zp ZP_WORD:12 [ main::$0 ] -Uplifting [RADIX] best 1952 combination -Uplifting [print_ln] best 1952 combination -Uplifting [print_cls] best 1952 combination -Uplifting [fileentry] best 1952 combination +Uplifting [] best 1978 combination zp ZP_WORD:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] zp ZP_WORD:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#48 print_char_cursor#1 ] +Uplifting [print_str] best 1978 combination zp ZP_WORD:8 [ print_str::str#3 print_str::str#5 print_str::str#0 ] +Uplifting [memset] best 1978 combination zp ZP_WORD:10 [ memset::dst#4 memset::dst#1 ] +Uplifting [print_byte] best 1960 combination reg byte x [ print_byte::b#2 print_byte::b#0 print_byte::b#1 ] reg byte a [ print_byte::$0 ] reg byte x [ print_byte::$2 ] +Uplifting [print_char] best 1951 combination reg byte a [ print_char::ch#2 print_char::ch#0 print_char::ch#1 ] +Uplifting [main] best 1951 combination zp ZP_WORD:12 [ main::$0 ] +Uplifting [RADIX] best 1951 combination +Uplifting [print_ln] best 1951 combination +Uplifting [print_cls] best 1951 combination +Uplifting [fileentry] best 1951 combination Coalescing zero page register [ zp ZP_WORD:10 [ memset::dst#4 memset::dst#1 ] ] with [ zp ZP_WORD:2 [ print_line_cursor#10 print_line_cursor#19 print_line_cursor#1 ] ] Coalescing zero page register [ zp ZP_WORD:12 [ main::$0 ] ] with [ zp ZP_WORD:6 [ print_char_cursor#28 print_char_cursor#2 print_char_cursor#29 print_char_cursor#45 print_char_cursor#48 print_char_cursor#1 ] ] Allocated (was zp ZP_WORD:8) zp ZP_WORD:2 [ print_str::str#3 print_str::str#5 print_str::str#0 ] @@ -1479,15 +1478,14 @@ main: { sta files lda #>$4000 sta files+1 - // [5] *(*((byte**)(const struct fileentry[$a]) files#0) + (byte) 3) ← (byte) $aa -- _deref_pptc1_derefidx_vbuc2=vbuc3 + // [5] *(*((byte**)(const struct fileentry[$a]) files#0) + (byte) 3) ← (byte) $aa -- (_deref_pptc1)_derefidx_vbuc2=vbuc3 lda #$aa ldy #3 - ldx files,y - stx !+ +1 - ldx files+1,y - stx !+ +2 - !: - sta $ffff + ldx files + stx.z $fe + ldx files+1 + stx.z $ff + sta ($fe),y // [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry[$a]) files#0) -- pbuz1=_deref_pptc1 lda files sta.z _0 @@ -1959,7 +1957,7 @@ reg byte x [ print_byte::$2 ] FINAL ASSEMBLER -Score: 1647 +Score: 1646 // File Comments // Demonstrates problem with missing parenthesis in double-dereferencing @@ -1987,15 +1985,14 @@ main: { lda #>$4000 sta files+1 // file->bufEdit[3] = 0xAA - // [5] *(*((byte**)(const struct fileentry[$a]) files#0) + (byte) 3) ← (byte) $aa -- _deref_pptc1_derefidx_vbuc2=vbuc3 + // [5] *(*((byte**)(const struct fileentry[$a]) files#0) + (byte) 3) ← (byte) $aa -- (_deref_pptc1)_derefidx_vbuc2=vbuc3 lda #$aa ldy #3 - ldx files,y - stx !+ +1 - ldx files+1,y - stx !+ +2 - !: - sta $ffff + ldx files + stx.z $fe + ldx files+1 + stx.z $ff + sta ($fe),y // (char *)file->bufEdit // [6] (byte*~) main::$0 ← *((byte**)(const struct fileentry[$a]) files#0) -- pbuz1=_deref_pptc1 lda files