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

Added parenthesis to fragments when derefs are nested. Closes #270

This commit is contained in:
jespergravgaard 2019-08-19 23:54:01 +02:00
parent e3427796d3
commit 733751dbe3
40 changed files with 154 additions and 128 deletions

View File

@ -0,0 +1,5 @@
ldx {c1}
stx $fe
ldx {c1}+1
stx $ff
sta ($fe),y

View File

@ -0,0 +1,3 @@
lda {c3},x
ldx {c2},y
sta {c1},x

View File

@ -1,3 +0,0 @@
lda {c3},x
ldy {c2},x
sta {c1},y

View File

@ -45,7 +45,7 @@ public class KickC implements Callable<Void> {
@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.")

View File

@ -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);

View File

@ -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));

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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<PLEX_YPOS[PLEX_SORTED_IDX[m]])
// [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
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

View File

@ -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

View File

@ -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

View File

@ -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<PLEX_YPOS[PLEX_SORTED_IDX[m]])
// [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
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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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