mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-18 01:30:56 +00:00
Expanded DuplicateRValueIdentification to also find RValues in different blocks as long as the scope is the same and the first block dominates the last block. Closes #525
This commit is contained in:
parent
e92f72e490
commit
1e0d21d06e
@ -18504,3 +18504,90 @@ sta {c1}+1,y
|
|||||||
ldy {z1}
|
ldy {z1}
|
||||||
dey
|
dey
|
||||||
dey
|
dey
|
||||||
|
//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuz1
|
||||||
|
ldy {z1}
|
||||||
|
lda {c2},y
|
||||||
|
ldy {c1}
|
||||||
|
sty $fe
|
||||||
|
ldy {c1}+1
|
||||||
|
sty $ff
|
||||||
|
ldy #0
|
||||||
|
sta ($fe),y
|
||||||
|
//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuaa
|
||||||
|
tay
|
||||||
|
lda {c2},y
|
||||||
|
ldy {c1}
|
||||||
|
sty $fe
|
||||||
|
ldy {c1}+1
|
||||||
|
sty $ff
|
||||||
|
ldy #0
|
||||||
|
sta ($fe),y
|
||||||
|
//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuxx
|
||||||
|
lda {c2},x
|
||||||
|
ldy {c1}
|
||||||
|
sty $fe
|
||||||
|
ldy {c1}+1
|
||||||
|
sty $ff
|
||||||
|
ldy #0
|
||||||
|
sta ($fe),y
|
||||||
|
//FRAGMENT _deref_(_deref_qbuc1)=pbuc2_derefidx_vbuyy
|
||||||
|
lda {c2},y
|
||||||
|
ldy {c1}
|
||||||
|
sty $fe
|
||||||
|
ldy {c1}+1
|
||||||
|
sty $ff
|
||||||
|
ldy #0
|
||||||
|
sta ($fe),y
|
||||||
|
//FRAGMENT vbuz1=_deref_pbuc1_ror_1
|
||||||
|
lda {c1}
|
||||||
|
lsr
|
||||||
|
sta {z1}
|
||||||
|
//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuz2_then_la1
|
||||||
|
ldy {z2}
|
||||||
|
lda {c1}+1,y
|
||||||
|
cmp {z1}+1
|
||||||
|
bne !+
|
||||||
|
lda {c1},y
|
||||||
|
cmp {z1}
|
||||||
|
beq {la1}
|
||||||
|
!:
|
||||||
|
bcc {la1}
|
||||||
|
//FRAGMENT vbuaa=_deref_pbuc1_ror_1
|
||||||
|
lda {c1}
|
||||||
|
lsr
|
||||||
|
//FRAGMENT vbuxx=_deref_pbuc1_ror_1
|
||||||
|
lda {c1}
|
||||||
|
lsr
|
||||||
|
tax
|
||||||
|
//FRAGMENT vbuyy=_deref_pbuc1_ror_1
|
||||||
|
lda {c1}
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuaa_then_la1
|
||||||
|
tay
|
||||||
|
lda {c1}+1,y
|
||||||
|
cmp {z1}+1
|
||||||
|
bne !+
|
||||||
|
lda {c1},y
|
||||||
|
cmp {z1}
|
||||||
|
beq {la1}
|
||||||
|
!:
|
||||||
|
bcc {la1}
|
||||||
|
//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuxx_then_la1
|
||||||
|
lda {c1}+1,x
|
||||||
|
cmp {z1}+1
|
||||||
|
bne !+
|
||||||
|
lda {c1},x
|
||||||
|
cmp {z1}
|
||||||
|
beq {la1}
|
||||||
|
!:
|
||||||
|
bcc {la1}
|
||||||
|
//FRAGMENT vwuz1_ge_pwuc1_derefidx_vbuyy_then_la1
|
||||||
|
lda {c1}+1,y
|
||||||
|
cmp {z1}+1
|
||||||
|
bne !+
|
||||||
|
lda {c1},y
|
||||||
|
cmp {z1}
|
||||||
|
beq {la1}
|
||||||
|
!:
|
||||||
|
bcc {la1}
|
||||||
|
@ -55,11 +55,11 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization {
|
|||||||
duplicate |= deduplicateRValue(otherRValue, thisRValue);
|
duplicate |= deduplicateRValue(otherRValue, thisRValue);
|
||||||
} else if(thisDominators.contains(otherRValue.block.getLabel())) {
|
} else if(thisDominators.contains(otherRValue.block.getLabel())) {
|
||||||
// The other assignment is guaranteed to be executed before this assignment
|
// The other assignment is guaranteed to be executed before this assignment
|
||||||
if(scopeMatch(thisRValue.rValue1, thisRValue.block) && scopeMatch(thisRValue.rValue2, thisRValue.block))
|
if(scopeMatch(thisRValue, otherRValue))
|
||||||
duplicate |= deduplicateRValue(otherRValue, thisRValue);
|
duplicate |= deduplicateRValue(otherRValue, thisRValue);
|
||||||
} else if(otherDominators.contains(thisRValue.block.getLabel())) {
|
} else if(otherDominators.contains(thisRValue.block.getLabel())) {
|
||||||
// This assignment is guaranteed to be executed before the other assignment
|
// This assignment is guaranteed to be executed before the other assignment
|
||||||
if(scopeMatch(thisRValue.rValue1, thisRValue.block) && scopeMatch(thisRValue.rValue2, thisRValue.block))
|
if(scopeMatch(thisRValue, otherRValue))
|
||||||
duplicate |= deduplicateRValue(thisRValue, otherRValue);
|
duplicate |= deduplicateRValue(thisRValue, otherRValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -76,27 +76,45 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization {
|
|||||||
return modified;
|
return modified;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that the scopes match for all involved variables.
|
||||||
|
*
|
||||||
|
* @param thisRValue This RValue
|
||||||
|
* @param otherRValue This duplicate RValue
|
||||||
|
* @return true if all scopes match
|
||||||
|
*/
|
||||||
|
private boolean scopeMatch(AssignmentWithRValue thisRValue, AssignmentWithRValue otherRValue) {
|
||||||
|
if(!thisRValue.block.getScope().equals(otherRValue.block.getScope()))
|
||||||
|
return false;
|
||||||
|
ScopeRef scope = thisRValue.block.getScope();
|
||||||
|
return
|
||||||
|
scopeMatch(thisRValue.assignment.getlValue(), scope) &&
|
||||||
|
scopeMatch(otherRValue.assignment.getlValue(), scope) &&
|
||||||
|
scopeMatch(thisRValue.rValue1, scope) &&
|
||||||
|
scopeMatch(thisRValue.rValue2, scope);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check that the scope of the values inside an RValue matches the scope of a block.
|
* Check that the scope of the values inside an RValue matches the scope of a block.
|
||||||
* We only know that a specific variable version has the same value if it is from the same scope as the block.
|
* We only know that a specific variable version has the same value if it is from the same scope as the block.
|
||||||
* Otherwise it might be modified inside some called function.
|
* Otherwise it might be modified inside some called function.
|
||||||
*
|
*
|
||||||
* @param rValue The RValue to examine (may be null)
|
* @param value The RValue to examine (may be null)
|
||||||
* @param block The block to examine
|
* @param block The block to examine
|
||||||
* @return true if the scope match
|
* @return true if the scope match
|
||||||
*/
|
*/
|
||||||
private boolean scopeMatch(RValue rValue, ControlFlowBlock block) {
|
private boolean scopeMatch(Value value, ScopeRef scopeRef) {
|
||||||
if(rValue == null)
|
if(value == null)
|
||||||
return true;
|
return true;
|
||||||
List<SymbolVariableRef> varRefs = new ArrayList<>();
|
List<SymbolVariableRef> varRefs = new ArrayList<>();
|
||||||
ProgramValueIterator.execute(new ProgramValue.GenericValue(rValue),
|
ProgramValueIterator.execute(new ProgramValue.GenericValue(value),
|
||||||
(programValue, currentStmt, stmtIt, currentBlock) -> {
|
(programValue, currentStmt, stmtIt, currentBlock) -> {
|
||||||
if(programValue.get() instanceof SymbolVariableRef) varRefs.add((SymbolVariableRef) programValue.get());
|
if(programValue.get() instanceof SymbolVariableRef) varRefs.add((SymbolVariableRef) programValue.get());
|
||||||
}
|
}
|
||||||
, null, null, null);
|
, null, null, null);
|
||||||
for(SymbolVariableRef varRef : varRefs) {
|
for(SymbolVariableRef varRef : varRefs) {
|
||||||
Variable var = getScope().getVariable(varRef);
|
Variable var = getScope().getVariable(varRef);
|
||||||
if(!var.getScope().getRef().equals(block.getScope()))
|
if(!var.getScope().getRef().equals(scopeRef))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -186,8 +204,6 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization {
|
|||||||
private boolean isTrivial() {
|
private boolean isTrivial() {
|
||||||
if(operator == null) return true;
|
if(operator == null) return true;
|
||||||
if(operator instanceof OperatorCast) return true;
|
if(operator instanceof OperatorCast) return true;
|
||||||
if(operator.equals(Operators.PLUS)) return true;
|
|
||||||
if(operator.equals(Operators.MINUS)) return true;
|
|
||||||
if(operator.equals(Operators.LE)) return true;
|
if(operator.equals(Operators.LE)) return true;
|
||||||
if(operator.equals(Operators.LT)) return true;
|
if(operator.equals(Operators.LT)) return true;
|
||||||
if(operator.equals(Operators.GE)) return true;
|
if(operator.equals(Operators.GE)) return true;
|
||||||
@ -199,6 +215,8 @@ public class Pass2DuplicateRValueIdentification extends Pass2SsaOptimization {
|
|||||||
if(operator.equals(Operators.LOGIC_OR)) return true;
|
if(operator.equals(Operators.LOGIC_OR)) return true;
|
||||||
if(operator.equals(Operators.HIBYTE)) return true;
|
if(operator.equals(Operators.HIBYTE)) return true;
|
||||||
if(operator.equals(Operators.LOWBYTE)) return true;
|
if(operator.equals(Operators.LOWBYTE)) return true;
|
||||||
|
if(operator.equals(Operators.PLUS) && rValue2 instanceof ConstantValue) return true;
|
||||||
|
if(operator.equals(Operators.PLUS) && rValue1 instanceof ConstantValue) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -169,7 +169,7 @@
|
|||||||
.label form_vic_bg2_lo = form_fields_val+$21
|
.label form_vic_bg2_lo = form_fields_val+$21
|
||||||
.label form_vic_bg3_hi = form_fields_val+$22
|
.label form_vic_bg3_hi = form_fields_val+$22
|
||||||
.label form_vic_bg3_lo = form_fields_val+$23
|
.label form_vic_bg3_lo = form_fields_val+$23
|
||||||
.label print_char_cursor = $18
|
.label print_char_cursor = $1a
|
||||||
.label print_line_cursor = 7
|
.label print_line_cursor = 7
|
||||||
.label print_screen = 7
|
.label print_screen = 7
|
||||||
// Keyboard event buffer size. The number of events currently in the event buffer
|
// Keyboard event buffer size. The number of events currently in the event buffer
|
||||||
@ -400,11 +400,13 @@ form_mode: {
|
|||||||
// Change graphics mode to show the selected graphics mode
|
// Change graphics mode to show the selected graphics mode
|
||||||
gfx_mode: {
|
gfx_mode: {
|
||||||
.label __20 = 9
|
.label __20 = 9
|
||||||
.label __24 = $1d
|
.label __22 = $23
|
||||||
.label __26 = $1f
|
.label __24 = $13
|
||||||
|
.label __26 = $1a
|
||||||
.label __34 = 9
|
.label __34 = 9
|
||||||
.label __38 = $18
|
.label __36 = $1c
|
||||||
.label __40 = $1a
|
.label __38 = $1e
|
||||||
|
.label __40 = $21
|
||||||
.label __47 = 3
|
.label __47 = 3
|
||||||
.label __48 = 3
|
.label __48 = 3
|
||||||
.label __50 = 7
|
.label __50 = 7
|
||||||
@ -532,15 +534,19 @@ gfx_mode: {
|
|||||||
sta.z plane_a+3
|
sta.z plane_a+3
|
||||||
// < plane_a
|
// < plane_a
|
||||||
lda.z plane_a
|
lda.z plane_a
|
||||||
|
sta.z __22
|
||||||
|
lda.z plane_a+1
|
||||||
|
sta.z __22+1
|
||||||
|
// < < plane_a
|
||||||
|
lda.z __22
|
||||||
|
// *DTV_PLANEA_START_LO = < < plane_a
|
||||||
|
sta DTV_PLANEA_START_LO
|
||||||
|
// < plane_a
|
||||||
|
lda.z plane_a
|
||||||
sta.z __24
|
sta.z __24
|
||||||
lda.z plane_a+1
|
lda.z plane_a+1
|
||||||
sta.z __24+1
|
sta.z __24+1
|
||||||
// < < plane_a
|
|
||||||
lda.z __24
|
|
||||||
// *DTV_PLANEA_START_LO = < < plane_a
|
|
||||||
sta DTV_PLANEA_START_LO
|
|
||||||
// > < plane_a
|
// > < plane_a
|
||||||
lda.z __24+1
|
|
||||||
// *DTV_PLANEA_START_MI = > < plane_a
|
// *DTV_PLANEA_START_MI = > < plane_a
|
||||||
sta DTV_PLANEA_START_MI
|
sta DTV_PLANEA_START_MI
|
||||||
// > plane_a
|
// > plane_a
|
||||||
@ -604,15 +610,19 @@ gfx_mode: {
|
|||||||
sta.z plane_b+3
|
sta.z plane_b+3
|
||||||
// < plane_b
|
// < plane_b
|
||||||
lda.z plane_b
|
lda.z plane_b
|
||||||
|
sta.z __36
|
||||||
|
lda.z plane_b+1
|
||||||
|
sta.z __36+1
|
||||||
|
// < < plane_b
|
||||||
|
lda.z __36
|
||||||
|
// *DTV_PLANEB_START_LO = < < plane_b
|
||||||
|
sta DTV_PLANEB_START_LO
|
||||||
|
// < plane_b
|
||||||
|
lda.z plane_b
|
||||||
sta.z __38
|
sta.z __38
|
||||||
lda.z plane_b+1
|
lda.z plane_b+1
|
||||||
sta.z __38+1
|
sta.z __38+1
|
||||||
// < < plane_b
|
|
||||||
lda.z __38
|
|
||||||
// *DTV_PLANEB_START_LO = < < plane_b
|
|
||||||
sta DTV_PLANEB_START_LO
|
|
||||||
// > < plane_b
|
// > < plane_b
|
||||||
lda.z __38+1
|
|
||||||
// *DTV_PLANEB_START_MI = > < plane_b
|
// *DTV_PLANEB_START_MI = > < plane_b
|
||||||
sta DTV_PLANEB_START_MI
|
sta DTV_PLANEB_START_MI
|
||||||
// > plane_b
|
// > plane_b
|
||||||
@ -1135,7 +1145,7 @@ gfx_init_vic_bitmap: {
|
|||||||
}
|
}
|
||||||
// Initialize 8BPP Chunky Bitmap (contains 8bpp pixels)
|
// Initialize 8BPP Chunky Bitmap (contains 8bpp pixels)
|
||||||
gfx_init_plane_8bppchunky: {
|
gfx_init_plane_8bppchunky: {
|
||||||
.label __5 = $1d
|
.label __5 = $23
|
||||||
.label gfxb = 5
|
.label gfxb = 5
|
||||||
.label x = 3
|
.label x = 3
|
||||||
.label y = 2
|
.label y = 2
|
||||||
@ -1523,9 +1533,9 @@ print_cls: {
|
|||||||
}
|
}
|
||||||
// Print a number of zero-terminated strings, each followed by a newline.
|
// Print a number of zero-terminated strings, each followed by a newline.
|
||||||
// The sequence of lines is terminated by another zero.
|
// The sequence of lines is terminated by another zero.
|
||||||
// print_str_lines(byte* zp($1a) str)
|
// print_str_lines(byte* zp($13) str)
|
||||||
print_str_lines: {
|
print_str_lines: {
|
||||||
.label str = $1a
|
.label str = $13
|
||||||
lda.z print_screen
|
lda.z print_screen
|
||||||
sta.z print_char_cursor
|
sta.z print_char_cursor
|
||||||
lda.z print_screen+1
|
lda.z print_screen+1
|
||||||
@ -1621,7 +1631,7 @@ form_render_values: {
|
|||||||
// idx is the ID of the preset
|
// idx is the ID of the preset
|
||||||
// render_preset_name(byte register(A) idx)
|
// render_preset_name(byte register(A) idx)
|
||||||
render_preset_name: {
|
render_preset_name: {
|
||||||
.label name = $1a
|
.label name = $13
|
||||||
// if(idx==0)
|
// if(idx==0)
|
||||||
cmp #0
|
cmp #0
|
||||||
beq __b3
|
beq __b3
|
||||||
@ -1752,7 +1762,7 @@ render_preset_name: {
|
|||||||
// Reads keyboard and allows the user to navigate and change the fields of the form
|
// Reads keyboard and allows the user to navigate and change the fields of the form
|
||||||
// Returns 0 if space is not pressed, non-0 if space is pressed
|
// Returns 0 if space is not pressed, non-0 if space is pressed
|
||||||
form_control: {
|
form_control: {
|
||||||
.label field = $1f
|
.label field = $13
|
||||||
// form_field_ptr(form_field_idx)
|
// form_field_ptr(form_field_idx)
|
||||||
ldx.z form_field_idx
|
ldx.z form_field_idx
|
||||||
jsr form_field_ptr
|
jsr form_field_ptr
|
||||||
@ -1889,7 +1899,7 @@ form_control: {
|
|||||||
// idx is the ID of the preset
|
// idx is the ID of the preset
|
||||||
// apply_preset(byte register(A) idx)
|
// apply_preset(byte register(A) idx)
|
||||||
apply_preset: {
|
apply_preset: {
|
||||||
.label preset = $18
|
.label preset = $1a
|
||||||
// if(idx==0)
|
// if(idx==0)
|
||||||
cmp #0
|
cmp #0
|
||||||
beq __b3
|
beq __b3
|
||||||
@ -2286,7 +2296,7 @@ get_vic_charset: {
|
|||||||
// Handles debounce and only generates events when the status of a key changes.
|
// Handles debounce and only generates events when the status of a key changes.
|
||||||
// Also stores current status of modifiers in keyboard_modifiers.
|
// Also stores current status of modifiers in keyboard_modifiers.
|
||||||
keyboard_event_scan: {
|
keyboard_event_scan: {
|
||||||
.label row_scan = $13
|
.label row_scan = $15
|
||||||
.label keycode = $f
|
.label keycode = $f
|
||||||
.label row = $d
|
.label row = $d
|
||||||
lda #0
|
lda #0
|
||||||
@ -2441,7 +2451,7 @@ keyboard_event_get: {
|
|||||||
}
|
}
|
||||||
// Initialize the bitmap plotter tables for a specific bitmap
|
// Initialize the bitmap plotter tables for a specific bitmap
|
||||||
bitmap_init: {
|
bitmap_init: {
|
||||||
.label __10 = $13
|
.label __10 = $15
|
||||||
.label yoffs = 7
|
.label yoffs = 7
|
||||||
ldy #$80
|
ldy #$80
|
||||||
ldx #0
|
ldx #0
|
||||||
@ -2510,7 +2520,7 @@ bitmap_init: {
|
|||||||
}
|
}
|
||||||
// Clear all graphics on the bitmap
|
// Clear all graphics on the bitmap
|
||||||
bitmap_clear: {
|
bitmap_clear: {
|
||||||
.label bitmap = $1a
|
.label bitmap = $13
|
||||||
.label y = $f
|
.label y = $f
|
||||||
// bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] }
|
// bitmap = (char*) { bitmap_plot_xhi[0], bitmap_plot_xlo[0] }
|
||||||
lda bitmap_plot_xlo
|
lda bitmap_plot_xlo
|
||||||
@ -2544,11 +2554,11 @@ bitmap_clear: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// Draw a line on the bitmap
|
// Draw a line on the bitmap
|
||||||
// bitmap_line(byte zp($11) x0, byte zp($13) x1, byte register(X) y0, byte zp($10) y1)
|
// bitmap_line(byte zp($11) x0, byte zp($15) x1, byte register(X) y0, byte zp($10) y1)
|
||||||
bitmap_line: {
|
bitmap_line: {
|
||||||
.label xd = $f
|
.label xd = $f
|
||||||
.label x0 = $11
|
.label x0 = $11
|
||||||
.label x1 = $13
|
.label x1 = $15
|
||||||
.label y1 = $10
|
.label y1 = $10
|
||||||
// if(x0<x1)
|
// if(x0<x1)
|
||||||
lda.z x0
|
lda.z x0
|
||||||
@ -2689,11 +2699,11 @@ dtvSetCpuBankSegment1: {
|
|||||||
// Initialize 320*200 1bpp pixel ($2000) plane with identical bytes
|
// Initialize 320*200 1bpp pixel ($2000) plane with identical bytes
|
||||||
// gfx_init_plane_fill(dword zp(9) plane_addr, byte zp($10) fill)
|
// gfx_init_plane_fill(dword zp(9) plane_addr, byte zp($10) fill)
|
||||||
gfx_init_plane_fill: {
|
gfx_init_plane_fill: {
|
||||||
.label __0 = $14
|
.label __0 = $16
|
||||||
.label __1 = $18
|
.label __1 = $1a
|
||||||
.label __4 = $1a
|
.label __4 = $13
|
||||||
.label __5 = $1a
|
.label __5 = $13
|
||||||
.label gfxb = $1a
|
.label gfxb = $13
|
||||||
.label by = $12
|
.label by = $12
|
||||||
.label plane_addr = 9
|
.label plane_addr = 9
|
||||||
.label fill = $10
|
.label fill = $10
|
||||||
@ -2774,13 +2784,13 @@ gfx_init_plane_fill: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
// Copies the character c (an unsigned char) to the first num characters of the object pointed to by the argument str.
|
||||||
// memset(void* zp($18) str)
|
// memset(void* zp($1a) str)
|
||||||
memset: {
|
memset: {
|
||||||
.const c = ' '
|
.const c = ' '
|
||||||
.const num = $3e8
|
.const num = $3e8
|
||||||
.label end = $1a
|
.label end = $1c
|
||||||
.label dst = $18
|
.label dst = $1a
|
||||||
.label str = $18
|
.label str = $1a
|
||||||
// end = (char*)str + num
|
// end = (char*)str + num
|
||||||
lda.z str
|
lda.z str
|
||||||
clc
|
clc
|
||||||
@ -2852,9 +2862,9 @@ print_ln: {
|
|||||||
// field_idx is the index of the field to get the screen address for
|
// field_idx is the index of the field to get the screen address for
|
||||||
// form_field_ptr(byte register(X) field_idx)
|
// form_field_ptr(byte register(X) field_idx)
|
||||||
form_field_ptr: {
|
form_field_ptr: {
|
||||||
.label line = $1d
|
.label line = $1e
|
||||||
.label x = $1c
|
.label x = $20
|
||||||
.label return = $1f
|
.label return = $13
|
||||||
// y = form_fields_y[field_idx]
|
// y = form_fields_y[field_idx]
|
||||||
ldy form_fields_y,x
|
ldy form_fields_y,x
|
||||||
// line = (byte*) { form_line_hi[y], form_line_lo[y] }
|
// line = (byte*) { form_line_hi[y], form_line_lo[y] }
|
||||||
@ -2876,10 +2886,10 @@ form_field_ptr: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// Print a string at a specific screen position
|
// Print a string at a specific screen position
|
||||||
// print_str_at(byte* zp($1a) str, byte* zp($18) at)
|
// print_str_at(byte* zp($13) str, byte* zp($1a) at)
|
||||||
print_str_at: {
|
print_str_at: {
|
||||||
.label at = $18
|
.label at = $1a
|
||||||
.label str = $1a
|
.label str = $13
|
||||||
lda #<FORM_SCREEN+$28*2+$a
|
lda #<FORM_SCREEN+$28*2+$a
|
||||||
sta.z at
|
sta.z at
|
||||||
lda #>FORM_SCREEN+$28*2+$a
|
lda #>FORM_SCREEN+$28*2+$a
|
||||||
@ -2928,7 +2938,7 @@ keyboard_matrix_read: {
|
|||||||
// Returns 0 is not pressed and non-0 if pressed
|
// Returns 0 is not pressed and non-0 if pressed
|
||||||
// keyboard_event_pressed(byte zp($12) keycode)
|
// keyboard_event_pressed(byte zp($12) keycode)
|
||||||
keyboard_event_pressed: {
|
keyboard_event_pressed: {
|
||||||
.label row_bits = $1c
|
.label row_bits = $20
|
||||||
.label keycode = $12
|
.label keycode = $12
|
||||||
// keycode>>3
|
// keycode>>3
|
||||||
lda.z keycode
|
lda.z keycode
|
||||||
@ -2956,7 +2966,7 @@ bitmap_line_ydxi: {
|
|||||||
.label y1 = $10
|
.label y1 = $10
|
||||||
.label yd = $d
|
.label yd = $d
|
||||||
.label xd = $f
|
.label xd = $f
|
||||||
.label e = $13
|
.label e = $15
|
||||||
// e = xd>>1
|
// e = xd>>1
|
||||||
lda.z xd
|
lda.z xd
|
||||||
lsr
|
lsr
|
||||||
@ -2994,10 +3004,10 @@ bitmap_line_ydxi: {
|
|||||||
// }
|
// }
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// bitmap_line_xdyi(byte zp($e) x, byte register(X) y, byte zp($13) x1, byte zp($f) xd, byte zp($d) yd)
|
// bitmap_line_xdyi(byte zp($e) x, byte register(X) y, byte zp($15) x1, byte zp($f) xd, byte zp($d) yd)
|
||||||
bitmap_line_xdyi: {
|
bitmap_line_xdyi: {
|
||||||
.label x = $e
|
.label x = $e
|
||||||
.label x1 = $13
|
.label x1 = $15
|
||||||
.label xd = $f
|
.label xd = $f
|
||||||
.label yd = $d
|
.label yd = $d
|
||||||
.label e = $12
|
.label e = $12
|
||||||
@ -3045,7 +3055,7 @@ bitmap_line_ydxd: {
|
|||||||
.label y1 = $10
|
.label y1 = $10
|
||||||
.label yd = $12
|
.label yd = $12
|
||||||
.label xd = $f
|
.label xd = $f
|
||||||
.label e = $1c
|
.label e = $20
|
||||||
// e = xd>>1
|
// e = xd>>1
|
||||||
lda.z xd
|
lda.z xd
|
||||||
lsr
|
lsr
|
||||||
@ -3083,9 +3093,9 @@ bitmap_line_ydxd: {
|
|||||||
// }
|
// }
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// bitmap_line_xdyd(byte zp($1c) x, byte register(X) y, byte zp($11) x1, byte zp($f) xd, byte zp($e) yd)
|
// bitmap_line_xdyd(byte zp($20) x, byte register(X) y, byte zp($11) x1, byte zp($f) xd, byte zp($e) yd)
|
||||||
bitmap_line_xdyd: {
|
bitmap_line_xdyd: {
|
||||||
.label x = $1c
|
.label x = $20
|
||||||
.label x1 = $11
|
.label x1 = $11
|
||||||
.label xd = $f
|
.label xd = $f
|
||||||
.label yd = $e
|
.label yd = $e
|
||||||
@ -3129,9 +3139,9 @@ bitmap_line_xdyd: {
|
|||||||
}
|
}
|
||||||
// bitmap_plot(byte register(Y) x, byte register(X) y)
|
// bitmap_plot(byte register(Y) x, byte register(X) y)
|
||||||
bitmap_plot: {
|
bitmap_plot: {
|
||||||
.label plotter_x = $1d
|
.label plotter_x = $21
|
||||||
.label plotter_y = $1f
|
.label plotter_y = $23
|
||||||
.label plotter = $1d
|
.label plotter = $21
|
||||||
// plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] }
|
// plotter_x = { bitmap_plot_xhi[x], bitmap_plot_xlo[x] }
|
||||||
lda bitmap_plot_xhi,y
|
lda bitmap_plot_xhi,y
|
||||||
sta.z plotter_x+1
|
sta.z plotter_x+1
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@ -198,18 +198,18 @@
|
|||||||
(byte) apply_preset::idx
|
(byte) apply_preset::idx
|
||||||
(byte) apply_preset::idx#0 reg byte a 100910.18181818182
|
(byte) apply_preset::idx#0 reg byte a 100910.18181818182
|
||||||
(byte*) apply_preset::preset
|
(byte*) apply_preset::preset
|
||||||
(byte*) apply_preset::preset#15 preset zp[2]:24 2.00000002E7
|
(byte*) apply_preset::preset#15 preset zp[2]:26 2.00000002E7
|
||||||
(void()) bitmap_clear()
|
(void()) bitmap_clear()
|
||||||
(label) bitmap_clear::@1
|
(label) bitmap_clear::@1
|
||||||
(label) bitmap_clear::@2
|
(label) bitmap_clear::@2
|
||||||
(label) bitmap_clear::@3
|
(label) bitmap_clear::@3
|
||||||
(label) bitmap_clear::@return
|
(label) bitmap_clear::@return
|
||||||
(byte*) bitmap_clear::bitmap
|
(byte*) bitmap_clear::bitmap
|
||||||
(word) bitmap_clear::bitmap#0 bitmap zp[2]:26 1001.0
|
(word) bitmap_clear::bitmap#0 bitmap zp[2]:19 1001.0
|
||||||
(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:26 42000.600000000006
|
(byte*) bitmap_clear::bitmap#1 bitmap zp[2]:19 42000.600000000006
|
||||||
(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:26 155002.0
|
(byte*) bitmap_clear::bitmap#2 bitmap zp[2]:19 155002.0
|
||||||
(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:26 21003.0
|
(byte*) bitmap_clear::bitmap#3 bitmap zp[2]:19 21003.0
|
||||||
(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:26 2002.0
|
(byte*) bitmap_clear::bitmap#5 bitmap zp[2]:19 2002.0
|
||||||
(byte) bitmap_clear::x
|
(byte) bitmap_clear::x
|
||||||
(byte) bitmap_clear::x#1 reg byte x 150001.5
|
(byte) bitmap_clear::x#1 reg byte x 150001.5
|
||||||
(byte) bitmap_clear::x#2 reg byte x 66667.33333333333
|
(byte) bitmap_clear::x#2 reg byte x 66667.33333333333
|
||||||
@ -218,7 +218,7 @@
|
|||||||
(byte) bitmap_clear::y#4 y zp[1]:15 3333.6666666666665
|
(byte) bitmap_clear::y#4 y zp[1]:15 3333.6666666666665
|
||||||
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
(void()) bitmap_init((byte*) bitmap_init::bitmap)
|
||||||
(byte~) bitmap_init::$0 reg byte a 20002.0
|
(byte~) bitmap_init::$0 reg byte a 20002.0
|
||||||
(byte~) bitmap_init::$10 zp[1]:19 5000.5
|
(byte~) bitmap_init::$10 zp[1]:21 5000.5
|
||||||
(byte~) bitmap_init::$7 reg byte a 20002.0
|
(byte~) bitmap_init::$7 reg byte a 20002.0
|
||||||
(byte~) bitmap_init::$8 reg byte a 20002.0
|
(byte~) bitmap_init::$8 reg byte a 20002.0
|
||||||
(byte~) bitmap_init::$9 reg byte a 20002.0
|
(byte~) bitmap_init::$9 reg byte a 20002.0
|
||||||
@ -263,7 +263,7 @@
|
|||||||
(byte) bitmap_line::x0
|
(byte) bitmap_line::x0
|
||||||
(byte) bitmap_line::x0#0 x0 zp[1]:17 3956.956521739131
|
(byte) bitmap_line::x0#0 x0 zp[1]:17 3956.956521739131
|
||||||
(byte) bitmap_line::x1
|
(byte) bitmap_line::x1
|
||||||
(byte) bitmap_line::x1#0 x1 zp[1]:19 4136.818181818182
|
(byte) bitmap_line::x1#0 x1 zp[1]:21 4136.818181818182
|
||||||
(byte) bitmap_line::xd
|
(byte) bitmap_line::xd
|
||||||
(byte) bitmap_line::xd#1 xd zp[1]:15 3500.3500000000004
|
(byte) bitmap_line::xd#1 xd zp[1]:15 3500.3500000000004
|
||||||
(byte) bitmap_line::xd#2 xd zp[1]:15 3500.3500000000004
|
(byte) bitmap_line::xd#2 xd zp[1]:15 3500.3500000000004
|
||||||
@ -290,11 +290,11 @@
|
|||||||
(byte) bitmap_line_xdyd::e#3 e zp[1]:18 4020000.5999999996
|
(byte) bitmap_line_xdyd::e#3 e zp[1]:18 4020000.5999999996
|
||||||
(byte) bitmap_line_xdyd::e#6 e zp[1]:18 1.0000001E7
|
(byte) bitmap_line_xdyd::e#6 e zp[1]:18 1.0000001E7
|
||||||
(byte) bitmap_line_xdyd::x
|
(byte) bitmap_line_xdyd::x
|
||||||
(byte) bitmap_line_xdyd::x#0 x zp[1]:28 4000.4
|
(byte) bitmap_line_xdyd::x#0 x zp[1]:32 4000.4
|
||||||
(byte) bitmap_line_xdyd::x#1 x zp[1]:28 4000.4
|
(byte) bitmap_line_xdyd::x#1 x zp[1]:32 4000.4
|
||||||
(byte) bitmap_line_xdyd::x#2 x zp[1]:28 3750000.375
|
(byte) bitmap_line_xdyd::x#2 x zp[1]:32 3750000.375
|
||||||
(byte) bitmap_line_xdyd::x#3 x zp[1]:28 7525001.0
|
(byte) bitmap_line_xdyd::x#3 x zp[1]:32 7525001.0
|
||||||
(byte) bitmap_line_xdyd::x#6 x zp[1]:28 60001.5
|
(byte) bitmap_line_xdyd::x#6 x zp[1]:32 60001.5
|
||||||
(byte) bitmap_line_xdyd::x1
|
(byte) bitmap_line_xdyd::x1
|
||||||
(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:17 6667.333333333333
|
(byte) bitmap_line_xdyd::x1#0 x1 zp[1]:17 6667.333333333333
|
||||||
(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:17 6667.333333333333
|
(byte) bitmap_line_xdyd::x1#1 x1 zp[1]:17 6667.333333333333
|
||||||
@ -334,9 +334,9 @@
|
|||||||
(byte) bitmap_line_xdyi::x#3 x zp[1]:14 7525001.0
|
(byte) bitmap_line_xdyi::x#3 x zp[1]:14 7525001.0
|
||||||
(byte) bitmap_line_xdyi::x#6 x zp[1]:14 60001.5
|
(byte) bitmap_line_xdyi::x#6 x zp[1]:14 60001.5
|
||||||
(byte) bitmap_line_xdyi::x1
|
(byte) bitmap_line_xdyi::x1
|
||||||
(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:19 6667.333333333333
|
(byte) bitmap_line_xdyi::x1#0 x1 zp[1]:21 6667.333333333333
|
||||||
(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:19 6667.333333333333
|
(byte) bitmap_line_xdyi::x1#1 x1 zp[1]:21 6667.333333333333
|
||||||
(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:19 715714.5
|
(byte) bitmap_line_xdyi::x1#6 x1 zp[1]:21 715714.5
|
||||||
(byte) bitmap_line_xdyi::xd
|
(byte) bitmap_line_xdyi::xd
|
||||||
(byte) bitmap_line_xdyi::xd#0 xd zp[1]:15 10001.0
|
(byte) bitmap_line_xdyi::xd#0 xd zp[1]:15 10001.0
|
||||||
(byte) bitmap_line_xdyi::xd#1 xd zp[1]:15 10001.0
|
(byte) bitmap_line_xdyi::xd#1 xd zp[1]:15 10001.0
|
||||||
@ -360,11 +360,11 @@
|
|||||||
(label) bitmap_line_ydxd::@4
|
(label) bitmap_line_ydxd::@4
|
||||||
(label) bitmap_line_ydxd::@return
|
(label) bitmap_line_ydxd::@return
|
||||||
(byte) bitmap_line_ydxd::e
|
(byte) bitmap_line_ydxd::e
|
||||||
(byte) bitmap_line_ydxd::e#0 e zp[1]:28 200002.0
|
(byte) bitmap_line_ydxd::e#0 e zp[1]:32 200002.0
|
||||||
(byte) bitmap_line_ydxd::e#1 e zp[1]:28 1.3333334666666666E7
|
(byte) bitmap_line_ydxd::e#1 e zp[1]:32 1.3333334666666666E7
|
||||||
(byte) bitmap_line_ydxd::e#2 e zp[1]:28 2.0000002E7
|
(byte) bitmap_line_ydxd::e#2 e zp[1]:32 2.0000002E7
|
||||||
(byte) bitmap_line_ydxd::e#3 e zp[1]:28 4020000.5999999996
|
(byte) bitmap_line_ydxd::e#3 e zp[1]:32 4020000.5999999996
|
||||||
(byte) bitmap_line_ydxd::e#6 e zp[1]:28 1.0000001E7
|
(byte) bitmap_line_ydxd::e#6 e zp[1]:32 1.0000001E7
|
||||||
(byte) bitmap_line_ydxd::x
|
(byte) bitmap_line_ydxd::x
|
||||||
(byte) bitmap_line_ydxd::x#0 x zp[1]:17 5000.5
|
(byte) bitmap_line_ydxd::x#0 x zp[1]:17 5000.5
|
||||||
(byte) bitmap_line_ydxd::x#1 x zp[1]:17 5000.5
|
(byte) bitmap_line_ydxd::x#1 x zp[1]:17 5000.5
|
||||||
@ -398,11 +398,11 @@
|
|||||||
(label) bitmap_line_ydxi::@4
|
(label) bitmap_line_ydxi::@4
|
||||||
(label) bitmap_line_ydxi::@return
|
(label) bitmap_line_ydxi::@return
|
||||||
(byte) bitmap_line_ydxi::e
|
(byte) bitmap_line_ydxi::e
|
||||||
(byte) bitmap_line_ydxi::e#0 e zp[1]:19 200002.0
|
(byte) bitmap_line_ydxi::e#0 e zp[1]:21 200002.0
|
||||||
(byte) bitmap_line_ydxi::e#1 e zp[1]:19 1.3333334666666666E7
|
(byte) bitmap_line_ydxi::e#1 e zp[1]:21 1.3333334666666666E7
|
||||||
(byte) bitmap_line_ydxi::e#2 e zp[1]:19 2.0000002E7
|
(byte) bitmap_line_ydxi::e#2 e zp[1]:21 2.0000002E7
|
||||||
(byte) bitmap_line_ydxi::e#3 e zp[1]:19 4020000.5999999996
|
(byte) bitmap_line_ydxi::e#3 e zp[1]:21 4020000.5999999996
|
||||||
(byte) bitmap_line_ydxi::e#6 e zp[1]:19 1.0000001E7
|
(byte) bitmap_line_ydxi::e#6 e zp[1]:21 1.0000001E7
|
||||||
(byte) bitmap_line_ydxi::x
|
(byte) bitmap_line_ydxi::x
|
||||||
(byte) bitmap_line_ydxi::x#0 x zp[1]:17 5000.5
|
(byte) bitmap_line_ydxi::x#0 x zp[1]:17 5000.5
|
||||||
(byte) bitmap_line_ydxi::x#1 x zp[1]:17 5000.5
|
(byte) bitmap_line_ydxi::x#1 x zp[1]:17 5000.5
|
||||||
@ -432,11 +432,11 @@
|
|||||||
(byte~) bitmap_plot::$1 reg byte a 2.00000002E8
|
(byte~) bitmap_plot::$1 reg byte a 2.00000002E8
|
||||||
(label) bitmap_plot::@return
|
(label) bitmap_plot::@return
|
||||||
(byte*) bitmap_plot::plotter
|
(byte*) bitmap_plot::plotter
|
||||||
(word) bitmap_plot::plotter#0 plotter zp[2]:29 5.00000005E7
|
(word) bitmap_plot::plotter#0 plotter zp[2]:33 5.00000005E7
|
||||||
(word) bitmap_plot::plotter_x
|
(word) bitmap_plot::plotter_x
|
||||||
(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:29 1.00000001E8
|
(word) bitmap_plot::plotter_x#0 plotter_x zp[2]:33 1.00000001E8
|
||||||
(word) bitmap_plot::plotter_y
|
(word) bitmap_plot::plotter_y
|
||||||
(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:31 2.00000002E8
|
(word) bitmap_plot::plotter_y#0 plotter_y zp[2]:35 2.00000002E8
|
||||||
(byte) bitmap_plot::x
|
(byte) bitmap_plot::x
|
||||||
(byte) bitmap_plot::x#0 reg byte y 1.0000001E7
|
(byte) bitmap_plot::x#0 reg byte y 1.0000001E7
|
||||||
(byte) bitmap_plot::x#1 reg byte y 1.0000001E7
|
(byte) bitmap_plot::x#1 reg byte y 1.0000001E7
|
||||||
@ -506,7 +506,7 @@
|
|||||||
(label) form_control::@9
|
(label) form_control::@9
|
||||||
(label) form_control::@return
|
(label) form_control::@return
|
||||||
(byte*) form_control::field
|
(byte*) form_control::field
|
||||||
(byte*) form_control::field#0 field zp[2]:31 296296.5925925926
|
(byte*) form_control::field#0 field zp[2]:19 296296.5925925926
|
||||||
(byte) form_control::key_event
|
(byte) form_control::key_event
|
||||||
(byte) form_control::key_event#0 reg byte a 1333334.6666666667
|
(byte) form_control::key_event#0 reg byte a 1333334.6666666667
|
||||||
(byte) form_control::return
|
(byte) form_control::return
|
||||||
@ -543,12 +543,12 @@
|
|||||||
(byte) form_field_ptr::field_idx#1 reg byte x 2000002.0
|
(byte) form_field_ptr::field_idx#1 reg byte x 2000002.0
|
||||||
(byte) form_field_ptr::field_idx#2 reg byte x 7.003333346666667E8
|
(byte) form_field_ptr::field_idx#2 reg byte x 7.003333346666667E8
|
||||||
(byte*) form_field_ptr::line
|
(byte*) form_field_ptr::line
|
||||||
(word) form_field_ptr::line#0 line zp[2]:29 2.000000002E8
|
(word) form_field_ptr::line#0 line zp[2]:30 2.000000002E8
|
||||||
(byte*) form_field_ptr::return
|
(byte*) form_field_ptr::return
|
||||||
(byte*) form_field_ptr::return#0 return zp[2]:31 3.336666673333334E8
|
(byte*) form_field_ptr::return#0 return zp[2]:19 3.336666673333334E8
|
||||||
(byte*) form_field_ptr::return#3 return zp[2]:31 2000002.0
|
(byte*) form_field_ptr::return#3 return zp[2]:19 2000002.0
|
||||||
(byte) form_field_ptr::x
|
(byte) form_field_ptr::x
|
||||||
(byte) form_field_ptr::x#0 x zp[1]:28 5.2500000075E8
|
(byte) form_field_ptr::x#0 x zp[1]:32 5.2500000075E8
|
||||||
(byte) form_field_ptr::y
|
(byte) form_field_ptr::y
|
||||||
(byte) form_field_ptr::y#0 reg byte y 3.000000003E9
|
(byte) form_field_ptr::y#0 reg byte y 3.000000003E9
|
||||||
(const byte) form_fields_cnt = (byte) $24
|
(const byte) form_fields_cnt = (byte) $24
|
||||||
@ -704,7 +704,7 @@
|
|||||||
(byte) gfx_init_charset::l#1 reg byte x 15001.5
|
(byte) gfx_init_charset::l#1 reg byte x 15001.5
|
||||||
(byte) gfx_init_charset::l#2 reg byte x 5000.5
|
(byte) gfx_init_charset::l#2 reg byte x 5000.5
|
||||||
(void()) gfx_init_plane_8bppchunky()
|
(void()) gfx_init_plane_8bppchunky()
|
||||||
(word~) gfx_init_plane_8bppchunky::$5 zp[2]:29 10001.0
|
(word~) gfx_init_plane_8bppchunky::$5 zp[2]:35 10001.0
|
||||||
(label) gfx_init_plane_8bppchunky::@1
|
(label) gfx_init_plane_8bppchunky::@1
|
||||||
(label) gfx_init_plane_8bppchunky::@2
|
(label) gfx_init_plane_8bppchunky::@2
|
||||||
(label) gfx_init_plane_8bppchunky::@3
|
(label) gfx_init_plane_8bppchunky::@3
|
||||||
@ -778,10 +778,10 @@
|
|||||||
(byte) gfx_init_plane_charset8::gfxbCpuBank
|
(byte) gfx_init_plane_charset8::gfxbCpuBank
|
||||||
(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = (byte)(const nomodify dword) PLANE_CHARSET8/(word) $4000
|
(const byte) gfx_init_plane_charset8::gfxbCpuBank#0 gfxbCpuBank = (byte)(const nomodify dword) PLANE_CHARSET8/(word) $4000
|
||||||
(void()) gfx_init_plane_fill((dword) gfx_init_plane_fill::plane_addr , (byte) gfx_init_plane_fill::fill)
|
(void()) gfx_init_plane_fill((dword) gfx_init_plane_fill::plane_addr , (byte) gfx_init_plane_fill::fill)
|
||||||
(dword~) gfx_init_plane_fill::$0 zp[4]:20 2002.0
|
(dword~) gfx_init_plane_fill::$0 zp[4]:22 2002.0
|
||||||
(word~) gfx_init_plane_fill::$1 zp[2]:24 2002.0
|
(word~) gfx_init_plane_fill::$1 zp[2]:26 2002.0
|
||||||
(word~) gfx_init_plane_fill::$4 zp[2]:26 2002.0
|
(word~) gfx_init_plane_fill::$4 zp[2]:19 2002.0
|
||||||
(word~) gfx_init_plane_fill::$5 zp[2]:26 2002.0
|
(word~) gfx_init_plane_fill::$5 zp[2]:19 2002.0
|
||||||
(label) gfx_init_plane_fill::@1
|
(label) gfx_init_plane_fill::@1
|
||||||
(label) gfx_init_plane_fill::@2
|
(label) gfx_init_plane_fill::@2
|
||||||
(label) gfx_init_plane_fill::@3
|
(label) gfx_init_plane_fill::@3
|
||||||
@ -797,11 +797,11 @@
|
|||||||
(byte) gfx_init_plane_fill::fill
|
(byte) gfx_init_plane_fill::fill
|
||||||
(byte) gfx_init_plane_fill::fill#6 fill zp[1]:16 5555.611111111111
|
(byte) gfx_init_plane_fill::fill#6 fill zp[1]:16 5555.611111111111
|
||||||
(byte*) gfx_init_plane_fill::gfxb
|
(byte*) gfx_init_plane_fill::gfxb
|
||||||
(word) gfx_init_plane_fill::gfxb#0 gfxb zp[2]:26 1001.0
|
(word) gfx_init_plane_fill::gfxb#0 gfxb zp[2]:19 1001.0
|
||||||
(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp[2]:26 42000.600000000006
|
(byte*) gfx_init_plane_fill::gfxb#1 gfxb zp[2]:19 42000.600000000006
|
||||||
(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp[2]:26 155002.0
|
(byte*) gfx_init_plane_fill::gfxb#2 gfxb zp[2]:19 155002.0
|
||||||
(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp[2]:26 21003.0
|
(byte*) gfx_init_plane_fill::gfxb#3 gfxb zp[2]:19 21003.0
|
||||||
(byte*) gfx_init_plane_fill::gfxb#6 gfxb zp[2]:26 2002.0
|
(byte*) gfx_init_plane_fill::gfxb#6 gfxb zp[2]:19 2002.0
|
||||||
(byte) gfx_init_plane_fill::gfxbCpuBank
|
(byte) gfx_init_plane_fill::gfxbCpuBank
|
||||||
(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 2002.0
|
(byte) gfx_init_plane_fill::gfxbCpuBank#0 reg byte a 2002.0
|
||||||
(dword) gfx_init_plane_fill::plane_addr
|
(dword) gfx_init_plane_fill::plane_addr
|
||||||
@ -981,10 +981,11 @@
|
|||||||
(void()) gfx_mode()
|
(void()) gfx_mode()
|
||||||
(byte~) gfx_mode::$18 reg byte a 202.0
|
(byte~) gfx_mode::$18 reg byte a 202.0
|
||||||
(dword~) gfx_mode::$20 zp[4]:9 202.0
|
(dword~) gfx_mode::$20 zp[4]:9 202.0
|
||||||
|
(word~) gfx_mode::$22 zp[2]:35 202.0
|
||||||
(byte~) gfx_mode::$23 reg byte a 202.0
|
(byte~) gfx_mode::$23 reg byte a 202.0
|
||||||
(word~) gfx_mode::$24 zp[2]:29 101.0
|
(word~) gfx_mode::$24 zp[2]:19 202.0
|
||||||
(byte~) gfx_mode::$25 reg byte a 202.0
|
(byte~) gfx_mode::$25 reg byte a 202.0
|
||||||
(word~) gfx_mode::$26 zp[2]:31 202.0
|
(word~) gfx_mode::$26 zp[2]:26 202.0
|
||||||
(byte~) gfx_mode::$27 reg byte a 202.0
|
(byte~) gfx_mode::$27 reg byte a 202.0
|
||||||
(byte~) gfx_mode::$28 reg byte a 202.0
|
(byte~) gfx_mode::$28 reg byte a 202.0
|
||||||
(byte~) gfx_mode::$29 reg byte a 202.0
|
(byte~) gfx_mode::$29 reg byte a 202.0
|
||||||
@ -992,10 +993,11 @@
|
|||||||
(byte~) gfx_mode::$31 reg byte a 202.0
|
(byte~) gfx_mode::$31 reg byte a 202.0
|
||||||
(byte~) gfx_mode::$32 reg byte a 202.0
|
(byte~) gfx_mode::$32 reg byte a 202.0
|
||||||
(dword~) gfx_mode::$34 zp[4]:9 202.0
|
(dword~) gfx_mode::$34 zp[4]:9 202.0
|
||||||
|
(word~) gfx_mode::$36 zp[2]:28 202.0
|
||||||
(byte~) gfx_mode::$37 reg byte a 202.0
|
(byte~) gfx_mode::$37 reg byte a 202.0
|
||||||
(word~) gfx_mode::$38 zp[2]:24 101.0
|
(word~) gfx_mode::$38 zp[2]:30 202.0
|
||||||
(byte~) gfx_mode::$39 reg byte a 202.0
|
(byte~) gfx_mode::$39 reg byte a 202.0
|
||||||
(word~) gfx_mode::$40 zp[2]:26 202.0
|
(word~) gfx_mode::$40 zp[2]:33 202.0
|
||||||
(byte~) gfx_mode::$41 reg byte a 202.0
|
(byte~) gfx_mode::$41 reg byte a 202.0
|
||||||
(byte~) gfx_mode::$42 reg byte a 202.0
|
(byte~) gfx_mode::$42 reg byte a 202.0
|
||||||
(byte~) gfx_mode::$43 reg byte a 202.0
|
(byte~) gfx_mode::$43 reg byte a 202.0
|
||||||
@ -1083,11 +1085,11 @@
|
|||||||
(byte) gfx_mode::keyboard_event
|
(byte) gfx_mode::keyboard_event
|
||||||
(byte) gfx_mode::keyboard_event#0 reg byte a 20002.0
|
(byte) gfx_mode::keyboard_event#0 reg byte a 20002.0
|
||||||
(dword) gfx_mode::plane_a
|
(dword) gfx_mode::plane_a
|
||||||
(dword) gfx_mode::plane_a#0 plane_a zp[4]:9 50.5
|
(dword) gfx_mode::plane_a#0 plane_a zp[4]:9 57.714285714285715
|
||||||
(byte) gfx_mode::plane_a_offs
|
(byte) gfx_mode::plane_a_offs
|
||||||
(byte) gfx_mode::plane_a_offs#0 reg byte x 40.4
|
(byte) gfx_mode::plane_a_offs#0 reg byte x 40.4
|
||||||
(dword) gfx_mode::plane_b
|
(dword) gfx_mode::plane_b
|
||||||
(dword) gfx_mode::plane_b#0 plane_b zp[4]:9 50.5
|
(dword) gfx_mode::plane_b#0 plane_b zp[4]:9 57.714285714285715
|
||||||
(byte) gfx_mode::plane_b_offs
|
(byte) gfx_mode::plane_b_offs
|
||||||
(byte) gfx_mode::plane_b_offs#0 reg byte x 40.4
|
(byte) gfx_mode::plane_b_offs#0 reg byte x 40.4
|
||||||
(byte*) gfx_mode::vic_colors
|
(byte*) gfx_mode::vic_colors
|
||||||
@ -1122,7 +1124,7 @@
|
|||||||
(byte) keyboard_event_pressed::return#2 reg byte a 2.0000002E7
|
(byte) keyboard_event_pressed::return#2 reg byte a 2.0000002E7
|
||||||
(byte) keyboard_event_pressed::return#3 reg byte a 2.0000002E7
|
(byte) keyboard_event_pressed::return#3 reg byte a 2.0000002E7
|
||||||
(byte) keyboard_event_pressed::row_bits
|
(byte) keyboard_event_pressed::row_bits
|
||||||
(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:28 1.00000001E8
|
(byte) keyboard_event_pressed::row_bits#0 row_bits zp[1]:32 1.00000001E8
|
||||||
(void()) keyboard_event_scan()
|
(void()) keyboard_event_scan()
|
||||||
(byte~) keyboard_event_scan::$0 reg byte a 2.0000002E7
|
(byte~) keyboard_event_scan::$0 reg byte a 2.0000002E7
|
||||||
(byte~) keyboard_event_scan::$15 reg byte a 2.000000000002E12
|
(byte~) keyboard_event_scan::$15 reg byte a 2.000000000002E12
|
||||||
@ -1170,7 +1172,7 @@
|
|||||||
(byte) keyboard_event_scan::row#1 row zp[1]:13 1.500000000015E11
|
(byte) keyboard_event_scan::row#1 row zp[1]:13 1.500000000015E11
|
||||||
(byte) keyboard_event_scan::row#2 row zp[1]:13 6.000000000024E10
|
(byte) keyboard_event_scan::row#2 row zp[1]:13 6.000000000024E10
|
||||||
(byte) keyboard_event_scan::row_scan
|
(byte) keyboard_event_scan::row_scan
|
||||||
(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:19 1.2777777777805557E11
|
(byte) keyboard_event_scan::row_scan#0 row_scan zp[1]:21 1.2777777777805557E11
|
||||||
(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
|
(const byte*) keyboard_events[(number) 8] = { fill( 8, 0) }
|
||||||
(byte) keyboard_events_size
|
(byte) keyboard_events_size
|
||||||
(byte) keyboard_events_size#0 keyboard_events_size zp[1]:16 2.000000000002E12
|
(byte) keyboard_events_size#0 keyboard_events_size zp[1]:16 2.000000000002E12
|
||||||
@ -1179,7 +1181,7 @@
|
|||||||
(byte) keyboard_events_size#106 keyboard_events_size zp[1]:16 1.0200000000012E12
|
(byte) keyboard_events_size#106 keyboard_events_size zp[1]:16 1.0200000000012E12
|
||||||
(byte) keyboard_events_size#107 keyboard_events_size zp[1]:16 4.285857142914285E10
|
(byte) keyboard_events_size#107 keyboard_events_size zp[1]:16 4.285857142914285E10
|
||||||
(byte) keyboard_events_size#19 keyboard_events_size zp[1]:16 8.100000000008999E11
|
(byte) keyboard_events_size#19 keyboard_events_size zp[1]:16 8.100000000008999E11
|
||||||
(byte) keyboard_events_size#25 keyboard_events_size zp[1]:16 111777.86666666667
|
(byte) keyboard_events_size#25 keyboard_events_size zp[1]:16 110549.53846153847
|
||||||
(byte) keyboard_events_size#28 keyboard_events_size zp[1]:16 2.871794871794872
|
(byte) keyboard_events_size#28 keyboard_events_size zp[1]:16 2.871794871794872
|
||||||
(byte) keyboard_events_size#3 keyboard_events_size zp[1]:16 1.50000015E7
|
(byte) keyboard_events_size#3 keyboard_events_size zp[1]:16 1.50000015E7
|
||||||
(byte) keyboard_events_size#49 keyboard_events_size zp[1]:16 65300.23529411765
|
(byte) keyboard_events_size#49 keyboard_events_size zp[1]:16 65300.23529411765
|
||||||
@ -1218,16 +1220,16 @@
|
|||||||
(byte) memset::c
|
(byte) memset::c
|
||||||
(const byte) memset::c#0 c = (byte) ' '
|
(const byte) memset::c#0 c = (byte) ' '
|
||||||
(byte*) memset::dst
|
(byte*) memset::dst
|
||||||
(byte*) memset::dst#1 dst zp[2]:24 2000002.0
|
(byte*) memset::dst#1 dst zp[2]:26 2000002.0
|
||||||
(byte*) memset::dst#2 dst zp[2]:24 1336668.3333333335
|
(byte*) memset::dst#2 dst zp[2]:26 1336668.3333333335
|
||||||
(byte*) memset::dst#4 dst zp[2]:24 20002.0
|
(byte*) memset::dst#4 dst zp[2]:26 20002.0
|
||||||
(byte*) memset::end
|
(byte*) memset::end
|
||||||
(byte*) memset::end#0 end zp[2]:26 168333.6666666667
|
(byte*) memset::end#0 end zp[2]:28 168333.6666666667
|
||||||
(word) memset::num
|
(word) memset::num
|
||||||
(const word) memset::num#0 num = (word) $3e8
|
(const word) memset::num#0 num = (word) $3e8
|
||||||
(void*) memset::return
|
(void*) memset::return
|
||||||
(void*) memset::str
|
(void*) memset::str
|
||||||
(void*) memset::str#0 str zp[2]:24 333.6666666666667
|
(void*) memset::str#0 str zp[2]:26 333.6666666666667
|
||||||
(const byte*) preset_8bpppixelcell[] = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
|
(const byte*) preset_8bpppixelcell[] = { (byte) $a, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) $b, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
|
||||||
(const byte*) preset_chunky[] = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
|
(const byte*) preset_chunky[] = { (byte) 7, (byte) 0, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 6, (byte) 0, (byte) 0, (byte) 0, (byte) 8, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }
|
||||||
(const byte*) preset_ecmchar[] = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 }
|
(const byte*) preset_ecmchar[] = { (byte) 1, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 1, (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 2, (byte) 0, (byte) 5, (byte) 0, (byte) 6 }
|
||||||
@ -1244,12 +1246,12 @@
|
|||||||
(byte) print_char::ch
|
(byte) print_char::ch
|
||||||
(byte) print_char::ch#0 reg byte a 1.1000002E7
|
(byte) print_char::ch#0 reg byte a 1.1000002E7
|
||||||
(byte*) print_char_cursor
|
(byte*) print_char_cursor
|
||||||
(byte*) print_char_cursor#2 print_char_cursor zp[2]:24 100501.5
|
(byte*) print_char_cursor#2 print_char_cursor zp[2]:26 100501.5
|
||||||
(byte*) print_char_cursor#29 print_char_cursor zp[2]:24 3666667.333333333
|
(byte*) print_char_cursor#29 print_char_cursor zp[2]:26 3666667.333333333
|
||||||
(byte*) print_char_cursor#43 print_char_cursor zp[2]:24 3683334.1666666665
|
(byte*) print_char_cursor#43 print_char_cursor zp[2]:26 3683334.1666666665
|
||||||
(byte*) print_char_cursor#44 print_char_cursor zp[2]:24 1.4328571485714287E8
|
(byte*) print_char_cursor#44 print_char_cursor zp[2]:26 1.4328571485714287E8
|
||||||
(byte*) print_char_cursor#72 print_char_cursor zp[2]:24 2002.0
|
(byte*) print_char_cursor#72 print_char_cursor zp[2]:26 2002.0
|
||||||
(byte*) print_char_cursor#73 print_char_cursor zp[2]:24 200002.0
|
(byte*) print_char_cursor#73 print_char_cursor zp[2]:26 200002.0
|
||||||
(void()) print_cls()
|
(void()) print_cls()
|
||||||
(label) print_cls::@return
|
(label) print_cls::@return
|
||||||
(const to_nomodify byte*) print_hextab[] = (byte*) "0123456789abcdef"z
|
(const to_nomodify byte*) print_hextab[] = (byte*) "0123456789abcdef"z
|
||||||
@ -1271,12 +1273,12 @@
|
|||||||
(label) print_str_at::@2
|
(label) print_str_at::@2
|
||||||
(label) print_str_at::@return
|
(label) print_str_at::@return
|
||||||
(byte*) print_str_at::at
|
(byte*) print_str_at::at
|
||||||
(byte*) print_str_at::at#0 at zp[2]:24 1.000000001E9
|
(byte*) print_str_at::at#0 at zp[2]:26 1.000000001E9
|
||||||
(byte*) print_str_at::at#2 at zp[2]:24 1.000000001E9
|
(byte*) print_str_at::at#2 at zp[2]:26 1.000000001E9
|
||||||
(byte*) print_str_at::str
|
(byte*) print_str_at::str
|
||||||
(byte*) print_str_at::str#0 str zp[2]:26 2.000000002E9
|
(byte*) print_str_at::str#0 str zp[2]:19 2.000000002E9
|
||||||
(byte*) print_str_at::str#1 str zp[2]:26 550001.0
|
(byte*) print_str_at::str#1 str zp[2]:19 550001.0
|
||||||
(byte*) print_str_at::str#2 str zp[2]:26 1.00025000125E9
|
(byte*) print_str_at::str#2 str zp[2]:19 1.00025000125E9
|
||||||
(void()) print_str_lines((byte*) print_str_lines::str)
|
(void()) print_str_lines((byte*) print_str_lines::str)
|
||||||
(label) print_str_lines::@1
|
(label) print_str_lines::@1
|
||||||
(label) print_str_lines::@2
|
(label) print_str_lines::@2
|
||||||
@ -1288,10 +1290,10 @@
|
|||||||
(byte) print_str_lines::ch
|
(byte) print_str_lines::ch
|
||||||
(byte) print_str_lines::ch#0 reg byte a 666667.3333333334
|
(byte) print_str_lines::ch#0 reg byte a 666667.3333333334
|
||||||
(byte*) print_str_lines::str
|
(byte*) print_str_lines::str
|
||||||
(byte*) print_str_lines::str#0 str zp[2]:26 233333.66666666666
|
(byte*) print_str_lines::str#0 str zp[2]:19 233333.66666666666
|
||||||
(byte*) print_str_lines::str#3 str zp[2]:26 150502.0
|
(byte*) print_str_lines::str#3 str zp[2]:19 150502.0
|
||||||
(byte*) print_str_lines::str#4 str zp[2]:26 1550002.0
|
(byte*) print_str_lines::str#4 str zp[2]:19 1550002.0
|
||||||
(byte*) print_str_lines::str#5 str zp[2]:26 500.5
|
(byte*) print_str_lines::str#5 str zp[2]:19 500.5
|
||||||
(void()) render_preset_name((byte) render_preset_name::idx)
|
(void()) render_preset_name((byte) render_preset_name::idx)
|
||||||
(label) render_preset_name::@1
|
(label) render_preset_name::@1
|
||||||
(label) render_preset_name::@10
|
(label) render_preset_name::@10
|
||||||
@ -1314,7 +1316,7 @@
|
|||||||
(const byte*) render_preset_name::name#1 name_1 = (byte*) "Standard Charset "
|
(const byte*) render_preset_name::name#1 name_1 = (byte*) "Standard Charset "
|
||||||
(const byte*) render_preset_name::name#10 name_10 = (byte*) "Sixs Fred 2 "
|
(const byte*) render_preset_name::name#10 name_10 = (byte*) "Sixs Fred 2 "
|
||||||
(const byte*) render_preset_name::name#11 name_11 = (byte*) "8bpp Pixel Cell "
|
(const byte*) render_preset_name::name#11 name_11 = (byte*) "8bpp Pixel Cell "
|
||||||
(byte*) render_preset_name::name#13 name zp[2]:26 100001.0
|
(byte*) render_preset_name::name#13 name zp[2]:19 100001.0
|
||||||
(const byte*) render_preset_name::name#2 name_2 = (byte*) "Extended Color Charset "
|
(const byte*) render_preset_name::name#2 name_2 = (byte*) "Extended Color Charset "
|
||||||
(const byte*) render_preset_name::name#3 name_3 = (byte*) "Standard Bitmap "
|
(const byte*) render_preset_name::name#3 name_3 = (byte*) "Standard Bitmap "
|
||||||
(const byte*) render_preset_name::name#4 name_4 = (byte*) "Multicolor Bitmap "
|
(const byte*) render_preset_name::name#4 name_4 = (byte*) "Multicolor Bitmap "
|
||||||
@ -1432,6 +1434,7 @@ reg byte a [ print_str_lines::ch#0 ]
|
|||||||
reg byte a [ print_char::ch#0 ]
|
reg byte a [ print_char::ch#0 ]
|
||||||
reg byte a [ form_set_screen::$0 ]
|
reg byte a [ form_set_screen::$0 ]
|
||||||
reg byte a [ form_set_screen::$1 ]
|
reg byte a [ form_set_screen::$1 ]
|
||||||
|
zp[2]:19 [ form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 gfx_mode::$24 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::gfxb#0 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ]
|
||||||
reg byte a [ form_control::$12 ]
|
reg byte a [ form_control::$12 ]
|
||||||
reg byte a [ keyboard_event_get::return#4 ]
|
reg byte a [ keyboard_event_get::return#4 ]
|
||||||
reg byte a [ form_control::key_event#0 ]
|
reg byte a [ form_control::key_event#0 ]
|
||||||
@ -1454,7 +1457,7 @@ reg byte a [ keyboard_event_scan::$16 ]
|
|||||||
reg byte a [ keyboard_event_scan::event_type#0 ]
|
reg byte a [ keyboard_event_scan::event_type#0 ]
|
||||||
reg byte a [ keyboard_event_scan::$23 ]
|
reg byte a [ keyboard_event_scan::$23 ]
|
||||||
reg byte a [ bitmap_init::$0 ]
|
reg byte a [ bitmap_init::$0 ]
|
||||||
zp[1]:19 [ bitmap_init::$10 keyboard_event_scan::row_scan#0 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
zp[1]:21 [ bitmap_init::$10 keyboard_event_scan::row_scan#0 bitmap_line_xdyi::x1#6 bitmap_line_xdyi::x1#1 bitmap_line_xdyi::x1#0 bitmap_line::x1#0 bitmap_line_ydxi::e#3 bitmap_line_ydxi::e#0 bitmap_line_ydxi::e#6 bitmap_line_ydxi::e#2 bitmap_line_ydxi::e#1 ]
|
||||||
reg byte a [ bitmap_init::$7 ]
|
reg byte a [ bitmap_init::$7 ]
|
||||||
reg byte a [ bitmap_init::$8 ]
|
reg byte a [ bitmap_init::$8 ]
|
||||||
reg byte a [ bitmap_init::$9 ]
|
reg byte a [ bitmap_init::$9 ]
|
||||||
@ -1462,20 +1465,21 @@ reg byte y [ bitmap_line::yd#2 ]
|
|||||||
reg byte y [ bitmap_line::yd#1 ]
|
reg byte y [ bitmap_line::yd#1 ]
|
||||||
reg byte y [ bitmap_line::yd#10 ]
|
reg byte y [ bitmap_line::yd#10 ]
|
||||||
reg byte y [ bitmap_line::yd#11 ]
|
reg byte y [ bitmap_line::yd#11 ]
|
||||||
zp[4]:20 [ gfx_init_plane_fill::$0 ]
|
zp[4]:22 [ gfx_init_plane_fill::$0 ]
|
||||||
zp[2]:24 [ gfx_init_plane_fill::$1 gfx_mode::$38 print_str_at::at#2 print_str_at::at#0 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 apply_preset::preset#15 print_char_cursor#43 print_char_cursor#2 print_char_cursor#72 print_char_cursor#73 print_char_cursor#44 print_char_cursor#29 ]
|
zp[2]:26 [ gfx_init_plane_fill::$1 gfx_mode::$26 print_str_at::at#2 print_str_at::at#0 memset::dst#2 memset::dst#4 memset::dst#1 memset::str#0 apply_preset::preset#15 print_char_cursor#43 print_char_cursor#2 print_char_cursor#72 print_char_cursor#73 print_char_cursor#44 print_char_cursor#29 ]
|
||||||
reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ]
|
reg byte a [ gfx_init_plane_fill::gfxbCpuBank#0 ]
|
||||||
zp[2]:26 [ memset::end#0 gfx_mode::$40 gfx_init_plane_fill::gfxb#2 gfx_init_plane_fill::gfxb#3 gfx_init_plane_fill::gfxb#1 gfx_init_plane_fill::gfxb#6 gfx_init_plane_fill::gfxb#0 gfx_init_plane_fill::$4 gfx_init_plane_fill::$5 bitmap_clear::bitmap#2 bitmap_clear::bitmap#3 bitmap_clear::bitmap#5 bitmap_clear::bitmap#1 bitmap_clear::bitmap#0 render_preset_name::name#13 print_str_at::str#2 print_str_at::str#1 print_str_at::str#0 print_str_lines::str#4 print_str_lines::str#3 print_str_lines::str#5 print_str_lines::str#0 ]
|
zp[2]:28 [ memset::end#0 gfx_mode::$36 ]
|
||||||
reg byte y [ form_field_ptr::y#0 ]
|
reg byte y [ form_field_ptr::y#0 ]
|
||||||
|
zp[2]:30 [ form_field_ptr::line#0 gfx_mode::$38 ]
|
||||||
reg byte a [ keyboard_matrix_read::return#0 ]
|
reg byte a [ keyboard_matrix_read::return#0 ]
|
||||||
reg byte a [ keyboard_event_pressed::$0 ]
|
reg byte a [ keyboard_event_pressed::$0 ]
|
||||||
zp[1]:28 [ keyboard_event_pressed::row_bits#0 form_field_ptr::x#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
|
zp[1]:32 [ keyboard_event_pressed::row_bits#0 form_field_ptr::x#0 bitmap_line_xdyd::x#3 bitmap_line_xdyd::x#6 bitmap_line_xdyd::x#1 bitmap_line_xdyd::x#0 bitmap_line_xdyd::x#2 bitmap_line_ydxd::e#3 bitmap_line_ydxd::e#0 bitmap_line_ydxd::e#6 bitmap_line_ydxd::e#2 bitmap_line_ydxd::e#1 ]
|
||||||
reg byte a [ keyboard_event_pressed::$1 ]
|
reg byte a [ keyboard_event_pressed::$1 ]
|
||||||
reg byte a [ keyboard_event_pressed::return#10 ]
|
reg byte a [ keyboard_event_pressed::return#10 ]
|
||||||
reg byte x [ bitmap_line_ydxi::$6 ]
|
reg byte x [ bitmap_line_ydxi::$6 ]
|
||||||
reg byte a [ bitmap_line_xdyi::$6 ]
|
reg byte a [ bitmap_line_xdyi::$6 ]
|
||||||
reg byte x [ bitmap_line_ydxd::$6 ]
|
reg byte x [ bitmap_line_ydxd::$6 ]
|
||||||
reg byte a [ bitmap_line_xdyd::$6 ]
|
reg byte a [ bitmap_line_xdyd::$6 ]
|
||||||
zp[2]:29 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 form_field_ptr::line#0 gfx_init_plane_8bppchunky::$5 gfx_mode::$24 ]
|
zp[2]:33 [ bitmap_plot::plotter_x#0 bitmap_plot::plotter#0 gfx_mode::$40 ]
|
||||||
zp[2]:31 [ bitmap_plot::plotter_y#0 form_field_ptr::return#3 form_control::field#0 form_field_ptr::return#0 gfx_mode::$26 ]
|
zp[2]:35 [ bitmap_plot::plotter_y#0 gfx_init_plane_8bppchunky::$5 gfx_mode::$22 ]
|
||||||
reg byte a [ bitmap_plot::$1 ]
|
reg byte a [ bitmap_plot::$1 ]
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
.pc = $80d "Program"
|
.pc = $80d "Program"
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label e = 3
|
|
||||||
.label a = 2
|
.label a = 2
|
||||||
ldx #0
|
ldx #0
|
||||||
txa
|
txa
|
||||||
@ -16,14 +15,8 @@ main: {
|
|||||||
tya
|
tya
|
||||||
clc
|
clc
|
||||||
adc.z a
|
adc.z a
|
||||||
sta.z e
|
|
||||||
// f = d+a
|
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc.z a
|
|
||||||
// g = e+f
|
// g = e+f
|
||||||
clc
|
asl
|
||||||
adc.z e
|
|
||||||
// SCREEN[idx++] = g
|
// SCREEN[idx++] = g
|
||||||
sta SCREEN,x
|
sta SCREEN,x
|
||||||
// SCREEN[idx++] = g;
|
// SCREEN[idx++] = g;
|
||||||
|
@ -10,18 +10,17 @@ main::@1: scope:[main] from main main::@3
|
|||||||
main::@2: scope:[main] from main::@1 main::@2
|
main::@2: scope:[main] from main::@1 main::@2
|
||||||
[2] (byte) main::idx#2 ← phi( main::@1/(byte) main::idx#3 main::@2/(byte) main::idx#1 )
|
[2] (byte) main::idx#2 ← phi( main::@1/(byte) main::idx#3 main::@2/(byte) main::idx#1 )
|
||||||
[2] (byte) main::d#0 ← phi( main::@1/(byte) 0 main::@2/(byte) main::b#1 )
|
[2] (byte) main::d#0 ← phi( main::@1/(byte) 0 main::@2/(byte) main::b#1 )
|
||||||
[3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4
|
[3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4
|
||||||
[4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4
|
[4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0
|
||||||
[5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0
|
[5] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0
|
||||||
[6] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0
|
[6] (byte) main::idx#1 ← ++ (byte) main::idx#2
|
||||||
[7] (byte) main::idx#1 ← ++ (byte) main::idx#2
|
[7] (byte) main::b#1 ← ++ (byte) main::d#0
|
||||||
[8] (byte) main::b#1 ← ++ (byte) main::d#0
|
[8] if((byte) main::b#1!=(byte) 6) goto main::@2
|
||||||
[9] if((byte) main::b#1!=(byte) 6) goto main::@2
|
|
||||||
to:main::@3
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[10] (byte) main::a#1 ← ++ (byte) main::a#4
|
[9] (byte) main::a#1 ← ++ (byte) main::a#4
|
||||||
[11] if((byte) main::a#1!=(byte) 6) goto main::@1
|
[10] if((byte) main::a#1!=(byte) 6) goto main::@1
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@3
|
main::@return: scope:[main] from main::@3
|
||||||
[12] return
|
[11] return
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -103,6 +103,8 @@ Alias main::idx#1 = main::idx#4
|
|||||||
Successful SSA optimization Pass2AliasElimination
|
Successful SSA optimization Pass2AliasElimination
|
||||||
Identical Phi Values (byte) main::a#2 (byte) main::a#4
|
Identical Phi Values (byte) main::a#2 (byte) main::a#4
|
||||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||||
|
Identified duplicate assignment right side [9] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4
|
||||||
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||||
Simple Condition (bool~) main::$3 [12] if((byte) main::b#1!=rangelast(0,5)) goto main::@2
|
Simple Condition (bool~) main::$3 [12] if((byte) main::b#1!=rangelast(0,5)) goto main::@2
|
||||||
Simple Condition (bool~) main::$4 [15] if((byte) main::a#1!=rangelast(0,5)) goto main::@1
|
Simple Condition (bool~) main::$4 [15] if((byte) main::a#1!=rangelast(0,5)) goto main::@1
|
||||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||||
@ -128,6 +130,8 @@ Successful SSA optimization PassNCastSimplification
|
|||||||
Finalized unsigned number type (byte) 6
|
Finalized unsigned number type (byte) 6
|
||||||
Finalized unsigned number type (byte) 6
|
Finalized unsigned number type (byte) 6
|
||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
|
Alias main::f#0 = main::e#0
|
||||||
|
Successful SSA optimization Pass2AliasElimination
|
||||||
Inlining constant with var siblings (const byte) main::idx#0
|
Inlining constant with var siblings (const byte) main::idx#0
|
||||||
Inlining constant with var siblings (const byte) main::a#0
|
Inlining constant with var siblings (const byte) main::a#0
|
||||||
Inlining constant with var siblings (const byte) main::b#0
|
Inlining constant with var siblings (const byte) main::b#0
|
||||||
@ -142,10 +146,10 @@ CALL GRAPH
|
|||||||
|
|
||||||
Created 4 initial phi equivalence classes
|
Created 4 initial phi equivalence classes
|
||||||
Coalesced [2] main::idx#6 ← main::idx#3
|
Coalesced [2] main::idx#6 ← main::idx#3
|
||||||
Coalesced [14] main::a#5 ← main::a#1
|
Coalesced [13] main::a#5 ← main::a#1
|
||||||
Coalesced [15] main::idx#5 ← main::idx#1
|
Coalesced [14] main::idx#5 ← main::idx#1
|
||||||
Coalesced [16] main::d#1 ← main::b#1
|
Coalesced [15] main::d#1 ← main::b#1
|
||||||
Coalesced (already) [17] main::idx#7 ← main::idx#1
|
Coalesced (already) [16] main::idx#7 ← main::idx#1
|
||||||
Coalesced down to 3 phi equivalence classes
|
Coalesced down to 3 phi equivalence classes
|
||||||
Culled Empty Block (label) main::@4
|
Culled Empty Block (label) main::@4
|
||||||
Culled Empty Block (label) main::@5
|
Culled Empty Block (label) main::@5
|
||||||
@ -164,20 +168,19 @@ main::@1: scope:[main] from main main::@3
|
|||||||
main::@2: scope:[main] from main::@1 main::@2
|
main::@2: scope:[main] from main::@1 main::@2
|
||||||
[2] (byte) main::idx#2 ← phi( main::@1/(byte) main::idx#3 main::@2/(byte) main::idx#1 )
|
[2] (byte) main::idx#2 ← phi( main::@1/(byte) main::idx#3 main::@2/(byte) main::idx#1 )
|
||||||
[2] (byte) main::d#0 ← phi( main::@1/(byte) 0 main::@2/(byte) main::b#1 )
|
[2] (byte) main::d#0 ← phi( main::@1/(byte) 0 main::@2/(byte) main::b#1 )
|
||||||
[3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4
|
[3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4
|
||||||
[4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4
|
[4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0
|
||||||
[5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0
|
[5] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0
|
||||||
[6] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0
|
[6] (byte) main::idx#1 ← ++ (byte) main::idx#2
|
||||||
[7] (byte) main::idx#1 ← ++ (byte) main::idx#2
|
[7] (byte) main::b#1 ← ++ (byte) main::d#0
|
||||||
[8] (byte) main::b#1 ← ++ (byte) main::d#0
|
[8] if((byte) main::b#1!=(byte) 6) goto main::@2
|
||||||
[9] if((byte) main::b#1!=(byte) 6) goto main::@2
|
|
||||||
to:main::@3
|
to:main::@3
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[10] (byte) main::a#1 ← ++ (byte) main::a#4
|
[9] (byte) main::a#1 ← ++ (byte) main::a#4
|
||||||
[11] if((byte) main::a#1!=(byte) 6) goto main::@1
|
[10] if((byte) main::a#1!=(byte) 6) goto main::@1
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@3
|
main::@return: scope:[main] from main::@3
|
||||||
[12] return
|
[11] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
|
|
||||||
@ -185,43 +188,39 @@ VARIABLE REGISTER WEIGHTS
|
|||||||
(void()) main()
|
(void()) main()
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#1 16.5
|
(byte) main::a#1 16.5
|
||||||
(byte) main::a#4 24.888888888888886
|
(byte) main::a#4 15.375
|
||||||
(byte) main::b
|
(byte) main::b
|
||||||
(byte) main::b#1 151.5
|
(byte) main::b#1 151.5
|
||||||
(byte) main::c
|
(byte) main::c
|
||||||
(byte) main::d
|
(byte) main::d
|
||||||
(byte) main::d#0 67.33333333333333
|
(byte) main::d#0 60.599999999999994
|
||||||
(byte) main::e
|
(byte) main::e
|
||||||
(byte) main::e#0 101.0
|
|
||||||
(byte) main::f
|
(byte) main::f
|
||||||
(byte) main::f#0 202.0
|
(byte) main::f#0 303.0
|
||||||
(byte) main::g
|
(byte) main::g
|
||||||
(byte) main::g#0 202.0
|
(byte) main::g#0 202.0
|
||||||
(byte) main::idx
|
(byte) main::idx
|
||||||
(byte) main::idx#1 42.599999999999994
|
(byte) main::idx#1 42.599999999999994
|
||||||
(byte) main::idx#2 62.8
|
(byte) main::idx#2 78.5
|
||||||
(byte) main::idx#3 22.0
|
(byte) main::idx#3 22.0
|
||||||
|
|
||||||
Initial phi equivalence classes
|
Initial phi equivalence classes
|
||||||
[ main::a#4 main::a#1 ]
|
[ main::a#4 main::a#1 ]
|
||||||
[ main::d#0 main::b#1 ]
|
[ main::d#0 main::b#1 ]
|
||||||
[ main::idx#2 main::idx#3 main::idx#1 ]
|
[ main::idx#2 main::idx#3 main::idx#1 ]
|
||||||
Added variable main::e#0 to live range equivalence class [ main::e#0 ]
|
|
||||||
Added variable main::f#0 to live range equivalence class [ main::f#0 ]
|
Added variable main::f#0 to live range equivalence class [ main::f#0 ]
|
||||||
Added variable main::g#0 to live range equivalence class [ main::g#0 ]
|
Added variable main::g#0 to live range equivalence class [ main::g#0 ]
|
||||||
Complete equivalence classes
|
Complete equivalence classes
|
||||||
[ main::a#4 main::a#1 ]
|
[ main::a#4 main::a#1 ]
|
||||||
[ main::d#0 main::b#1 ]
|
[ main::d#0 main::b#1 ]
|
||||||
[ main::idx#2 main::idx#3 main::idx#1 ]
|
[ main::idx#2 main::idx#3 main::idx#1 ]
|
||||||
[ main::e#0 ]
|
|
||||||
[ main::f#0 ]
|
[ main::f#0 ]
|
||||||
[ main::g#0 ]
|
[ main::g#0 ]
|
||||||
Allocated zp[1]:2 [ main::a#4 main::a#1 ]
|
Allocated zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
Allocated zp[1]:3 [ main::d#0 main::b#1 ]
|
Allocated zp[1]:3 [ main::d#0 main::b#1 ]
|
||||||
Allocated zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ]
|
Allocated zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||||
Allocated zp[1]:5 [ main::e#0 ]
|
Allocated zp[1]:5 [ main::f#0 ]
|
||||||
Allocated zp[1]:6 [ main::f#0 ]
|
Allocated zp[1]:6 [ main::g#0 ]
|
||||||
Allocated zp[1]:7 [ main::g#0 ]
|
|
||||||
|
|
||||||
INITIAL ASM
|
INITIAL ASM
|
||||||
Target platform is c64basic / MOS6502X
|
Target platform is c64basic / MOS6502X
|
||||||
@ -236,9 +235,8 @@ Target platform is c64basic / MOS6502X
|
|||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label d = 3
|
.label d = 3
|
||||||
.label e = 5
|
.label f = 5
|
||||||
.label f = 6
|
.label g = 6
|
||||||
.label g = 7
|
|
||||||
.label idx = 4
|
.label idx = 4
|
||||||
.label b = 3
|
.label b = 3
|
||||||
.label a = 2
|
.label a = 2
|
||||||
@ -272,80 +270,67 @@ main: {
|
|||||||
jmp __b2
|
jmp __b2
|
||||||
// main::@2
|
// main::@2
|
||||||
__b2:
|
__b2:
|
||||||
// [3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuz1=vbuz2_plus_vbuz3
|
// [3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuz1=vbuz2_plus_vbuz3
|
||||||
lda.z d
|
|
||||||
clc
|
|
||||||
adc.z a
|
|
||||||
sta.z e
|
|
||||||
// [4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuz1=vbuz2_plus_vbuz3
|
|
||||||
lda.z d
|
lda.z d
|
||||||
clc
|
clc
|
||||||
adc.z a
|
adc.z a
|
||||||
sta.z f
|
sta.z f
|
||||||
// [5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 -- vbuz1=vbuz2_plus_vbuz3
|
// [4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0 -- vbuz1=vbuz2_plus_vbuz2
|
||||||
lda.z e
|
lda.z f
|
||||||
clc
|
asl
|
||||||
adc.z f
|
|
||||||
sta.z g
|
sta.z g
|
||||||
// [6] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0 -- pbuc1_derefidx_vbuz1=vbuz2
|
// [5] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||||
lda.z g
|
lda.z g
|
||||||
ldy.z idx
|
ldy.z idx
|
||||||
sta SCREEN,y
|
sta SCREEN,y
|
||||||
// [7] (byte) main::idx#1 ← ++ (byte) main::idx#2 -- vbuz1=_inc_vbuz1
|
// [6] (byte) main::idx#1 ← ++ (byte) main::idx#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z idx
|
inc.z idx
|
||||||
// [8] (byte) main::b#1 ← ++ (byte) main::d#0 -- vbuz1=_inc_vbuz1
|
// [7] (byte) main::b#1 ← ++ (byte) main::d#0 -- vbuz1=_inc_vbuz1
|
||||||
inc.z b
|
inc.z b
|
||||||
// [9] if((byte) main::b#1!=(byte) 6) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
// [8] if((byte) main::b#1!=(byte) 6) goto main::@2 -- vbuz1_neq_vbuc1_then_la1
|
||||||
lda #6
|
lda #6
|
||||||
cmp.z b
|
cmp.z b
|
||||||
bne __b2_from___b2
|
bne __b2_from___b2
|
||||||
jmp __b3
|
jmp __b3
|
||||||
// main::@3
|
// main::@3
|
||||||
__b3:
|
__b3:
|
||||||
// [10] (byte) main::a#1 ← ++ (byte) main::a#4 -- vbuz1=_inc_vbuz1
|
// [9] (byte) main::a#1 ← ++ (byte) main::a#4 -- vbuz1=_inc_vbuz1
|
||||||
inc.z a
|
inc.z a
|
||||||
// [11] if((byte) main::a#1!=(byte) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
// [10] if((byte) main::a#1!=(byte) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||||
lda #6
|
lda #6
|
||||||
cmp.z a
|
cmp.z a
|
||||||
bne __b1_from___b3
|
bne __b1_from___b3
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// main::@return
|
// main::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [12] return
|
// [11] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
|
|
||||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||||
Statement [3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::e#0 ] { } ) always clobbers reg byte a
|
Statement [3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::f#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::f#0 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#4 main::a#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::d#0 main::b#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::d#0 main::b#1 ]
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||||
Statement [4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] { } ) always clobbers reg byte a
|
Statement [4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::e#0 ]
|
Statement [3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::f#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::f#0 ] { } ) always clobbers reg byte a
|
||||||
Statement [5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a
|
Statement [4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a
|
||||||
Statement [3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::e#0 ] { } ) always clobbers reg byte a
|
|
||||||
Statement [4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::e#0 main::f#0 ] { } ) always clobbers reg byte a
|
|
||||||
Statement [5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 [ main::a#4 main::d#0 main::idx#2 main::g#0 ] ( [ main::a#4 main::d#0 main::idx#2 main::g#0 ] { } ) always clobbers reg byte a
|
|
||||||
Potential registers zp[1]:2 [ main::a#4 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
Potential registers zp[1]:2 [ main::a#4 main::a#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:3 [ main::d#0 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
Potential registers zp[1]:3 [ main::d#0 main::b#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
Potential registers zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] : zp[1]:4 , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:5 [ main::e#0 ] : zp[1]:5 , reg byte x , reg byte y ,
|
Potential registers zp[1]:5 [ main::f#0 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:6 [ main::f#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp[1]:6 [ main::g#0 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:7 [ main::g#0 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
|
||||||
|
|
||||||
REGISTER UPLIFT SCOPES
|
REGISTER UPLIFT SCOPES
|
||||||
Uplift Scope [main] 218.83: zp[1]:3 [ main::d#0 main::b#1 ] 202: zp[1]:6 [ main::f#0 ] 202: zp[1]:7 [ main::g#0 ] 127.4: zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] 101: zp[1]:5 [ main::e#0 ] 41.39: zp[1]:2 [ main::a#4 main::a#1 ]
|
Uplift Scope [main] 303: zp[1]:5 [ main::f#0 ] 212.1: zp[1]:3 [ main::d#0 main::b#1 ] 202: zp[1]:6 [ main::g#0 ] 143.1: zp[1]:4 [ main::idx#2 main::idx#3 main::idx#1 ] 31.88: zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 4941 combination reg byte y [ main::d#0 main::b#1 ] reg byte a [ main::f#0 ] reg byte a [ main::g#0 ] reg byte x [ main::idx#2 main::idx#3 main::idx#1 ] zp[1]:5 [ main::e#0 ] zp[1]:2 [ main::a#4 main::a#1 ]
|
Uplifting [main] best 3641 combination reg byte a [ main::f#0 ] reg byte y [ main::d#0 main::b#1 ] reg byte a [ main::g#0 ] reg byte x [ main::idx#2 main::idx#3 main::idx#1 ] zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
Limited combination testing to 100 combinations of 1296 possible.
|
Limited combination testing to 100 combinations of 432 possible.
|
||||||
Uplifting [] best 4941 combination
|
Uplifting [] best 3641 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:5 [ main::e#0 ]
|
|
||||||
Uplifting [main] best 4941 combination zp[1]:5 [ main::e#0 ]
|
|
||||||
Attempting to uplift remaining variables inzp[1]:2 [ main::a#4 main::a#1 ]
|
Attempting to uplift remaining variables inzp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
Uplifting [main] best 4941 combination zp[1]:2 [ main::a#4 main::a#1 ]
|
Uplifting [main] best 3641 combination zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
Allocated (was zp[1]:5) zp[1]:3 [ main::e#0 ]
|
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
// File Comments
|
// File Comments
|
||||||
@ -358,7 +343,6 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label e = 3
|
|
||||||
.label a = 2
|
.label a = 2
|
||||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||||
__b1_from_main:
|
__b1_from_main:
|
||||||
@ -388,40 +372,34 @@ main: {
|
|||||||
jmp __b2
|
jmp __b2
|
||||||
// main::@2
|
// main::@2
|
||||||
__b2:
|
__b2:
|
||||||
// [3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuz1=vbuyy_plus_vbuz2
|
// [3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuaa=vbuyy_plus_vbuz1
|
||||||
tya
|
tya
|
||||||
clc
|
clc
|
||||||
adc.z a
|
adc.z a
|
||||||
sta.z e
|
// [4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0 -- vbuaa=vbuaa_plus_vbuaa
|
||||||
// [4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuaa=vbuyy_plus_vbuz1
|
asl
|
||||||
tya
|
// [5] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||||
clc
|
|
||||||
adc.z a
|
|
||||||
// [5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 -- vbuaa=vbuz1_plus_vbuaa
|
|
||||||
clc
|
|
||||||
adc.z e
|
|
||||||
// [6] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0 -- pbuc1_derefidx_vbuxx=vbuaa
|
|
||||||
sta SCREEN,x
|
sta SCREEN,x
|
||||||
// [7] (byte) main::idx#1 ← ++ (byte) main::idx#2 -- vbuxx=_inc_vbuxx
|
// [6] (byte) main::idx#1 ← ++ (byte) main::idx#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [8] (byte) main::b#1 ← ++ (byte) main::d#0 -- vbuyy=_inc_vbuyy
|
// [7] (byte) main::b#1 ← ++ (byte) main::d#0 -- vbuyy=_inc_vbuyy
|
||||||
iny
|
iny
|
||||||
// [9] if((byte) main::b#1!=(byte) 6) goto main::@2 -- vbuyy_neq_vbuc1_then_la1
|
// [8] if((byte) main::b#1!=(byte) 6) goto main::@2 -- vbuyy_neq_vbuc1_then_la1
|
||||||
cpy #6
|
cpy #6
|
||||||
bne __b2_from___b2
|
bne __b2_from___b2
|
||||||
jmp __b3
|
jmp __b3
|
||||||
// main::@3
|
// main::@3
|
||||||
__b3:
|
__b3:
|
||||||
// [10] (byte) main::a#1 ← ++ (byte) main::a#4 -- vbuz1=_inc_vbuz1
|
// [9] (byte) main::a#1 ← ++ (byte) main::a#4 -- vbuz1=_inc_vbuz1
|
||||||
inc.z a
|
inc.z a
|
||||||
// [11] if((byte) main::a#1!=(byte) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
// [10] if((byte) main::a#1!=(byte) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||||
lda #6
|
lda #6
|
||||||
cmp.z a
|
cmp.z a
|
||||||
bne __b1_from___b3
|
bne __b1_from___b3
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// main::@return
|
// main::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [12] return
|
// [11] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -456,33 +434,31 @@ FINAL SYMBOL TABLE
|
|||||||
(const nomodify byte*) main::SCREEN = (byte*) 1024
|
(const nomodify byte*) main::SCREEN = (byte*) 1024
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#1 a zp[1]:2 16.5
|
(byte) main::a#1 a zp[1]:2 16.5
|
||||||
(byte) main::a#4 a zp[1]:2 24.888888888888886
|
(byte) main::a#4 a zp[1]:2 15.375
|
||||||
(byte) main::b
|
(byte) main::b
|
||||||
(byte) main::b#1 reg byte y 151.5
|
(byte) main::b#1 reg byte y 151.5
|
||||||
(byte) main::c
|
(byte) main::c
|
||||||
(byte) main::d
|
(byte) main::d
|
||||||
(byte) main::d#0 reg byte y 67.33333333333333
|
(byte) main::d#0 reg byte y 60.599999999999994
|
||||||
(byte) main::e
|
(byte) main::e
|
||||||
(byte) main::e#0 e zp[1]:3 101.0
|
|
||||||
(byte) main::f
|
(byte) main::f
|
||||||
(byte) main::f#0 reg byte a 202.0
|
(byte) main::f#0 reg byte a 303.0
|
||||||
(byte) main::g
|
(byte) main::g
|
||||||
(byte) main::g#0 reg byte a 202.0
|
(byte) main::g#0 reg byte a 202.0
|
||||||
(byte) main::idx
|
(byte) main::idx
|
||||||
(byte) main::idx#1 reg byte x 42.599999999999994
|
(byte) main::idx#1 reg byte x 42.599999999999994
|
||||||
(byte) main::idx#2 reg byte x 62.8
|
(byte) main::idx#2 reg byte x 78.5
|
||||||
(byte) main::idx#3 reg byte x 22.0
|
(byte) main::idx#3 reg byte x 22.0
|
||||||
|
|
||||||
zp[1]:2 [ main::a#4 main::a#1 ]
|
zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
reg byte y [ main::d#0 main::b#1 ]
|
reg byte y [ main::d#0 main::b#1 ]
|
||||||
reg byte x [ main::idx#2 main::idx#3 main::idx#1 ]
|
reg byte x [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||||
zp[1]:3 [ main::e#0 ]
|
|
||||||
reg byte a [ main::f#0 ]
|
reg byte a [ main::f#0 ]
|
||||||
reg byte a [ main::g#0 ]
|
reg byte a [ main::g#0 ]
|
||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 3951
|
Score: 2651
|
||||||
|
|
||||||
// File Comments
|
// File Comments
|
||||||
// Tests variable coalescing over assignments
|
// Tests variable coalescing over assignments
|
||||||
@ -494,7 +470,6 @@ Score: 3951
|
|||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label e = 3
|
|
||||||
.label a = 2
|
.label a = 2
|
||||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||||
// [1] phi (byte) main::idx#3 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
// [1] phi (byte) main::idx#3 = (byte) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1
|
||||||
@ -517,43 +492,36 @@ main: {
|
|||||||
// main::@2
|
// main::@2
|
||||||
__b2:
|
__b2:
|
||||||
// e = b+c
|
// e = b+c
|
||||||
// [3] (byte) main::e#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuz1=vbuyy_plus_vbuz2
|
// [3] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuaa=vbuyy_plus_vbuz1
|
||||||
tya
|
|
||||||
clc
|
|
||||||
adc.z a
|
|
||||||
sta.z e
|
|
||||||
// f = d+a
|
|
||||||
// [4] (byte) main::f#0 ← (byte) main::d#0 + (byte) main::a#4 -- vbuaa=vbuyy_plus_vbuz1
|
|
||||||
tya
|
tya
|
||||||
clc
|
clc
|
||||||
adc.z a
|
adc.z a
|
||||||
// g = e+f
|
// g = e+f
|
||||||
// [5] (byte) main::g#0 ← (byte) main::e#0 + (byte) main::f#0 -- vbuaa=vbuz1_plus_vbuaa
|
// [4] (byte) main::g#0 ← (byte) main::f#0 + (byte) main::f#0 -- vbuaa=vbuaa_plus_vbuaa
|
||||||
clc
|
asl
|
||||||
adc.z e
|
|
||||||
// SCREEN[idx++] = g
|
// SCREEN[idx++] = g
|
||||||
// [6] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0 -- pbuc1_derefidx_vbuxx=vbuaa
|
// [5] *((const nomodify byte*) main::SCREEN + (byte) main::idx#2) ← (byte) main::g#0 -- pbuc1_derefidx_vbuxx=vbuaa
|
||||||
sta SCREEN,x
|
sta SCREEN,x
|
||||||
// SCREEN[idx++] = g;
|
// SCREEN[idx++] = g;
|
||||||
// [7] (byte) main::idx#1 ← ++ (byte) main::idx#2 -- vbuxx=_inc_vbuxx
|
// [6] (byte) main::idx#1 ← ++ (byte) main::idx#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// for( byte b: 0..5)
|
// for( byte b: 0..5)
|
||||||
// [8] (byte) main::b#1 ← ++ (byte) main::d#0 -- vbuyy=_inc_vbuyy
|
// [7] (byte) main::b#1 ← ++ (byte) main::d#0 -- vbuyy=_inc_vbuyy
|
||||||
iny
|
iny
|
||||||
// [9] if((byte) main::b#1!=(byte) 6) goto main::@2 -- vbuyy_neq_vbuc1_then_la1
|
// [8] if((byte) main::b#1!=(byte) 6) goto main::@2 -- vbuyy_neq_vbuc1_then_la1
|
||||||
cpy #6
|
cpy #6
|
||||||
bne __b2
|
bne __b2
|
||||||
// main::@3
|
// main::@3
|
||||||
// for( byte a: 0..5)
|
// for( byte a: 0..5)
|
||||||
// [10] (byte) main::a#1 ← ++ (byte) main::a#4 -- vbuz1=_inc_vbuz1
|
// [9] (byte) main::a#1 ← ++ (byte) main::a#4 -- vbuz1=_inc_vbuz1
|
||||||
inc.z a
|
inc.z a
|
||||||
// [11] if((byte) main::a#1!=(byte) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
// [10] if((byte) main::a#1!=(byte) 6) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||||
lda #6
|
lda #6
|
||||||
cmp.z a
|
cmp.z a
|
||||||
bne __b1
|
bne __b1
|
||||||
// main::@return
|
// main::@return
|
||||||
// }
|
// }
|
||||||
// [12] return
|
// [11] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
|
@ -6,26 +6,24 @@
|
|||||||
(const nomodify byte*) main::SCREEN = (byte*) 1024
|
(const nomodify byte*) main::SCREEN = (byte*) 1024
|
||||||
(byte) main::a
|
(byte) main::a
|
||||||
(byte) main::a#1 a zp[1]:2 16.5
|
(byte) main::a#1 a zp[1]:2 16.5
|
||||||
(byte) main::a#4 a zp[1]:2 24.888888888888886
|
(byte) main::a#4 a zp[1]:2 15.375
|
||||||
(byte) main::b
|
(byte) main::b
|
||||||
(byte) main::b#1 reg byte y 151.5
|
(byte) main::b#1 reg byte y 151.5
|
||||||
(byte) main::c
|
(byte) main::c
|
||||||
(byte) main::d
|
(byte) main::d
|
||||||
(byte) main::d#0 reg byte y 67.33333333333333
|
(byte) main::d#0 reg byte y 60.599999999999994
|
||||||
(byte) main::e
|
(byte) main::e
|
||||||
(byte) main::e#0 e zp[1]:3 101.0
|
|
||||||
(byte) main::f
|
(byte) main::f
|
||||||
(byte) main::f#0 reg byte a 202.0
|
(byte) main::f#0 reg byte a 303.0
|
||||||
(byte) main::g
|
(byte) main::g
|
||||||
(byte) main::g#0 reg byte a 202.0
|
(byte) main::g#0 reg byte a 202.0
|
||||||
(byte) main::idx
|
(byte) main::idx
|
||||||
(byte) main::idx#1 reg byte x 42.599999999999994
|
(byte) main::idx#1 reg byte x 42.599999999999994
|
||||||
(byte) main::idx#2 reg byte x 62.8
|
(byte) main::idx#2 reg byte x 78.5
|
||||||
(byte) main::idx#3 reg byte x 22.0
|
(byte) main::idx#3 reg byte x 22.0
|
||||||
|
|
||||||
zp[1]:2 [ main::a#4 main::a#1 ]
|
zp[1]:2 [ main::a#4 main::a#1 ]
|
||||||
reg byte y [ main::d#0 main::b#1 ]
|
reg byte y [ main::d#0 main::b#1 ]
|
||||||
reg byte x [ main::idx#2 main::idx#3 main::idx#1 ]
|
reg byte x [ main::idx#2 main::idx#3 main::idx#1 ]
|
||||||
zp[1]:3 [ main::e#0 ]
|
|
||||||
reg byte a [ main::f#0 ]
|
reg byte a [ main::f#0 ]
|
||||||
reg byte a [ main::g#0 ]
|
reg byte a [ main::g#0 ]
|
||||||
|
@ -302,6 +302,7 @@ bitmap_clear: {
|
|||||||
}
|
}
|
||||||
// show_letter(byte zp(2) angle)
|
// show_letter(byte zp(2) angle)
|
||||||
show_letter: {
|
show_letter: {
|
||||||
|
.label __17 = $18
|
||||||
.label angle = 2
|
.label angle = 2
|
||||||
.label to_x = 8
|
.label to_x = 8
|
||||||
.label to_y = $a
|
.label to_y = $a
|
||||||
@ -318,7 +319,6 @@ show_letter: {
|
|||||||
.label current_y = 6
|
.label current_y = 6
|
||||||
.label current_x_1 = $19
|
.label current_x_1 = $19
|
||||||
.label current_y_1 = $1b
|
.label current_y_1 = $1b
|
||||||
.label __21 = $18
|
|
||||||
lda #<0
|
lda #<0
|
||||||
sta.z current_y
|
sta.z current_y
|
||||||
sta.z current_y+1
|
sta.z current_y+1
|
||||||
@ -331,17 +331,17 @@ show_letter: {
|
|||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
sta.z __21
|
|
||||||
clc
|
clc
|
||||||
adc.z i
|
adc.z i
|
||||||
tax
|
sta.z __17
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_TO,x
|
tay
|
||||||
|
lda letter_c+OFFSET_STRUCT_SEGMENT_TO,y
|
||||||
sta.z to_x
|
sta.z to_x
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_TO+1,x
|
lda letter_c+OFFSET_STRUCT_SEGMENT_TO+1,y
|
||||||
sta.z to_x+1
|
sta.z to_x+1
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y,x
|
lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y,y
|
||||||
sta.z to_y
|
sta.z to_y
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x
|
lda letter_c+OFFSET_STRUCT_SEGMENT_TO+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y
|
||||||
sta.z to_y+1
|
sta.z to_y+1
|
||||||
// to = { to.x - 50, to.y - 150}
|
// to = { to.x - 50, to.y - 150}
|
||||||
lda.z to_x
|
lda.z to_x
|
||||||
@ -379,17 +379,14 @@ show_letter: {
|
|||||||
adc #>$64
|
adc #>$64
|
||||||
sta.z current_y_1+1
|
sta.z current_y_1+1
|
||||||
// via = letter_c[i].via
|
// via = letter_c[i].via
|
||||||
lda.z __21
|
ldy.z __17
|
||||||
clc
|
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,y
|
||||||
adc.z i
|
|
||||||
tax
|
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA,x
|
|
||||||
sta.z via_x
|
sta.z via_x
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,x
|
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+1,y
|
||||||
sta.z via_x+1
|
sta.z via_x+1
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,x
|
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y,y
|
||||||
sta.z via_y
|
sta.z via_y
|
||||||
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,x
|
lda letter_c+OFFSET_STRUCT_SEGMENT_VIA+OFFSET_STRUCT_SPLINEVECTOR16_Y+1,y
|
||||||
sta.z via_y+1
|
sta.z via_y+1
|
||||||
// via = { via.x - 50, via.y - 150}
|
// via = { via.x - 50, via.y - 150}
|
||||||
lda.z via_x
|
lda.z via_x
|
||||||
@ -427,10 +424,7 @@ show_letter: {
|
|||||||
adc #>$64
|
adc #>$64
|
||||||
sta.z segment_via_y+1
|
sta.z segment_via_y+1
|
||||||
// segment = { letter_c[i].type, to, via}
|
// segment = { letter_c[i].type, to, via}
|
||||||
lda.z __21
|
ldy.z __17
|
||||||
clc
|
|
||||||
adc.z i
|
|
||||||
tay
|
|
||||||
lda letter_c,y
|
lda letter_c,y
|
||||||
// if(segment.type==MOVE_TO)
|
// if(segment.type==MOVE_TO)
|
||||||
cmp #MOVE_TO
|
cmp #MOVE_TO
|
||||||
|
@ -179,9 +179,9 @@ show_letter::@1: scope:[show_letter] from show_letter show_letter::@9
|
|||||||
[80] (signed word) show_letter::current_x#4 ← phi( show_letter/(signed word) 0 show_letter::@9/(signed word) show_letter::current_x#11 )
|
[80] (signed word) show_letter::current_x#4 ← phi( show_letter/(signed word) 0 show_letter::@9/(signed word) show_letter::current_x#11 )
|
||||||
[80] (byte) show_letter::i#10 ← phi( show_letter/(byte) 0 show_letter::@9/(byte) show_letter::i#1 )
|
[80] (byte) show_letter::i#10 ← phi( show_letter/(byte) 0 show_letter::@9/(byte) show_letter::i#1 )
|
||||||
[81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3
|
[81] (byte~) show_letter::$21 ← (byte) show_letter::i#10 << (byte) 3
|
||||||
[82] (byte~) show_letter::$16 ← (byte~) show_letter::$21 + (byte) show_letter::i#10
|
[82] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10
|
||||||
[83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$16)
|
[83] (signed word) show_letter::to_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO + (byte~) show_letter::$17)
|
||||||
[84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$16)
|
[84] (signed word) show_letter::to_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_TO+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17)
|
||||||
[85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32
|
[85] (signed word) show_letter::to_x#1 ← (signed word) show_letter::to_x#0 - (signed byte) $32
|
||||||
[86] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96
|
[86] (signed word) show_letter::to_y#1 ← (signed word) show_letter::to_y#0 - (signed word) $96
|
||||||
[87] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1
|
[87] (signed word) rotate::vector_x#0 ← (signed word) show_letter::to_x#1
|
||||||
@ -196,408 +196,406 @@ show_letter::@6: scope:[show_letter] from show_letter::@1
|
|||||||
[94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0
|
[94] (signed word) show_letter::to_y#2 ← (signed word) rotate::return_y#0
|
||||||
[95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64
|
[95] (signed word) show_letter::current_x#10 ← (signed word) show_letter::to_x#2 + (signed byte) $64
|
||||||
[96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64
|
[96] (signed word) show_letter::current_y#10 ← (signed word) show_letter::to_y#2 + (signed byte) $64
|
||||||
[97] (byte~) show_letter::$17 ← (byte~) show_letter::$21 + (byte) show_letter::i#10
|
[97] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17)
|
||||||
[98] (signed word) show_letter::via_x#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA + (byte~) show_letter::$17)
|
[98] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17)
|
||||||
[99] (signed word) show_letter::via_y#0 ← *((signed word*)(struct SplineVector16*)(const struct Segment*) letter_c+(const byte) OFFSET_STRUCT_SEGMENT_VIA+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) show_letter::$17)
|
[99] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32
|
||||||
[100] (signed word) show_letter::via_x#1 ← (signed word) show_letter::via_x#0 - (signed byte) $32
|
[100] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96
|
||||||
[101] (signed word) show_letter::via_y#1 ← (signed word) show_letter::via_y#0 - (signed word) $96
|
[101] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1
|
||||||
[102] (signed word) rotate::vector_x#1 ← (signed word) show_letter::via_x#1
|
[102] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1
|
||||||
[103] (signed word) rotate::vector_y#1 ← (signed word) show_letter::via_y#1
|
[103] (byte) rotate::angle#1 ← (byte) show_letter::angle#0
|
||||||
[104] (byte) rotate::angle#1 ← (byte) show_letter::angle#0
|
[104] call rotate
|
||||||
[105] call rotate
|
[105] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2
|
||||||
[106] (signed word) rotate::return_x#1 ← (signed word) rotate::return_x#2
|
[106] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2
|
||||||
[107] (signed word) rotate::return_y#1 ← (signed word) rotate::return_y#2
|
|
||||||
to:show_letter::@7
|
to:show_letter::@7
|
||||||
show_letter::@7: scope:[show_letter] from show_letter::@6
|
show_letter::@7: scope:[show_letter] from show_letter::@6
|
||||||
[108] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1
|
[107] (signed word) show_letter::via_x#2 ← (signed word) rotate::return_x#1
|
||||||
[109] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1
|
[108] (signed word) show_letter::via_y#2 ← (signed word) rotate::return_y#1
|
||||||
[110] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64
|
[109] (signed word) show_letter::segment_via_x#0 ← (signed word) show_letter::via_x#2 + (signed byte) $64
|
||||||
[111] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64
|
[110] (signed word) show_letter::segment_via_y#0 ← (signed word) show_letter::via_y#2 + (signed byte) $64
|
||||||
[112] (byte~) show_letter::$18 ← (byte~) show_letter::$21 + (byte) show_letter::i#10
|
[111] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$17)
|
||||||
[113] (byte) show_letter::segment_type#0 ← *((byte*)(const struct Segment*) letter_c + (byte~) show_letter::$18)
|
[112] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3
|
||||||
[114] if((byte) show_letter::segment_type#0==(const byte) MOVE_TO) goto show_letter::@3
|
|
||||||
to:show_letter::@4
|
to:show_letter::@4
|
||||||
show_letter::@4: scope:[show_letter] from show_letter::@7
|
show_letter::@4: scope:[show_letter] from show_letter::@7
|
||||||
[115] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2
|
[113] if((byte) show_letter::segment_type#0==(const byte) SPLINE_TO) goto show_letter::@2
|
||||||
to:show_letter::@5
|
to:show_letter::@5
|
||||||
show_letter::@5: scope:[show_letter] from show_letter::@4
|
show_letter::@5: scope:[show_letter] from show_letter::@4
|
||||||
[116] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4
|
[114] (word) bitmap_line::x1#0 ← (word)(signed word) show_letter::current_x#4
|
||||||
[117] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4
|
[115] (word) bitmap_line::y1#0 ← (word)(signed word) show_letter::current_y#4
|
||||||
[118] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10
|
[116] (word) bitmap_line::x2#0 ← (word)(signed word) show_letter::current_x#10
|
||||||
[119] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10
|
[117] (word) bitmap_line::y2#0 ← (word)(signed word) show_letter::current_y#10
|
||||||
[120] call bitmap_line
|
[118] call bitmap_line
|
||||||
to:show_letter::@3
|
to:show_letter::@3
|
||||||
show_letter::@3: scope:[show_letter] from show_letter::@5 show_letter::@7 show_letter::@8
|
show_letter::@3: scope:[show_letter] from show_letter::@5 show_letter::@7 show_letter::@8
|
||||||
[121] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10
|
[119] (byte) show_letter::i#1 ← ++ (byte) show_letter::i#10
|
||||||
[122] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9
|
[120] if((byte) show_letter::i#1!=(byte) $16) goto show_letter::@9
|
||||||
to:show_letter::@return
|
to:show_letter::@return
|
||||||
show_letter::@return: scope:[show_letter] from show_letter::@3
|
show_letter::@return: scope:[show_letter] from show_letter::@3
|
||||||
[123] return
|
[121] return
|
||||||
to:@return
|
to:@return
|
||||||
show_letter::@9: scope:[show_letter] from show_letter::@3
|
show_letter::@9: scope:[show_letter] from show_letter::@3
|
||||||
[124] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10
|
[122] (signed word) show_letter::current_x#11 ← (signed word) show_letter::current_x#10
|
||||||
[125] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10
|
[123] (signed word) show_letter::current_y#11 ← (signed word) show_letter::current_y#10
|
||||||
to:show_letter::@1
|
to:show_letter::@1
|
||||||
show_letter::@2: scope:[show_letter] from show_letter::@4
|
show_letter::@2: scope:[show_letter] from show_letter::@4
|
||||||
[126] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4
|
[124] (signed word) spline_8segB::p0_x#0 ← (signed word) show_letter::current_x#4
|
||||||
[127] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4
|
[125] (signed word) spline_8segB::p0_y#0 ← (signed word) show_letter::current_y#4
|
||||||
[128] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0
|
[126] (signed word) spline_8segB::p1_x#0 ← (signed word) show_letter::segment_via_x#0
|
||||||
[129] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0
|
[127] (signed word) spline_8segB::p1_y#0 ← (signed word) show_letter::segment_via_y#0
|
||||||
[130] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10
|
[128] (signed word) spline_8segB::p2_x#0 ← (signed word) show_letter::current_x#10
|
||||||
[131] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10
|
[129] (signed word) spline_8segB::p2_y#0 ← (signed word) show_letter::current_y#10
|
||||||
[132] call spline_8segB
|
[130] call spline_8segB
|
||||||
to:show_letter::@8
|
to:show_letter::@8
|
||||||
show_letter::@8: scope:[show_letter] from show_letter::@2
|
show_letter::@8: scope:[show_letter] from show_letter::@2
|
||||||
[133] phi()
|
[131] phi()
|
||||||
[134] call bitmap_plot_spline_8seg
|
[132] call bitmap_plot_spline_8seg
|
||||||
to:show_letter::@3
|
to:show_letter::@3
|
||||||
|
|
||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
memset: scope:[memset] from bitmap_clear bitmap_clear::@1
|
||||||
[135] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
|
[133] (byte) memset::c#4 ← phi( bitmap_clear/(const byte) bitmap_clear::col#0 bitmap_clear::@1/(byte) 0 )
|
||||||
[135] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const nomodify byte*) BITMAP_SCREEN bitmap_clear::@1/(void*)(const nomodify byte*) BITMAP_GRAPHICS )
|
[133] (void*) memset::str#3 ← phi( bitmap_clear/(void*)(const nomodify byte*) BITMAP_SCREEN bitmap_clear::@1/(void*)(const nomodify byte*) BITMAP_GRAPHICS )
|
||||||
[135] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
|
[133] (word) memset::num#2 ← phi( bitmap_clear/(word) $3e8 bitmap_clear::@1/(word) $1f40 )
|
||||||
[136] if((word) memset::num#2<=(byte) 0) goto memset::@return
|
[134] if((word) memset::num#2<=(byte) 0) goto memset::@return
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
memset::@1: scope:[memset] from memset
|
memset::@1: scope:[memset] from memset
|
||||||
[137] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
|
[135] (byte*) memset::end#0 ← (byte*)(void*) memset::str#3 + (word) memset::num#2
|
||||||
[138] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
[136] (byte*) memset::dst#4 ← (byte*)(void*) memset::str#3
|
||||||
to:memset::@2
|
to:memset::@2
|
||||||
memset::@2: scope:[memset] from memset::@1 memset::@3
|
memset::@2: scope:[memset] from memset::@1 memset::@3
|
||||||
[139] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
|
[137] (byte*) memset::dst#2 ← phi( memset::@1/(byte*) memset::dst#4 memset::@3/(byte*) memset::dst#1 )
|
||||||
[140] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
|
[138] if((byte*) memset::dst#2!=(byte*) memset::end#0) goto memset::@3
|
||||||
to:memset::@return
|
to:memset::@return
|
||||||
memset::@return: scope:[memset] from memset memset::@2
|
memset::@return: scope:[memset] from memset memset::@2
|
||||||
[141] return
|
[139] return
|
||||||
to:@return
|
to:@return
|
||||||
memset::@3: scope:[memset] from memset::@2
|
memset::@3: scope:[memset] from memset::@2
|
||||||
[142] *((byte*) memset::dst#2) ← (byte) memset::c#4
|
[140] *((byte*) memset::dst#2) ← (byte) memset::c#4
|
||||||
[143] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
[141] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||||
to:memset::@2
|
to:memset::@2
|
||||||
|
|
||||||
(struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
|
(struct SplineVector16()) rotate((signed word) rotate::vector_x , (signed word) rotate::vector_y , (byte) rotate::angle)
|
||||||
rotate: scope:[rotate] from show_letter::@1 show_letter::@6
|
rotate: scope:[rotate] from show_letter::@1 show_letter::@6
|
||||||
[144] (signed word) rotate::vector_y#2 ← phi( show_letter::@1/(signed word) rotate::vector_y#0 show_letter::@6/(signed word) rotate::vector_y#1 )
|
[142] (signed word) rotate::vector_y#2 ← phi( show_letter::@1/(signed word) rotate::vector_y#0 show_letter::@6/(signed word) rotate::vector_y#1 )
|
||||||
[144] (signed word) rotate::vector_x#2 ← phi( show_letter::@1/(signed word) rotate::vector_x#0 show_letter::@6/(signed word) rotate::vector_x#1 )
|
[142] (signed word) rotate::vector_x#2 ← phi( show_letter::@1/(signed word) rotate::vector_x#0 show_letter::@6/(signed word) rotate::vector_x#1 )
|
||||||
[144] (byte) rotate::angle#2 ← phi( show_letter::@1/(byte) rotate::angle#0 show_letter::@6/(byte) rotate::angle#1 )
|
[142] (byte) rotate::angle#2 ← phi( show_letter::@1/(byte) rotate::angle#0 show_letter::@6/(byte) rotate::angle#1 )
|
||||||
[145] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2)
|
[143] (signed word) rotate::cos_a#0 ← (signed word)*((const signed byte*) COS + (byte) rotate::angle#2)
|
||||||
[146] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0
|
[144] (signed word) mulf16s::a#0 ← (signed word) rotate::cos_a#0
|
||||||
[147] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2
|
[145] (signed word) mulf16s::b#0 ← (signed word) rotate::vector_x#2
|
||||||
[148] call mulf16s
|
[146] call mulf16s
|
||||||
[149] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0
|
[147] (signed dword) mulf16s::return#2 ← (signed dword) mulf16s::return#0
|
||||||
to:rotate::@1
|
to:rotate::@1
|
||||||
rotate::@1: scope:[rotate] from rotate
|
rotate::@1: scope:[rotate] from rotate
|
||||||
[150] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2
|
[148] (signed dword~) rotate::$0 ← (signed dword) mulf16s::return#2
|
||||||
[151] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0
|
[149] (signed word~) rotate::$10 ← (signed word)(signed dword~) rotate::$0
|
||||||
[152] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1
|
[150] (signed word) rotate::xr#0 ← (signed word~) rotate::$10 << (byte) 1
|
||||||
[153] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0
|
[151] (signed word) mulf16s::a#1 ← (signed word) rotate::cos_a#0
|
||||||
[154] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2
|
[152] (signed word) mulf16s::b#1 ← (signed word) rotate::vector_y#2
|
||||||
[155] call mulf16s
|
[153] call mulf16s
|
||||||
[156] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0
|
[154] (signed dword) mulf16s::return#3 ← (signed dword) mulf16s::return#0
|
||||||
to:rotate::@2
|
to:rotate::@2
|
||||||
rotate::@2: scope:[rotate] from rotate::@1
|
rotate::@2: scope:[rotate] from rotate::@1
|
||||||
[157] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3
|
[155] (signed dword~) rotate::$2 ← (signed dword) mulf16s::return#3
|
||||||
[158] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2
|
[156] (signed word~) rotate::$11 ← (signed word)(signed dword~) rotate::$2
|
||||||
[159] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1
|
[157] (signed word) rotate::yr#0 ← (signed word~) rotate::$11 << (byte) 1
|
||||||
[160] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2)
|
[158] (signed word) rotate::sin_a#0 ← (signed word)*((const signed byte*) SIN + (byte) rotate::angle#2)
|
||||||
[161] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0
|
[159] (signed word) mulf16s::a#2 ← (signed word) rotate::sin_a#0
|
||||||
[162] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2
|
[160] (signed word) mulf16s::b#2 ← (signed word) rotate::vector_y#2
|
||||||
[163] call mulf16s
|
[161] call mulf16s
|
||||||
[164] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0
|
[162] (signed dword) mulf16s::return#4 ← (signed dword) mulf16s::return#0
|
||||||
to:rotate::@3
|
to:rotate::@3
|
||||||
rotate::@3: scope:[rotate] from rotate::@2
|
rotate::@3: scope:[rotate] from rotate::@2
|
||||||
[165] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4
|
[163] (signed dword~) rotate::$4 ← (signed dword) mulf16s::return#4
|
||||||
[166] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4
|
[164] (signed word~) rotate::$12 ← (signed word)(signed dword~) rotate::$4
|
||||||
[167] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1
|
[165] (signed word~) rotate::$5 ← (signed word~) rotate::$12 << (byte) 1
|
||||||
[168] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5
|
[166] (signed word) rotate::xr#1 ← (signed word) rotate::xr#0 - (signed word~) rotate::$5
|
||||||
[169] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0
|
[167] (signed word) mulf16s::a#3 ← (signed word) rotate::sin_a#0
|
||||||
[170] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2
|
[168] (signed word) mulf16s::b#3 ← (signed word) rotate::vector_x#2
|
||||||
[171] call mulf16s
|
[169] call mulf16s
|
||||||
[172] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0
|
[170] (signed dword) mulf16s::return#10 ← (signed dword) mulf16s::return#0
|
||||||
to:rotate::@4
|
to:rotate::@4
|
||||||
rotate::@4: scope:[rotate] from rotate::@3
|
rotate::@4: scope:[rotate] from rotate::@3
|
||||||
[173] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10
|
[171] (signed dword~) rotate::$6 ← (signed dword) mulf16s::return#10
|
||||||
[174] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6
|
[172] (signed word~) rotate::$13 ← (signed word)(signed dword~) rotate::$6
|
||||||
[175] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1
|
[173] (signed word~) rotate::$7 ← (signed word~) rotate::$13 << (byte) 1
|
||||||
[176] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7
|
[174] (signed word) rotate::yr#1 ← (signed word) rotate::yr#0 + (signed word~) rotate::$7
|
||||||
[177] (byte~) rotate::$8 ← > (signed word) rotate::xr#1
|
[175] (byte~) rotate::$8 ← > (signed word) rotate::xr#1
|
||||||
[178] (byte~) rotate::$9 ← > (signed word) rotate::yr#1
|
[176] (byte~) rotate::$9 ← > (signed word) rotate::yr#1
|
||||||
[179] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8
|
[177] (signed word) rotate::return_x#2 ← (signed word)(signed byte)(byte~) rotate::$8
|
||||||
[180] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9
|
[178] (signed word) rotate::return_y#2 ← (signed word)(signed byte)(byte~) rotate::$9
|
||||||
to:rotate::@return
|
to:rotate::@return
|
||||||
rotate::@return: scope:[rotate] from rotate::@4
|
rotate::@return: scope:[rotate] from rotate::@4
|
||||||
[181] return
|
[179] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
|
(void()) bitmap_line((word) bitmap_line::x1 , (word) bitmap_line::y1 , (word) bitmap_line::x2 , (word) bitmap_line::y2)
|
||||||
bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 show_letter::@5
|
bitmap_line: scope:[bitmap_line] from bitmap_plot_spline_8seg::@1 show_letter::@5
|
||||||
[182] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#13 show_letter::@5/(word) bitmap_line::y2#0 )
|
[180] (word) bitmap_line::y2#11 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y2#13 show_letter::@5/(word) bitmap_line::y2#0 )
|
||||||
[182] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#13 show_letter::@5/(word) bitmap_line::x2#0 )
|
[180] (word) bitmap_line::x2#10 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x2#13 show_letter::@5/(word) bitmap_line::x2#0 )
|
||||||
[182] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 show_letter::@5/(word) bitmap_line::y1#0 )
|
[180] (word) bitmap_line::y#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::y1#1 show_letter::@5/(word) bitmap_line::y1#0 )
|
||||||
[182] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 show_letter::@5/(word) bitmap_line::x1#0 )
|
[180] (word) bitmap_line::x#0 ← phi( bitmap_plot_spline_8seg::@1/(word) bitmap_line::x1#1 show_letter::@5/(word) bitmap_line::x1#0 )
|
||||||
[183] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0
|
[181] (word) abs_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0
|
||||||
[184] call abs_u16
|
[182] call abs_u16
|
||||||
[185] (word) abs_u16::return#0 ← (word) abs_u16::return#4
|
[183] (word) abs_u16::return#0 ← (word) abs_u16::return#4
|
||||||
to:bitmap_line::@12
|
to:bitmap_line::@12
|
||||||
bitmap_line::@12: scope:[bitmap_line] from bitmap_line
|
bitmap_line::@12: scope:[bitmap_line] from bitmap_line
|
||||||
[186] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0
|
[184] (word) bitmap_line::dx#0 ← (word) abs_u16::return#0
|
||||||
[187] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0
|
[185] (word) abs_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0
|
||||||
[188] call abs_u16
|
[186] call abs_u16
|
||||||
[189] (word) abs_u16::return#1 ← (word) abs_u16::return#4
|
[187] (word) abs_u16::return#1 ← (word) abs_u16::return#4
|
||||||
to:bitmap_line::@13
|
to:bitmap_line::@13
|
||||||
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12
|
bitmap_line::@13: scope:[bitmap_line] from bitmap_line::@12
|
||||||
[190] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1
|
[188] (word) bitmap_line::dy#0 ← (word) abs_u16::return#1
|
||||||
[191] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1
|
[189] if((word) bitmap_line::dx#0!=(byte) 0) goto bitmap_line::@1
|
||||||
to:bitmap_line::@18
|
to:bitmap_line::@18
|
||||||
bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13
|
bitmap_line::@18: scope:[bitmap_line] from bitmap_line::@13
|
||||||
[192] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4
|
[190] if((word) bitmap_line::dy#0==(byte) 0) goto bitmap_line::@4
|
||||||
to:bitmap_line::@1
|
to:bitmap_line::@1
|
||||||
bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18
|
bitmap_line::@1: scope:[bitmap_line] from bitmap_line::@13 bitmap_line::@18
|
||||||
[193] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0
|
[191] (word) sgn_u16::w#0 ← (word) bitmap_line::x2#10 - (word) bitmap_line::x#0
|
||||||
[194] call sgn_u16
|
[192] call sgn_u16
|
||||||
[195] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
|
[193] (word) sgn_u16::return#0 ← (word) sgn_u16::return#4
|
||||||
to:bitmap_line::@14
|
to:bitmap_line::@14
|
||||||
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1
|
bitmap_line::@14: scope:[bitmap_line] from bitmap_line::@1
|
||||||
[196] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0
|
[194] (word) bitmap_line::sx#0 ← (word) sgn_u16::return#0
|
||||||
[197] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0
|
[195] (word) sgn_u16::w#1 ← (word) bitmap_line::y2#11 - (word) bitmap_line::y#0
|
||||||
[198] call sgn_u16
|
[196] call sgn_u16
|
||||||
[199] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
|
[197] (word) sgn_u16::return#1 ← (word) sgn_u16::return#4
|
||||||
to:bitmap_line::@15
|
to:bitmap_line::@15
|
||||||
bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14
|
bitmap_line::@15: scope:[bitmap_line] from bitmap_line::@14
|
||||||
[200] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1
|
[198] (word) bitmap_line::sy#0 ← (word) sgn_u16::return#1
|
||||||
[201] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2
|
[199] if((word) bitmap_line::dx#0>(word) bitmap_line::dy#0) goto bitmap_line::@2
|
||||||
to:bitmap_line::@5
|
to:bitmap_line::@5
|
||||||
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15
|
bitmap_line::@5: scope:[bitmap_line] from bitmap_line::@15
|
||||||
[202] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1
|
[200] (word) bitmap_line::e#0 ← (word) bitmap_line::dx#0 >> (byte) 1
|
||||||
to:bitmap_line::@6
|
to:bitmap_line::@6
|
||||||
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7
|
bitmap_line::@6: scope:[bitmap_line] from bitmap_line::@5 bitmap_line::@7
|
||||||
[203] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 )
|
[201] (word) bitmap_line::e#3 ← phi( bitmap_line::@5/(word) bitmap_line::e#0 bitmap_line::@7/(word) bitmap_line::e#6 )
|
||||||
[203] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 )
|
[201] (word) bitmap_line::y#4 ← phi( bitmap_line::@5/(word) bitmap_line::y#0 bitmap_line::@7/(word) bitmap_line::y#1 )
|
||||||
[203] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 )
|
[201] (word) bitmap_line::x#13 ← phi( bitmap_line::@5/(word) bitmap_line::x#0 bitmap_line::@7/(word) bitmap_line::x#12 )
|
||||||
[204] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13
|
[202] (word) bitmap_plot::x#1 ← (word) bitmap_line::x#13
|
||||||
[205] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4
|
[203] (byte) bitmap_plot::y#1 ← (byte)(word) bitmap_line::y#4
|
||||||
[206] call bitmap_plot
|
[204] call bitmap_plot
|
||||||
to:bitmap_line::@16
|
to:bitmap_line::@16
|
||||||
bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6
|
bitmap_line::@16: scope:[bitmap_line] from bitmap_line::@6
|
||||||
[207] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0
|
[205] (word) bitmap_line::y#1 ← (word) bitmap_line::y#4 + (word) bitmap_line::sy#0
|
||||||
[208] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0
|
[206] (word) bitmap_line::e#1 ← (word) bitmap_line::e#3 + (word) bitmap_line::dx#0
|
||||||
[209] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7
|
[207] if((word) bitmap_line::dy#0>=(word) bitmap_line::e#1) goto bitmap_line::@7
|
||||||
to:bitmap_line::@8
|
to:bitmap_line::@8
|
||||||
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16
|
bitmap_line::@8: scope:[bitmap_line] from bitmap_line::@16
|
||||||
[210] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0
|
[208] (word) bitmap_line::x#1 ← (word) bitmap_line::x#13 + (word) bitmap_line::sx#0
|
||||||
[211] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0
|
[209] (word) bitmap_line::e#2 ← (word) bitmap_line::e#1 - (word) bitmap_line::dy#0
|
||||||
to:bitmap_line::@7
|
to:bitmap_line::@7
|
||||||
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8
|
bitmap_line::@7: scope:[bitmap_line] from bitmap_line::@16 bitmap_line::@8
|
||||||
[212] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 )
|
[210] (word) bitmap_line::e#6 ← phi( bitmap_line::@16/(word) bitmap_line::e#1 bitmap_line::@8/(word) bitmap_line::e#2 )
|
||||||
[212] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 )
|
[210] (word) bitmap_line::x#12 ← phi( bitmap_line::@16/(word) bitmap_line::x#13 bitmap_line::@8/(word) bitmap_line::x#1 )
|
||||||
[213] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6
|
[211] if((word) bitmap_line::y#1!=(word) bitmap_line::y2#11) goto bitmap_line::@6
|
||||||
to:bitmap_line::@3
|
to:bitmap_line::@3
|
||||||
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7
|
bitmap_line::@3: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@7
|
||||||
[214] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 )
|
[212] (word) bitmap_line::y#7 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@7/(word) bitmap_line::y#1 )
|
||||||
[214] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 )
|
[212] (word) bitmap_line::x#6 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@7/(word) bitmap_line::x#12 )
|
||||||
[215] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
|
[213] (word) bitmap_plot::x#2 ← (word) bitmap_line::x#6
|
||||||
[216] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7
|
[214] (byte) bitmap_plot::y#2 ← (byte)(word) bitmap_line::y#7
|
||||||
[217] call bitmap_plot
|
[215] call bitmap_plot
|
||||||
to:bitmap_line::@return
|
to:bitmap_line::@return
|
||||||
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4
|
bitmap_line::@return: scope:[bitmap_line] from bitmap_line::@3 bitmap_line::@4
|
||||||
[218] return
|
[216] return
|
||||||
to:@return
|
to:@return
|
||||||
bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15
|
bitmap_line::@2: scope:[bitmap_line] from bitmap_line::@15
|
||||||
[219] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1
|
[217] (word) bitmap_line::e1#0 ← (word) bitmap_line::dy#0 >> (byte) 1
|
||||||
to:bitmap_line::@9
|
to:bitmap_line::@9
|
||||||
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2
|
bitmap_line::@9: scope:[bitmap_line] from bitmap_line::@10 bitmap_line::@2
|
||||||
[220] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 )
|
[218] (word) bitmap_line::e1#3 ← phi( bitmap_line::@10/(word) bitmap_line::e1#6 bitmap_line::@2/(word) bitmap_line::e1#0 )
|
||||||
[220] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 )
|
[218] (word) bitmap_line::y#15 ← phi( bitmap_line::@10/(word) bitmap_line::y#13 bitmap_line::@2/(word) bitmap_line::y#0 )
|
||||||
[220] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 )
|
[218] (word) bitmap_line::x#7 ← phi( bitmap_line::@10/(word) bitmap_line::x#15 bitmap_line::@2/(word) bitmap_line::x#0 )
|
||||||
[221] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
|
[219] (word) bitmap_plot::x#3 ← (word) bitmap_line::x#7
|
||||||
[222] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15
|
[220] (byte) bitmap_plot::y#3 ← (byte)(word) bitmap_line::y#15
|
||||||
[223] call bitmap_plot
|
[221] call bitmap_plot
|
||||||
to:bitmap_line::@17
|
to:bitmap_line::@17
|
||||||
bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9
|
bitmap_line::@17: scope:[bitmap_line] from bitmap_line::@9
|
||||||
[224] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0
|
[222] (word) bitmap_line::x#15 ← (word) bitmap_line::x#7 + (word) bitmap_line::sx#0
|
||||||
[225] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0
|
[223] (word) bitmap_line::e1#1 ← (word) bitmap_line::e1#3 + (word) bitmap_line::dy#0
|
||||||
[226] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10
|
[224] if((word) bitmap_line::dx#0>=(word) bitmap_line::e1#1) goto bitmap_line::@10
|
||||||
to:bitmap_line::@11
|
to:bitmap_line::@11
|
||||||
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17
|
bitmap_line::@11: scope:[bitmap_line] from bitmap_line::@17
|
||||||
[227] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0
|
[225] (word) bitmap_line::y#2 ← (word) bitmap_line::y#15 + (word) bitmap_line::sy#0
|
||||||
[228] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0
|
[226] (word) bitmap_line::e1#2 ← (word) bitmap_line::e1#1 - (word) bitmap_line::dx#0
|
||||||
to:bitmap_line::@10
|
to:bitmap_line::@10
|
||||||
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17
|
bitmap_line::@10: scope:[bitmap_line] from bitmap_line::@11 bitmap_line::@17
|
||||||
[229] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 )
|
[227] (word) bitmap_line::e1#6 ← phi( bitmap_line::@11/(word) bitmap_line::e1#2 bitmap_line::@17/(word) bitmap_line::e1#1 )
|
||||||
[229] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 )
|
[227] (word) bitmap_line::y#13 ← phi( bitmap_line::@11/(word) bitmap_line::y#2 bitmap_line::@17/(word) bitmap_line::y#15 )
|
||||||
[230] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9
|
[228] if((word) bitmap_line::x#15!=(word) bitmap_line::x2#10) goto bitmap_line::@9
|
||||||
to:bitmap_line::@3
|
to:bitmap_line::@3
|
||||||
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
|
bitmap_line::@4: scope:[bitmap_line] from bitmap_line::@18
|
||||||
[231] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0
|
[229] (word) bitmap_plot::x#0 ← (word) bitmap_line::x#0
|
||||||
[232] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0
|
[230] (byte) bitmap_plot::y#0 ← (byte)(word) bitmap_line::y#0
|
||||||
[233] call bitmap_plot
|
[231] call bitmap_plot
|
||||||
to:bitmap_line::@return
|
to:bitmap_line::@return
|
||||||
|
|
||||||
(void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y)
|
(void()) spline_8segB((signed word) spline_8segB::p0_x , (signed word) spline_8segB::p0_y , (signed word) spline_8segB::p1_x , (signed word) spline_8segB::p1_y , (signed word) spline_8segB::p2_x , (signed word) spline_8segB::p2_y)
|
||||||
spline_8segB: scope:[spline_8segB] from show_letter::@2
|
spline_8segB: scope:[spline_8segB] from show_letter::@2
|
||||||
[234] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1
|
[232] (signed word~) spline_8segB::$0 ← (signed word) spline_8segB::p1_x#0 << (byte) 1
|
||||||
[235] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0
|
[233] (signed word~) spline_8segB::$1 ← (signed word) spline_8segB::p2_x#0 - (signed word~) spline_8segB::$0
|
||||||
[236] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0
|
[234] (signed word) spline_8segB::a_x#0 ← (signed word~) spline_8segB::$1 + (signed word) spline_8segB::p0_x#0
|
||||||
[237] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1
|
[235] (signed word~) spline_8segB::$3 ← (signed word) spline_8segB::p1_y#0 << (byte) 1
|
||||||
[238] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3
|
[236] (signed word~) spline_8segB::$4 ← (signed word) spline_8segB::p2_y#0 - (signed word~) spline_8segB::$3
|
||||||
[239] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0
|
[237] (signed word) spline_8segB::a_y#0 ← (signed word~) spline_8segB::$4 + (signed word) spline_8segB::p0_y#0
|
||||||
[240] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0
|
[238] (signed word~) spline_8segB::$6 ← (signed word) spline_8segB::p1_x#0 - (signed word) spline_8segB::p0_x#0
|
||||||
[241] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1
|
[239] (signed word) spline_8segB::b_x#0 ← (signed word~) spline_8segB::$6 << (byte) 1
|
||||||
[242] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0
|
[240] (signed word~) spline_8segB::$8 ← (signed word) spline_8segB::p1_y#0 - (signed word) spline_8segB::p0_y#0
|
||||||
[243] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1
|
[241] (signed word) spline_8segB::b_y#0 ← (signed word~) spline_8segB::$8 << (byte) 1
|
||||||
[244] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3
|
[242] (signed word~) spline_8segB::$10 ← (signed word) spline_8segB::b_x#0 << (byte) 3
|
||||||
[245] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10
|
[243] (signed word) spline_8segB::i_x#0 ← (signed word) spline_8segB::a_x#0 + (signed word~) spline_8segB::$10
|
||||||
[246] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3
|
[244] (signed word~) spline_8segB::$12 ← (signed word) spline_8segB::b_y#0 << (byte) 3
|
||||||
[247] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12
|
[245] (signed word) spline_8segB::i_y#0 ← (signed word) spline_8segB::a_y#0 + (signed word~) spline_8segB::$12
|
||||||
[248] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1
|
[246] (signed word) spline_8segB::j_x#0 ← (signed word) spline_8segB::a_x#0 << (byte) 1
|
||||||
[249] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1
|
[247] (signed word) spline_8segB::j_y#0 ← (signed word) spline_8segB::a_y#0 << (byte) 1
|
||||||
[250] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6
|
[248] (signed word) spline_8segB::p_x#0 ← (signed word) spline_8segB::p0_x#0 << (byte) 6
|
||||||
[251] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6
|
[249] (signed word) spline_8segB::p_y#0 ← (signed word) spline_8segB::p0_y#0 << (byte) 6
|
||||||
to:spline_8segB::@1
|
to:spline_8segB::@1
|
||||||
spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1
|
spline_8segB::@1: scope:[spline_8segB] from spline_8segB spline_8segB::@1
|
||||||
[252] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 )
|
[250] (signed word) spline_8segB::i_y#2 ← phi( spline_8segB/(signed word) spline_8segB::i_y#0 spline_8segB::@1/(signed word) spline_8segB::i_y#1 )
|
||||||
[252] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 )
|
[250] (signed word) spline_8segB::i_x#2 ← phi( spline_8segB/(signed word) spline_8segB::i_x#0 spline_8segB::@1/(signed word) spline_8segB::i_x#1 )
|
||||||
[252] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 )
|
[250] (byte) spline_8segB::n#2 ← phi( spline_8segB/(byte) 0 spline_8segB::@1/(byte) spline_8segB::n#1 )
|
||||||
[252] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 )
|
[250] (signed word) spline_8segB::p_y#2 ← phi( spline_8segB/(signed word) spline_8segB::p_y#0 spline_8segB::@1/(signed word) spline_8segB::p_y#1 )
|
||||||
[252] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 )
|
[250] (signed word) spline_8segB::p_x#2 ← phi( spline_8segB/(signed word) spline_8segB::p_x#0 spline_8segB::@1/(signed word) spline_8segB::p_x#1 )
|
||||||
[253] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20
|
[251] (signed word~) spline_8segB::$22 ← (signed word) spline_8segB::p_x#2 + (signed byte) $20
|
||||||
[254] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6
|
[252] (signed word~) spline_8segB::$23 ← (signed word~) spline_8segB::$22 >> (byte) 6
|
||||||
[255] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20
|
[253] (signed word~) spline_8segB::$24 ← (signed word) spline_8segB::p_y#2 + (signed byte) $20
|
||||||
[256] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6
|
[254] (signed word~) spline_8segB::$25 ← (signed word~) spline_8segB::$24 >> (byte) 6
|
||||||
[257] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2
|
[255] (byte~) spline_8segB::$31 ← (byte) spline_8segB::n#2 << (byte) 2
|
||||||
[258] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23
|
[256] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$23
|
||||||
[259] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25
|
[257] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) spline_8segB::$31) ← (signed word~) spline_8segB::$25
|
||||||
[260] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2
|
[258] (signed word) spline_8segB::p_x#1 ← (signed word) spline_8segB::p_x#2 + (signed word) spline_8segB::i_x#2
|
||||||
[261] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2
|
[259] (signed word) spline_8segB::p_y#1 ← (signed word) spline_8segB::p_y#2 + (signed word) spline_8segB::i_y#2
|
||||||
[262] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0
|
[260] (signed word) spline_8segB::i_x#1 ← (signed word) spline_8segB::i_x#2 + (signed word) spline_8segB::j_x#0
|
||||||
[263] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0
|
[261] (signed word) spline_8segB::i_y#1 ← (signed word) spline_8segB::i_y#2 + (signed word) spline_8segB::j_y#0
|
||||||
[264] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2
|
[262] (byte) spline_8segB::n#1 ← ++ (byte) spline_8segB::n#2
|
||||||
[265] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1
|
[263] if((byte) spline_8segB::n#1!=(byte) 8) goto spline_8segB::@1
|
||||||
to:spline_8segB::@2
|
to:spline_8segB::@2
|
||||||
spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1
|
spline_8segB::@2: scope:[spline_8segB] from spline_8segB::@1
|
||||||
[266] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20
|
[264] (signed word~) spline_8segB::$18 ← (signed word) spline_8segB::p_x#1 + (signed byte) $20
|
||||||
[267] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6
|
[265] (signed word~) spline_8segB::$19 ← (signed word~) spline_8segB::$18 >> (byte) 6
|
||||||
[268] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20
|
[266] (signed word~) spline_8segB::$20 ← (signed word) spline_8segB::p_y#1 + (signed byte) $20
|
||||||
[269] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6
|
[267] (signed word~) spline_8segB::$21 ← (signed word~) spline_8segB::$20 >> (byte) 6
|
||||||
[270] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19
|
[268] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$19
|
||||||
[271] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21
|
[269] *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y+(byte) 8*(const byte) SIZEOF_STRUCT_SPLINEVECTOR16) ← (signed word~) spline_8segB::$21
|
||||||
to:spline_8segB::@return
|
to:spline_8segB::@return
|
||||||
spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2
|
spline_8segB::@return: scope:[spline_8segB] from spline_8segB::@2
|
||||||
[272] return
|
[270] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) bitmap_plot_spline_8seg()
|
(void()) bitmap_plot_spline_8seg()
|
||||||
bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from show_letter::@8
|
bitmap_plot_spline_8seg: scope:[bitmap_plot_spline_8seg] from show_letter::@8
|
||||||
[273] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG)
|
[271] (signed word) bitmap_plot_spline_8seg::current_x#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG)
|
||||||
[274] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y)
|
[272] (signed word) bitmap_plot_spline_8seg::current_y#0 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y)
|
||||||
to:bitmap_plot_spline_8seg::@1
|
to:bitmap_plot_spline_8seg::@1
|
||||||
bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@2
|
bitmap_plot_spline_8seg::@1: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg bitmap_plot_spline_8seg::@2
|
||||||
[275] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_y#1 )
|
[273] (signed word) bitmap_plot_spline_8seg::current_y#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_y#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_y#1 )
|
||||||
[275] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_x#1 )
|
[273] (signed word) bitmap_plot_spline_8seg::current_x#2 ← phi( bitmap_plot_spline_8seg/(signed word) bitmap_plot_spline_8seg::current_x#0 bitmap_plot_spline_8seg::@2/(signed word) bitmap_plot_spline_8seg::current_x#1 )
|
||||||
[275] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@2/(byte) bitmap_plot_spline_8seg::n#1 )
|
[273] (byte) bitmap_plot_spline_8seg::n#2 ← phi( bitmap_plot_spline_8seg/(byte) 1 bitmap_plot_spline_8seg::@2/(byte) bitmap_plot_spline_8seg::n#1 )
|
||||||
[276] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2
|
[274] (byte~) bitmap_plot_spline_8seg::$4 ← (byte) bitmap_plot_spline_8seg::n#2 << (byte) 2
|
||||||
[277] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2
|
[275] (word) bitmap_line::x1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_x#2
|
||||||
[278] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2
|
[276] (word) bitmap_line::y1#1 ← (word)(signed word) bitmap_plot_spline_8seg::current_y#2
|
||||||
[279] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4)
|
[277] (word) bitmap_line::x2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4)
|
||||||
[280] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4)
|
[278] (word) bitmap_line::y2#13 ← (word)*((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4)
|
||||||
[281] call bitmap_line
|
[279] call bitmap_line
|
||||||
to:bitmap_plot_spline_8seg::@2
|
to:bitmap_plot_spline_8seg::@2
|
||||||
bitmap_plot_spline_8seg::@2: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1
|
bitmap_plot_spline_8seg::@2: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@1
|
||||||
[282] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4)
|
[280] (signed word) bitmap_plot_spline_8seg::current_x#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG + (byte~) bitmap_plot_spline_8seg::$4)
|
||||||
[283] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4)
|
[281] (signed word) bitmap_plot_spline_8seg::current_y#1 ← *((signed word*)(const struct SplineVector16*) SPLINE_8SEG+(const byte) OFFSET_STRUCT_SPLINEVECTOR16_Y + (byte~) bitmap_plot_spline_8seg::$4)
|
||||||
[284] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2
|
[282] (byte) bitmap_plot_spline_8seg::n#1 ← ++ (byte) bitmap_plot_spline_8seg::n#2
|
||||||
[285] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1
|
[283] if((byte) bitmap_plot_spline_8seg::n#1!=(byte) 9) goto bitmap_plot_spline_8seg::@1
|
||||||
to:bitmap_plot_spline_8seg::@return
|
to:bitmap_plot_spline_8seg::@return
|
||||||
bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2
|
bitmap_plot_spline_8seg::@return: scope:[bitmap_plot_spline_8seg] from bitmap_plot_spline_8seg::@2
|
||||||
[286] return
|
[284] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
|
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
|
||||||
mulf16s: scope:[mulf16s] from rotate rotate::@1 rotate::@2 rotate::@3
|
mulf16s: scope:[mulf16s] from rotate rotate::@1 rotate::@2 rotate::@3
|
||||||
[287] (signed word) mulf16s::b#4 ← phi( rotate/(signed word) mulf16s::b#0 rotate::@1/(signed word) mulf16s::b#1 rotate::@2/(signed word) mulf16s::b#2 rotate::@3/(signed word) mulf16s::b#3 )
|
[285] (signed word) mulf16s::b#4 ← phi( rotate/(signed word) mulf16s::b#0 rotate::@1/(signed word) mulf16s::b#1 rotate::@2/(signed word) mulf16s::b#2 rotate::@3/(signed word) mulf16s::b#3 )
|
||||||
[287] (signed word) mulf16s::a#4 ← phi( rotate/(signed word) mulf16s::a#0 rotate::@1/(signed word) mulf16s::a#1 rotate::@2/(signed word) mulf16s::a#2 rotate::@3/(signed word) mulf16s::a#3 )
|
[285] (signed word) mulf16s::a#4 ← phi( rotate/(signed word) mulf16s::a#0 rotate::@1/(signed word) mulf16s::a#1 rotate::@2/(signed word) mulf16s::a#2 rotate::@3/(signed word) mulf16s::a#3 )
|
||||||
[288] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4
|
[286] (word) mulf16u::a#0 ← (word)(signed word) mulf16s::a#4
|
||||||
[289] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4
|
[287] (word) mulf16u::b#0 ← (word)(signed word) mulf16s::b#4
|
||||||
[290] call mulf16u
|
[288] call mulf16u
|
||||||
[291] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
|
[289] (dword) mulf16u::return#2 ← (dword) mulf16u::return#0
|
||||||
to:mulf16s::@5
|
to:mulf16s::@5
|
||||||
mulf16s::@5: scope:[mulf16s] from mulf16s
|
mulf16s::@5: scope:[mulf16s] from mulf16s
|
||||||
[292] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
|
[290] (dword) mulf16s::m#0 ← (dword) mulf16u::return#2
|
||||||
[293] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1
|
[291] if((signed word) mulf16s::a#4>=(signed byte) 0) goto mulf16s::@1
|
||||||
to:mulf16s::@3
|
to:mulf16s::@3
|
||||||
mulf16s::@3: scope:[mulf16s] from mulf16s::@5
|
mulf16s::@3: scope:[mulf16s] from mulf16s::@5
|
||||||
[294] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0
|
[292] (word~) mulf16s::$6 ← > (dword) mulf16s::m#0
|
||||||
[295] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4
|
[293] (word~) mulf16s::$11 ← (word~) mulf16s::$6 - (word)(signed word) mulf16s::b#4
|
||||||
[296] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11
|
[294] (dword) mulf16s::m#1 ← (dword) mulf16s::m#0 hi= (word~) mulf16s::$11
|
||||||
to:mulf16s::@1
|
to:mulf16s::@1
|
||||||
mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5
|
mulf16s::@1: scope:[mulf16s] from mulf16s::@3 mulf16s::@5
|
||||||
[297] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 )
|
[295] (dword) mulf16s::m#5 ← phi( mulf16s::@3/(dword) mulf16s::m#1 mulf16s::@5/(dword) mulf16s::m#0 )
|
||||||
[298] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2
|
[296] if((signed word) mulf16s::b#4>=(signed byte) 0) goto mulf16s::@2
|
||||||
to:mulf16s::@4
|
to:mulf16s::@4
|
||||||
mulf16s::@4: scope:[mulf16s] from mulf16s::@1
|
mulf16s::@4: scope:[mulf16s] from mulf16s::@1
|
||||||
[299] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5
|
[297] (word~) mulf16s::$9 ← > (dword) mulf16s::m#5
|
||||||
[300] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4
|
[298] (word~) mulf16s::$12 ← (word~) mulf16s::$9 - (word)(signed word) mulf16s::a#4
|
||||||
[301] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12
|
[299] (dword) mulf16s::m#2 ← (dword) mulf16s::m#5 hi= (word~) mulf16s::$12
|
||||||
to:mulf16s::@2
|
to:mulf16s::@2
|
||||||
mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4
|
mulf16s::@2: scope:[mulf16s] from mulf16s::@1 mulf16s::@4
|
||||||
[302] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
|
[300] (dword) mulf16s::m#4 ← phi( mulf16s::@1/(dword) mulf16s::m#5 mulf16s::@4/(dword) mulf16s::m#2 )
|
||||||
[303] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
|
[301] (signed dword) mulf16s::return#0 ← (signed dword)(dword) mulf16s::m#4
|
||||||
to:mulf16s::@return
|
to:mulf16s::@return
|
||||||
mulf16s::@return: scope:[mulf16s] from mulf16s::@2
|
mulf16s::@return: scope:[mulf16s] from mulf16s::@2
|
||||||
[304] return
|
[302] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(word()) abs_u16((word) abs_u16::w)
|
(word()) abs_u16((word) abs_u16::w)
|
||||||
abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12
|
abs_u16: scope:[abs_u16] from bitmap_line bitmap_line::@12
|
||||||
[305] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 )
|
[303] (word) abs_u16::w#2 ← phi( bitmap_line/(word) abs_u16::w#0 bitmap_line::@12/(word) abs_u16::w#1 )
|
||||||
[306] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2
|
[304] (byte~) abs_u16::$0 ← > (word) abs_u16::w#2
|
||||||
[307] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80
|
[305] (byte~) abs_u16::$1 ← (byte~) abs_u16::$0 & (byte) $80
|
||||||
[308] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1
|
[306] if((byte) 0!=(byte~) abs_u16::$1) goto abs_u16::@1
|
||||||
to:abs_u16::@return
|
to:abs_u16::@return
|
||||||
abs_u16::@1: scope:[abs_u16] from abs_u16
|
abs_u16::@1: scope:[abs_u16] from abs_u16
|
||||||
[309] (word) abs_u16::return#2 ← - (word) abs_u16::w#2
|
[307] (word) abs_u16::return#2 ← - (word) abs_u16::w#2
|
||||||
to:abs_u16::@return
|
to:abs_u16::@return
|
||||||
abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1
|
abs_u16::@return: scope:[abs_u16] from abs_u16 abs_u16::@1
|
||||||
[310] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 )
|
[308] (word) abs_u16::return#4 ← phi( abs_u16::@1/(word) abs_u16::return#2 abs_u16/(word) abs_u16::w#2 )
|
||||||
[311] return
|
[309] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(word()) sgn_u16((word) sgn_u16::w)
|
(word()) sgn_u16((word) sgn_u16::w)
|
||||||
sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14
|
sgn_u16: scope:[sgn_u16] from bitmap_line::@1 bitmap_line::@14
|
||||||
[312] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 )
|
[310] (word) sgn_u16::w#2 ← phi( bitmap_line::@1/(word) sgn_u16::w#0 bitmap_line::@14/(word) sgn_u16::w#1 )
|
||||||
[313] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2
|
[311] (byte~) sgn_u16::$0 ← > (word) sgn_u16::w#2
|
||||||
[314] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80
|
[312] (byte~) sgn_u16::$1 ← (byte~) sgn_u16::$0 & (byte) $80
|
||||||
[315] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1
|
[313] if((byte) 0!=(byte~) sgn_u16::$1) goto sgn_u16::@1
|
||||||
to:sgn_u16::@return
|
to:sgn_u16::@return
|
||||||
sgn_u16::@1: scope:[sgn_u16] from sgn_u16
|
sgn_u16::@1: scope:[sgn_u16] from sgn_u16
|
||||||
[316] phi()
|
[314] phi()
|
||||||
to:sgn_u16::@return
|
to:sgn_u16::@return
|
||||||
sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1
|
sgn_u16::@return: scope:[sgn_u16] from sgn_u16 sgn_u16::@1
|
||||||
[317] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 )
|
[315] (word) sgn_u16::return#4 ← phi( sgn_u16::@1/(byte) -1 sgn_u16/(byte) 1 )
|
||||||
[318] return
|
[316] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
(void()) bitmap_plot((word) bitmap_plot::x , (byte) bitmap_plot::y)
|
||||||
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
|
bitmap_plot: scope:[bitmap_plot] from bitmap_line::@3 bitmap_line::@4 bitmap_line::@6 bitmap_line::@9
|
||||||
[319] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 )
|
[317] (word) bitmap_plot::x#4 ← phi( bitmap_line::@3/(word) bitmap_plot::x#2 bitmap_line::@4/(word) bitmap_plot::x#0 bitmap_line::@6/(word) bitmap_plot::x#1 bitmap_line::@9/(word) bitmap_plot::x#3 )
|
||||||
[319] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 )
|
[317] (byte) bitmap_plot::y#4 ← phi( bitmap_line::@3/(byte) bitmap_plot::y#2 bitmap_line::@4/(byte) bitmap_plot::y#0 bitmap_line::@6/(byte) bitmap_plot::y#1 bitmap_line::@9/(byte) bitmap_plot::y#3 )
|
||||||
[320] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
|
[318] (word) bitmap_plot::plotter#0 ← *((const to_nomodify byte*) bitmap_plot_yhi + (byte) bitmap_plot::y#4) w= *((const to_nomodify byte*) bitmap_plot_ylo + (byte) bitmap_plot::y#4)
|
||||||
[321] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8
|
[319] (word~) bitmap_plot::$0 ← (word) bitmap_plot::x#4 & (word) $fff8
|
||||||
[322] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0
|
[320] (byte*) bitmap_plot::plotter#1 ← (byte*)(word) bitmap_plot::plotter#0 + (word~) bitmap_plot::$0
|
||||||
[323] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4
|
[321] (byte~) bitmap_plot::$1 ← < (word) bitmap_plot::x#4
|
||||||
[324] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1)
|
[322] *((byte*) bitmap_plot::plotter#1) ← *((byte*) bitmap_plot::plotter#1) | *((const to_nomodify byte*) bitmap_plot_bit + (byte~) bitmap_plot::$1)
|
||||||
to:bitmap_plot::@return
|
to:bitmap_plot::@return
|
||||||
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
bitmap_plot::@return: scope:[bitmap_plot] from bitmap_plot
|
||||||
[325] return
|
[323] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
|
(dword()) mulf16u((word) mulf16u::a , (word) mulf16u::b)
|
||||||
mulf16u: scope:[mulf16u] from mulf16s
|
mulf16u: scope:[mulf16u] from mulf16s
|
||||||
[326] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0
|
[324] *((const nomodify word*) mulf16u::memA) ← (word) mulf16u::a#0
|
||||||
[327] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0
|
[325] *((const nomodify word*) mulf16u::memB) ← (word) mulf16u::b#0
|
||||||
asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: }
|
asm { ldamemA stasm1a+1 stasm3a+1 stasm5a+1 stasm7a+1 eor#$ff stasm2a+1 stasm4a+1 stasm6a+1 stasm8a+1 ldamemA+1 stasm1b+1 stasm3b+1 stasm5b+1 stasm7b+1 eor#$ff stasm2b+1 stasm4b+1 stasm6b+1 stasm8b+1 ldxmemB sec sm1a: ldamulf_sqr1_lo,x sm2a: sbcmulf_sqr2_lo,x stamemR+0 sm3a: ldamulf_sqr1_hi,x sm4a: sbcmulf_sqr2_hi,x sta_AA+1 sec sm1b: ldamulf_sqr1_lo,x sm2b: sbcmulf_sqr2_lo,x sta_cc+1 sm3b: ldamulf_sqr1_hi,x sm4b: sbcmulf_sqr2_hi,x sta_CC+1 ldxmemB+1 sec sm5a: ldamulf_sqr1_lo,x sm6a: sbcmulf_sqr2_lo,x sta_bb+1 sm7a: ldamulf_sqr1_hi,x sm8a: sbcmulf_sqr2_hi,x sta_BB+1 sec sm5b: ldamulf_sqr1_lo,x sm6b: sbcmulf_sqr2_lo,x sta_dd+1 sm7b: ldamulf_sqr1_hi,x sm8b: sbcmulf_sqr2_hi,x stamemR+3 clc _AA: lda#0 _bb: adc#0 stamemR+1 _BB: lda#0 _CC: adc#0 stamemR+2 bcc!+ incmemR+3 clc !: _cc: lda#0 adcmemR+1 stamemR+1 _dd: lda#0 adcmemR+2 stamemR+2 bcc!+ incmemR+3 !: }
|
||||||
[329] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR)
|
[327] (dword) mulf16u::return#0 ← *((const nomodify dword*) mulf16u::memR)
|
||||||
to:mulf16u::@return
|
to:mulf16u::@return
|
||||||
mulf16u::@return: scope:[mulf16u] from mulf16u
|
mulf16u::@return: scope:[mulf16u] from mulf16u
|
||||||
[330] return
|
[328] return
|
||||||
to:@return
|
to:@return
|
||||||
|
File diff suppressed because one or more lines are too long
@ -487,10 +487,8 @@
|
|||||||
(word) sgn_u16::w#1 w zp[2]:44 2.000000002E9
|
(word) sgn_u16::w#1 w zp[2]:44 2.000000002E9
|
||||||
(word) sgn_u16::w#2 w zp[2]:44 1.2000000003E10
|
(word) sgn_u16::w#2 w zp[2]:44 1.2000000003E10
|
||||||
(void()) show_letter((byte) show_letter::angle)
|
(void()) show_letter((byte) show_letter::angle)
|
||||||
(byte~) show_letter::$16 reg byte x 15001.5
|
(byte~) show_letter::$17 zp[1]:24 2069.1724137931037
|
||||||
(byte~) show_letter::$17 reg byte x 15001.5
|
(byte~) show_letter::$21 reg byte a 20002.0
|
||||||
(byte~) show_letter::$18 reg byte a 20002.0
|
|
||||||
(byte~) show_letter::$21 zp[1]:24 1290.4516129032259
|
|
||||||
(label) show_letter::@1
|
(label) show_letter::@1
|
||||||
(label) show_letter::@2
|
(label) show_letter::@2
|
||||||
(label) show_letter::@3
|
(label) show_letter::@3
|
||||||
@ -502,18 +500,18 @@
|
|||||||
(label) show_letter::@9
|
(label) show_letter::@9
|
||||||
(label) show_letter::@return
|
(label) show_letter::@return
|
||||||
(byte) show_letter::angle
|
(byte) show_letter::angle
|
||||||
(byte) show_letter::angle#0 angle zp[1]:2 357.375
|
(byte) show_letter::angle#0 angle zp[1]:2 370.6111111111111
|
||||||
(signed word) show_letter::current_x
|
(signed word) show_letter::current_x
|
||||||
(signed word) show_letter::current_x#10 current_x_1 zp[2]:25 810.8918918918919
|
(signed word) show_letter::current_x#10 current_x_1 zp[2]:25 857.2285714285714
|
||||||
(signed word) show_letter::current_x#11 current_x zp[2]:4 10001.0
|
(signed word) show_letter::current_x#11 current_x zp[2]:4 10001.0
|
||||||
(signed word) show_letter::current_x#4 current_x zp[2]:4 555.6111111111111
|
(signed word) show_letter::current_x#4 current_x zp[2]:4 588.2941176470588
|
||||||
(signed word) show_letter::current_y
|
(signed word) show_letter::current_y
|
||||||
(signed word) show_letter::current_y#10 current_y_1 zp[2]:27 810.8918918918919
|
(signed word) show_letter::current_y#10 current_y_1 zp[2]:27 857.2285714285714
|
||||||
(signed word) show_letter::current_y#11 current_y zp[2]:6 20002.0
|
(signed word) show_letter::current_y#11 current_y zp[2]:6 20002.0
|
||||||
(signed word) show_letter::current_y#4 current_y zp[2]:6 526.3684210526316
|
(signed word) show_letter::current_y#4 current_y zp[2]:6 555.6111111111111
|
||||||
(byte) show_letter::i
|
(byte) show_letter::i
|
||||||
(byte) show_letter::i#1 i zp[1]:3 7500.75
|
(byte) show_letter::i#1 i zp[1]:3 7500.75
|
||||||
(byte) show_letter::i#10 i zp[1]:3 1200.1200000000001
|
(byte) show_letter::i#10 i zp[1]:3 833.4166666666666
|
||||||
(struct SplineVector16) show_letter::segment_to
|
(struct SplineVector16) show_letter::segment_to
|
||||||
(signed word) show_letter::segment_to_x
|
(signed word) show_letter::segment_to_x
|
||||||
(signed word) show_letter::segment_to_y
|
(signed word) show_letter::segment_to_y
|
||||||
@ -521,9 +519,9 @@
|
|||||||
(byte) show_letter::segment_type#0 reg byte a 15001.5
|
(byte) show_letter::segment_type#0 reg byte a 15001.5
|
||||||
(struct SplineVector16) show_letter::segment_via
|
(struct SplineVector16) show_letter::segment_via
|
||||||
(signed word) show_letter::segment_via_x
|
(signed word) show_letter::segment_via_x
|
||||||
(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:12 2500.25
|
(signed word) show_letter::segment_via_x#0 segment_via_x zp[2]:12 2857.4285714285716
|
||||||
(signed word) show_letter::segment_via_y
|
(signed word) show_letter::segment_via_y
|
||||||
(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:14 2500.25
|
(signed word) show_letter::segment_via_y#0 segment_via_y zp[2]:14 2857.4285714285716
|
||||||
(signed word) show_letter::to_x
|
(signed word) show_letter::to_x
|
||||||
(signed word) show_letter::to_x#0 to_x zp[2]:8 10001.0
|
(signed word) show_letter::to_x#0 to_x zp[2]:8 10001.0
|
||||||
(signed word) show_letter::to_x#1 to_x zp[2]:8 10001.0
|
(signed word) show_letter::to_x#1 to_x zp[2]:8 10001.0
|
||||||
@ -635,12 +633,10 @@ reg byte a [ mulf_init::$5 ]
|
|||||||
reg byte a [ bitmap_init::$4 ]
|
reg byte a [ bitmap_init::$4 ]
|
||||||
reg byte a [ bitmap_init::$5 ]
|
reg byte a [ bitmap_init::$5 ]
|
||||||
reg byte a [ bitmap_init::$6 ]
|
reg byte a [ bitmap_init::$6 ]
|
||||||
zp[1]:24 [ show_letter::$21 bitmap_init::$7 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ]
|
reg byte a [ show_letter::$21 ]
|
||||||
reg byte x [ show_letter::$16 ]
|
zp[1]:24 [ show_letter::$17 bitmap_init::$7 bitmap_plot_spline_8seg::n#2 bitmap_plot_spline_8seg::n#1 mulf_init::dir#2 mulf_init::dir#4 ]
|
||||||
zp[2]:25 [ show_letter::current_x#10 spline_8segB::p2_x#0 ]
|
zp[2]:25 [ show_letter::current_x#10 spline_8segB::p2_x#0 ]
|
||||||
zp[2]:27 [ show_letter::current_y#10 spline_8segB::p2_y#0 ]
|
zp[2]:27 [ show_letter::current_y#10 spline_8segB::p2_y#0 ]
|
||||||
reg byte x [ show_letter::$17 ]
|
|
||||||
reg byte a [ show_letter::$18 ]
|
|
||||||
reg byte a [ show_letter::segment_type#0 ]
|
reg byte a [ show_letter::segment_type#0 ]
|
||||||
zp[2]:29 [ rotate::$10 rotate::xr#0 rotate::xr#1 abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
zp[2]:29 [ rotate::$10 rotate::xr#0 rotate::xr#1 abs_u16::return#4 abs_u16::return#2 abs_u16::w#2 abs_u16::w#0 abs_u16::w#1 abs_u16::return#0 abs_u16::return#1 bitmap_line::dy#0 ]
|
||||||
zp[2]:31 [ rotate::$12 rotate::$5 sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
zp[2]:31 [ rotate::$12 rotate::$5 sgn_u16::return#4 sgn_u16::return#0 sgn_u16::return#1 bitmap_line::sy#0 ]
|
||||||
|
@ -444,6 +444,7 @@ font_2x2: {
|
|||||||
sta (next_2x2_left_1),y
|
sta (next_2x2_left_1),y
|
||||||
// l2+1
|
// l2+1
|
||||||
iny
|
iny
|
||||||
|
// >glyph_bits_2x2
|
||||||
// next_2x2_left[l2+1] = >glyph_bits_2x2
|
// next_2x2_left[l2+1] = >glyph_bits_2x2
|
||||||
sta (next_2x2_left_1),y
|
sta (next_2x2_left_1),y
|
||||||
// <glyph_bits_2x2
|
// <glyph_bits_2x2
|
||||||
@ -453,6 +454,7 @@ font_2x2: {
|
|||||||
sta (next_2x2_right),y
|
sta (next_2x2_right),y
|
||||||
// l2+1
|
// l2+1
|
||||||
iny
|
iny
|
||||||
|
// <glyph_bits_2x2
|
||||||
// next_2x2_right[l2+1] = <glyph_bits_2x2
|
// next_2x2_right[l2+1] = <glyph_bits_2x2
|
||||||
sta (next_2x2_right),y
|
sta (next_2x2_right),y
|
||||||
// l2 += 2
|
// l2 += 2
|
||||||
|
@ -216,201 +216,203 @@ font_2x2::@5: scope:[font_2x2] from font_2x2::@3 font_2x2::@4
|
|||||||
[108] if((byte) font_2x2::b#1!=(byte) 8) goto font_2x2::@3
|
[108] if((byte) font_2x2::b#1!=(byte) 8) goto font_2x2::@3
|
||||||
to:font_2x2::@6
|
to:font_2x2::@6
|
||||||
font_2x2::@6: scope:[font_2x2] from font_2x2::@5
|
font_2x2::@6: scope:[font_2x2] from font_2x2::@5
|
||||||
[109] (byte~) font_2x2::$12 ← > (word) font_2x2::glyph_bits_2x2#2
|
[109] (byte~) font_2x2::$10 ← > (word) font_2x2::glyph_bits_2x2#2
|
||||||
[110] *((byte*) font_2x2::next_2x2_left#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$12
|
[110] *((byte*) font_2x2::next_2x2_left#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$10
|
||||||
[111] (byte~) font_2x2::$11 ← (byte) font_2x2::l2#8 + (byte) 1
|
[111] (byte~) font_2x2::$11 ← (byte) font_2x2::l2#8 + (byte) 1
|
||||||
[112] *((byte*) font_2x2::next_2x2_left#7 + (byte~) font_2x2::$11) ← (byte~) font_2x2::$12
|
[112] (byte~) font_2x2::$12 ← > (word) font_2x2::glyph_bits_2x2#2
|
||||||
[113] (byte~) font_2x2::$15 ← < (word) font_2x2::glyph_bits_2x2#2
|
[113] *((byte*) font_2x2::next_2x2_left#7 + (byte~) font_2x2::$11) ← (byte~) font_2x2::$12
|
||||||
[114] *((byte*) font_2x2::next_2x2_right#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$15
|
[114] (byte~) font_2x2::$13 ← < (word) font_2x2::glyph_bits_2x2#2
|
||||||
[115] (byte~) font_2x2::$14 ← (byte) font_2x2::l2#8 + (byte) 1
|
[115] *((byte*) font_2x2::next_2x2_right#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$13
|
||||||
[116] *((byte*) font_2x2::next_2x2_right#7 + (byte~) font_2x2::$14) ← (byte~) font_2x2::$15
|
[116] (byte~) font_2x2::$14 ← (byte) font_2x2::l2#8 + (byte) 1
|
||||||
[117] (byte) font_2x2::l2#1 ← (byte) font_2x2::l2#8 + (byte) 2
|
[117] (byte~) font_2x2::$15 ← < (word) font_2x2::glyph_bits_2x2#2
|
||||||
[118] if((byte) font_2x2::l2#1!=(byte) 8) goto font_2x2::@8
|
[118] *((byte*) font_2x2::next_2x2_right#7 + (byte~) font_2x2::$14) ← (byte~) font_2x2::$15
|
||||||
|
[119] (byte) font_2x2::l2#1 ← (byte) font_2x2::l2#8 + (byte) 2
|
||||||
|
[120] if((byte) font_2x2::l2#1!=(byte) 8) goto font_2x2::@8
|
||||||
to:font_2x2::@7
|
to:font_2x2::@7
|
||||||
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
|
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
|
||||||
[119] (byte*) font_2x2::next_2x2_left#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $80*(number) 8
|
[121] (byte*) font_2x2::next_2x2_left#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $80*(number) 8
|
||||||
[120] (byte*) font_2x2::next_2x2_right#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $c0*(number) 8
|
[122] (byte*) font_2x2::next_2x2_right#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $c0*(number) 8
|
||||||
to:font_2x2::@8
|
to:font_2x2::@8
|
||||||
font_2x2::@8: scope:[font_2x2] from font_2x2::@6 font_2x2::@7
|
font_2x2::@8: scope:[font_2x2] from font_2x2::@6 font_2x2::@7
|
||||||
[121] (byte*) font_2x2::next_2x2_right#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_right#7 font_2x2::@7/(byte*) font_2x2::next_2x2_right#1 )
|
[123] (byte*) font_2x2::next_2x2_right#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_right#7 font_2x2::@7/(byte*) font_2x2::next_2x2_right#1 )
|
||||||
[121] (byte) font_2x2::l2#9 ← phi( font_2x2::@6/(byte) font_2x2::l2#1 font_2x2::@7/(byte) 0 )
|
[123] (byte) font_2x2::l2#9 ← phi( font_2x2::@6/(byte) font_2x2::l2#1 font_2x2::@7/(byte) 0 )
|
||||||
[121] (byte*) font_2x2::next_2x2_left#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_left#7 font_2x2::@7/(byte*) font_2x2::next_2x2_left#1 )
|
[123] (byte*) font_2x2::next_2x2_left#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_left#7 font_2x2::@7/(byte*) font_2x2::next_2x2_left#1 )
|
||||||
[122] (byte) font_2x2::l#1 ← ++ (byte) font_2x2::l#2
|
[124] (byte) font_2x2::l#1 ← ++ (byte) font_2x2::l#2
|
||||||
[123] if((byte) font_2x2::l#1!=(byte) 8) goto font_2x2::@2
|
[125] if((byte) font_2x2::l#1!=(byte) 8) goto font_2x2::@2
|
||||||
to:font_2x2::@9
|
to:font_2x2::@9
|
||||||
font_2x2::@9: scope:[font_2x2] from font_2x2::@8
|
font_2x2::@9: scope:[font_2x2] from font_2x2::@8
|
||||||
[124] (byte*) font_2x2::next_2x2#1 ← (byte*) font_2x2::next_2x2_left#0 + (byte) 8
|
[126] (byte*) font_2x2::next_2x2#1 ← (byte*) font_2x2::next_2x2_left#0 + (byte) 8
|
||||||
[125] (byte*) font_2x2::next_original#1 ← (byte*) font_2x2::next_original#4 + (byte) 8
|
[127] (byte*) font_2x2::next_original#1 ← (byte*) font_2x2::next_original#4 + (byte) 8
|
||||||
[126] (byte) font_2x2::c#1 ← ++ (byte) font_2x2::c#11
|
[128] (byte) font_2x2::c#1 ← ++ (byte) font_2x2::c#11
|
||||||
[127] if((byte) font_2x2::c#1!=(byte) $40) goto font_2x2::@1
|
[129] if((byte) font_2x2::c#1!=(byte) $40) goto font_2x2::@1
|
||||||
to:font_2x2::@return
|
to:font_2x2::@return
|
||||||
font_2x2::@return: scope:[font_2x2] from font_2x2::@9
|
font_2x2::@return: scope:[font_2x2] from font_2x2::@9
|
||||||
[128] return
|
[130] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) font_2x2_to_sprites((byte*) font_2x2_to_sprites::font_2x2 , (byte*) font_2x2_to_sprites::sprites , (byte) font_2x2_to_sprites::num_chars)
|
(void()) font_2x2_to_sprites((byte*) font_2x2_to_sprites::font_2x2 , (byte*) font_2x2_to_sprites::sprites , (byte) font_2x2_to_sprites::num_chars)
|
||||||
font_2x2_to_sprites: scope:[font_2x2_to_sprites] from main::@9
|
font_2x2_to_sprites: scope:[font_2x2_to_sprites] from main::@9
|
||||||
[129] phi()
|
[131] phi()
|
||||||
to:font_2x2_to_sprites::@1
|
to:font_2x2_to_sprites::@1
|
||||||
font_2x2_to_sprites::@1: scope:[font_2x2_to_sprites] from font_2x2_to_sprites font_2x2_to_sprites::@7
|
font_2x2_to_sprites::@1: scope:[font_2x2_to_sprites] from font_2x2_to_sprites font_2x2_to_sprites::@7
|
||||||
[130] (byte*) font_2x2_to_sprites::sprite#4 ← phi( font_2x2_to_sprites/(const nomodify byte*) SPRITES font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::sprite#1 )
|
[132] (byte*) font_2x2_to_sprites::sprite#4 ← phi( font_2x2_to_sprites/(const nomodify byte*) SPRITES font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::sprite#1 )
|
||||||
[130] (byte*) font_2x2_to_sprites::char_current#2 ← phi( font_2x2_to_sprites/(const byte*) FONT font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::char_current#1 )
|
[132] (byte*) font_2x2_to_sprites::char_current#2 ← phi( font_2x2_to_sprites/(const byte*) FONT font_2x2_to_sprites::@7/(byte*) font_2x2_to_sprites::char_current#1 )
|
||||||
[130] (byte) font_2x2_to_sprites::c#2 ← phi( font_2x2_to_sprites/(byte) 0 font_2x2_to_sprites::@7/(byte) font_2x2_to_sprites::c#1 )
|
[132] (byte) font_2x2_to_sprites::c#2 ← phi( font_2x2_to_sprites/(byte) 0 font_2x2_to_sprites::@7/(byte) font_2x2_to_sprites::c#1 )
|
||||||
[131] if((byte) font_2x2_to_sprites::c#2<(const byte) font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2
|
[133] if((byte) font_2x2_to_sprites::c#2<(const byte) font_2x2_to_sprites::num_chars#0) goto font_2x2_to_sprites::@2
|
||||||
to:font_2x2_to_sprites::@return
|
to:font_2x2_to_sprites::@return
|
||||||
font_2x2_to_sprites::@return: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
font_2x2_to_sprites::@return: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
||||||
[132] return
|
[134] return
|
||||||
to:@return
|
to:@return
|
||||||
font_2x2_to_sprites::@2: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
font_2x2_to_sprites::@2: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@1
|
||||||
[133] (byte*) font_2x2_to_sprites::char_right#0 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $40*(number) 8
|
[135] (byte*) font_2x2_to_sprites::char_right#0 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $40*(number) 8
|
||||||
[134] (byte*) font_2x2_to_sprites::char_left#6 ← (byte*) font_2x2_to_sprites::char_current#2
|
[136] (byte*) font_2x2_to_sprites::char_left#6 ← (byte*) font_2x2_to_sprites::char_current#2
|
||||||
to:font_2x2_to_sprites::@3
|
to:font_2x2_to_sprites::@3
|
||||||
font_2x2_to_sprites::@3: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@2 font_2x2_to_sprites::@5
|
font_2x2_to_sprites::@3: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@2 font_2x2_to_sprites::@5
|
||||||
[135] (byte*) font_2x2_to_sprites::char_right#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_right#4 )
|
[137] (byte*) font_2x2_to_sprites::char_right#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_right#0 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_right#4 )
|
||||||
[135] (byte) font_2x2_to_sprites::sprite_idx#4 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::sprite_idx#3 )
|
[137] (byte) font_2x2_to_sprites::sprite_idx#4 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::sprite_idx#3 )
|
||||||
[135] (byte*) font_2x2_to_sprites::char_left#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_left#4 )
|
[137] (byte*) font_2x2_to_sprites::char_left#3 ← phi( font_2x2_to_sprites::@2/(byte*) font_2x2_to_sprites::char_left#6 font_2x2_to_sprites::@5/(byte*) font_2x2_to_sprites::char_left#4 )
|
||||||
[135] (byte) font_2x2_to_sprites::i#2 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::i#1 )
|
[137] (byte) font_2x2_to_sprites::i#2 ← phi( font_2x2_to_sprites::@2/(byte) 0 font_2x2_to_sprites::@5/(byte) font_2x2_to_sprites::i#1 )
|
||||||
[136] (byte~) font_2x2_to_sprites::$3 ← (byte) font_2x2_to_sprites::i#2 & (byte) 7
|
[138] (byte~) font_2x2_to_sprites::$3 ← (byte) font_2x2_to_sprites::i#2 & (byte) 7
|
||||||
[137] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#4) ← *((byte*) font_2x2_to_sprites::char_left#3 + (byte~) font_2x2_to_sprites::$3)
|
[139] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#4) ← *((byte*) font_2x2_to_sprites::char_left#3 + (byte~) font_2x2_to_sprites::$3)
|
||||||
[138] (byte) font_2x2_to_sprites::sprite_idx#1 ← ++ (byte) font_2x2_to_sprites::sprite_idx#4
|
[140] (byte) font_2x2_to_sprites::sprite_idx#1 ← ++ (byte) font_2x2_to_sprites::sprite_idx#4
|
||||||
[139] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#1) ← *((byte*) font_2x2_to_sprites::char_right#3 + (byte~) font_2x2_to_sprites::$3)
|
[141] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#1) ← *((byte*) font_2x2_to_sprites::char_right#3 + (byte~) font_2x2_to_sprites::$3)
|
||||||
[140] (byte) font_2x2_to_sprites::sprite_idx#2 ← ++ (byte) font_2x2_to_sprites::sprite_idx#1
|
[142] (byte) font_2x2_to_sprites::sprite_idx#2 ← ++ (byte) font_2x2_to_sprites::sprite_idx#1
|
||||||
[141] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#2) ← (byte) 0
|
[143] *((byte*) font_2x2_to_sprites::sprite#4 + (byte) font_2x2_to_sprites::sprite_idx#2) ← (byte) 0
|
||||||
[142] (byte) font_2x2_to_sprites::sprite_idx#3 ← ++ (byte) font_2x2_to_sprites::sprite_idx#2
|
[144] (byte) font_2x2_to_sprites::sprite_idx#3 ← ++ (byte) font_2x2_to_sprites::sprite_idx#2
|
||||||
[143] if((byte) font_2x2_to_sprites::i#2==(byte) 7) goto font_2x2_to_sprites::@4
|
[145] if((byte) font_2x2_to_sprites::i#2==(byte) 7) goto font_2x2_to_sprites::@4
|
||||||
to:font_2x2_to_sprites::@6
|
to:font_2x2_to_sprites::@6
|
||||||
font_2x2_to_sprites::@6: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
font_2x2_to_sprites::@6: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
||||||
[144] if((byte) font_2x2_to_sprites::i#2!=(byte) $f) goto font_2x2_to_sprites::@8
|
[146] if((byte) font_2x2_to_sprites::i#2!=(byte) $f) goto font_2x2_to_sprites::@8
|
||||||
to:font_2x2_to_sprites::@5
|
to:font_2x2_to_sprites::@5
|
||||||
font_2x2_to_sprites::@8: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@6
|
font_2x2_to_sprites::@8: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@6
|
||||||
[145] phi()
|
[147] phi()
|
||||||
to:font_2x2_to_sprites::@5
|
to:font_2x2_to_sprites::@5
|
||||||
font_2x2_to_sprites::@5: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@4 font_2x2_to_sprites::@6 font_2x2_to_sprites::@8
|
font_2x2_to_sprites::@5: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@4 font_2x2_to_sprites::@6 font_2x2_to_sprites::@8
|
||||||
[146] (byte*) font_2x2_to_sprites::char_right#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_right#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
|
[148] (byte*) font_2x2_to_sprites::char_right#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_right#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_right#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
|
||||||
[146] (byte*) font_2x2_to_sprites::char_left#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
|
[148] (byte*) font_2x2_to_sprites::char_left#4 ← phi( font_2x2_to_sprites::@4/(byte*) font_2x2_to_sprites::char_left#1 font_2x2_to_sprites::@8/(byte*) font_2x2_to_sprites::char_left#3 font_2x2_to_sprites::@6/(const byte*) FONT+(byte) ' '*(byte) 8 )
|
||||||
[147] (byte) font_2x2_to_sprites::i#1 ← ++ (byte) font_2x2_to_sprites::i#2
|
[149] (byte) font_2x2_to_sprites::i#1 ← ++ (byte) font_2x2_to_sprites::i#2
|
||||||
[148] if((byte) font_2x2_to_sprites::i#1!=(byte) $15) goto font_2x2_to_sprites::@3
|
[150] if((byte) font_2x2_to_sprites::i#1!=(byte) $15) goto font_2x2_to_sprites::@3
|
||||||
to:font_2x2_to_sprites::@7
|
to:font_2x2_to_sprites::@7
|
||||||
font_2x2_to_sprites::@7: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@5
|
font_2x2_to_sprites::@7: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@5
|
||||||
[149] (byte*) font_2x2_to_sprites::char_current#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (byte) 8
|
[151] (byte*) font_2x2_to_sprites::char_current#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (byte) 8
|
||||||
[150] (byte*) font_2x2_to_sprites::sprite#1 ← (byte*) font_2x2_to_sprites::sprite#4 + (byte) $40
|
[152] (byte*) font_2x2_to_sprites::sprite#1 ← (byte*) font_2x2_to_sprites::sprite#4 + (byte) $40
|
||||||
[151] (byte) font_2x2_to_sprites::c#1 ← ++ (byte) font_2x2_to_sprites::c#2
|
[153] (byte) font_2x2_to_sprites::c#1 ← ++ (byte) font_2x2_to_sprites::c#2
|
||||||
to:font_2x2_to_sprites::@1
|
to:font_2x2_to_sprites::@1
|
||||||
font_2x2_to_sprites::@4: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
font_2x2_to_sprites::@4: scope:[font_2x2_to_sprites] from font_2x2_to_sprites::@3
|
||||||
[152] (byte*) font_2x2_to_sprites::char_left#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $80*(number) 8
|
[154] (byte*) font_2x2_to_sprites::char_left#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $80*(number) 8
|
||||||
[153] (byte*) font_2x2_to_sprites::char_right#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $c0*(number) 8
|
[155] (byte*) font_2x2_to_sprites::char_right#1 ← (byte*) font_2x2_to_sprites::char_current#2 + (word)(number) $c0*(number) 8
|
||||||
to:font_2x2_to_sprites::@5
|
to:font_2x2_to_sprites::@5
|
||||||
|
|
||||||
(void()) plexInit((byte*) plexInit::screen)
|
(void()) plexInit((byte*) plexInit::screen)
|
||||||
plexInit: scope:[plexInit] from main::@10
|
plexInit: scope:[plexInit] from main::@10
|
||||||
[154] phi()
|
[156] phi()
|
||||||
to:plexInit::plexSetScreen1
|
to:plexInit::plexSetScreen1
|
||||||
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
|
plexInit::plexSetScreen1: scope:[plexInit] from plexInit
|
||||||
[155] phi()
|
[157] phi()
|
||||||
to:plexInit::@1
|
to:plexInit::@1
|
||||||
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1
|
plexInit::@1: scope:[plexInit] from plexInit::@1 plexInit::plexSetScreen1
|
||||||
[156] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte) 0 )
|
[158] (byte) plexInit::i#2 ← phi( plexInit::@1/(byte) plexInit::i#1 plexInit::plexSetScreen1/(byte) 0 )
|
||||||
[157] *((const byte*) PLEX_SORTED_IDX + (byte) plexInit::i#2) ← (byte) plexInit::i#2
|
[159] *((const byte*) PLEX_SORTED_IDX + (byte) plexInit::i#2) ← (byte) plexInit::i#2
|
||||||
[158] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2
|
[160] (byte) plexInit::i#1 ← ++ (byte) plexInit::i#2
|
||||||
[159] if((byte) plexInit::i#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plexInit::@1
|
[161] if((byte) plexInit::i#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plexInit::@1
|
||||||
to:plexInit::@return
|
to:plexInit::@return
|
||||||
plexInit::@return: scope:[plexInit] from plexInit::@1
|
plexInit::@return: scope:[plexInit] from plexInit::@1
|
||||||
[160] return
|
[162] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) plex_move()
|
(void()) plex_move()
|
||||||
plex_move: scope:[plex_move] from main::@5 main::@7
|
plex_move: scope:[plex_move] from main::@5 main::@7
|
||||||
[161] (byte*) scroll_text_next#27 ← phi( main::@5/(const byte*) SCROLL_TEXT main::@7/(byte*) scroll_text_next#14 )
|
[163] (byte*) scroll_text_next#27 ← phi( main::@5/(const byte*) SCROLL_TEXT main::@7/(byte*) scroll_text_next#14 )
|
||||||
[161] (byte) x_movement_idx#11 ← phi( main::@5/(byte) 0 main::@7/(byte) x_movement_idx#13 )
|
[163] (byte) x_movement_idx#11 ← phi( main::@5/(byte) 0 main::@7/(byte) x_movement_idx#13 )
|
||||||
[161] (byte) y_sin_idx#11 ← phi( main::@5/(byte) 0 main::@7/(byte) y_sin_idx#13 )
|
[163] (byte) y_sin_idx#11 ← phi( main::@5/(byte) 0 main::@7/(byte) y_sin_idx#13 )
|
||||||
[162] (byte) plex_move::y_idx#0 ← (byte) y_sin_idx#11
|
[164] (byte) plex_move::y_idx#0 ← (byte) y_sin_idx#11
|
||||||
[163] (byte) plex_move::x_idx#0 ← (byte) x_movement_idx#11
|
[165] (byte) plex_move::x_idx#0 ← (byte) x_movement_idx#11
|
||||||
to:plex_move::@1
|
to:plex_move::@1
|
||||||
plex_move::@1: scope:[plex_move] from plex_move plex_move::@2
|
plex_move::@1: scope:[plex_move] from plex_move plex_move::@2
|
||||||
[164] (byte*) scroll_text_next#12 ← phi( plex_move/(byte*) scroll_text_next#27 plex_move::@2/(byte*) scroll_text_next#14 )
|
[166] (byte*) scroll_text_next#12 ← phi( plex_move/(byte*) scroll_text_next#27 plex_move::@2/(byte*) scroll_text_next#14 )
|
||||||
[164] (byte) plex_move::x_idx#2 ← phi( plex_move/(byte) plex_move::x_idx#0 plex_move::@2/(byte) plex_move::x_idx#1 )
|
[166] (byte) plex_move::x_idx#2 ← phi( plex_move/(byte) plex_move::x_idx#0 plex_move::@2/(byte) plex_move::x_idx#1 )
|
||||||
[164] (byte) plex_move::s#2 ← phi( plex_move/(byte) 0 plex_move::@2/(byte) plex_move::s#1 )
|
[166] (byte) plex_move::s#2 ← phi( plex_move/(byte) 0 plex_move::@2/(byte) plex_move::s#1 )
|
||||||
[164] (byte) plex_move::y_idx#2 ← phi( plex_move/(byte) plex_move::y_idx#0 plex_move::@2/(byte) plex_move::y_idx#1 )
|
[166] (byte) plex_move::y_idx#2 ← phi( plex_move/(byte) plex_move::y_idx#0 plex_move::@2/(byte) plex_move::y_idx#1 )
|
||||||
[165] *((const byte*) PLEX_YPOS + (byte) plex_move::s#2) ← *((const byte*) YSIN + (byte) plex_move::y_idx#2)
|
[167] *((const byte*) PLEX_YPOS + (byte) plex_move::s#2) ← *((const byte*) YSIN + (byte) plex_move::y_idx#2)
|
||||||
[166] (byte) plex_move::y_idx#1 ← (byte) plex_move::y_idx#2 + (byte) 8
|
[168] (byte) plex_move::y_idx#1 ← (byte) plex_move::y_idx#2 + (byte) 8
|
||||||
[167] (byte~) plex_move::$6 ← (byte) plex_move::s#2 << (byte) 1
|
[169] (byte~) plex_move::$6 ← (byte) plex_move::s#2 << (byte) 1
|
||||||
[168] (word~) plex_move::$7 ← *((const nomodify byte*) XMOVEMENT_HI + (byte) plex_move::x_idx#2) w= *((const byte*) XMOVEMENT + (byte) plex_move::x_idx#2)
|
[170] (word~) plex_move::$7 ← *((const nomodify byte*) XMOVEMENT_HI + (byte) plex_move::x_idx#2) w= *((const byte*) XMOVEMENT + (byte) plex_move::x_idx#2)
|
||||||
[169] *((const word*) PLEX_XPOS + (byte~) plex_move::$6) ← (word~) plex_move::$7
|
[171] *((const word*) PLEX_XPOS + (byte~) plex_move::$6) ← (word~) plex_move::$7
|
||||||
[170] if((byte) plex_move::x_idx#2!=(byte) 0) goto plex_move::@2
|
[172] if((byte) plex_move::x_idx#2!=(byte) 0) goto plex_move::@2
|
||||||
to:plex_move::@4
|
to:plex_move::@4
|
||||||
plex_move::@4: scope:[plex_move] from plex_move::@1
|
plex_move::@4: scope:[plex_move] from plex_move::@1
|
||||||
[171] if(*((byte*) scroll_text_next#12)!=(byte) 0) goto plex_move::@6
|
[173] if(*((byte*) scroll_text_next#12)!=(byte) 0) goto plex_move::@6
|
||||||
to:plex_move::@3
|
to:plex_move::@3
|
||||||
plex_move::@6: scope:[plex_move] from plex_move::@4
|
plex_move::@6: scope:[plex_move] from plex_move::@4
|
||||||
[172] phi()
|
[174] phi()
|
||||||
to:plex_move::@3
|
to:plex_move::@3
|
||||||
plex_move::@3: scope:[plex_move] from plex_move::@4 plex_move::@6
|
plex_move::@3: scope:[plex_move] from plex_move::@4 plex_move::@6
|
||||||
[173] (byte*) scroll_text_next#13 ← phi( plex_move::@6/(byte*) scroll_text_next#12 plex_move::@4/(const byte*) SCROLL_TEXT )
|
[175] (byte*) scroll_text_next#13 ← phi( plex_move::@6/(byte*) scroll_text_next#12 plex_move::@4/(const byte*) SCROLL_TEXT )
|
||||||
[174] (byte~) plex_move::$4 ← (const byte) SPRITE_0#0 + *((byte*) scroll_text_next#13)
|
[176] (byte~) plex_move::$4 ← (const byte) SPRITE_0#0 + *((byte*) scroll_text_next#13)
|
||||||
[175] *((const byte*) PLEX_PTR + (byte) plex_move::s#2) ← (byte~) plex_move::$4
|
[177] *((const byte*) PLEX_PTR + (byte) plex_move::s#2) ← (byte~) plex_move::$4
|
||||||
[176] (byte*) scroll_text_next#3 ← ++ (byte*) scroll_text_next#13
|
[178] (byte*) scroll_text_next#3 ← ++ (byte*) scroll_text_next#13
|
||||||
to:plex_move::@2
|
to:plex_move::@2
|
||||||
plex_move::@2: scope:[plex_move] from plex_move::@1 plex_move::@3
|
plex_move::@2: scope:[plex_move] from plex_move::@1 plex_move::@3
|
||||||
[177] (byte*) scroll_text_next#14 ← phi( plex_move::@1/(byte*) scroll_text_next#12 plex_move::@3/(byte*) scroll_text_next#3 )
|
[179] (byte*) scroll_text_next#14 ← phi( plex_move::@1/(byte*) scroll_text_next#12 plex_move::@3/(byte*) scroll_text_next#3 )
|
||||||
[178] (byte) plex_move::x_idx#1 ← (byte) plex_move::x_idx#2 + (byte) 8
|
[180] (byte) plex_move::x_idx#1 ← (byte) plex_move::x_idx#2 + (byte) 8
|
||||||
[179] (byte) plex_move::s#1 ← ++ (byte) plex_move::s#2
|
[181] (byte) plex_move::s#1 ← ++ (byte) plex_move::s#2
|
||||||
[180] if((byte) plex_move::s#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plex_move::@1
|
[182] if((byte) plex_move::s#1!=(const nomodify byte) PLEX_COUNT-(byte) 1+(byte) 1) goto plex_move::@1
|
||||||
to:plex_move::@5
|
to:plex_move::@5
|
||||||
plex_move::@5: scope:[plex_move] from plex_move::@2
|
plex_move::@5: scope:[plex_move] from plex_move::@2
|
||||||
[181] (byte) y_sin_idx#13 ← (byte) y_sin_idx#11 + (byte) 3
|
[183] (byte) y_sin_idx#13 ← (byte) y_sin_idx#11 + (byte) 3
|
||||||
[182] (byte) x_movement_idx#13 ← ++ (byte) x_movement_idx#11
|
[184] (byte) x_movement_idx#13 ← ++ (byte) x_movement_idx#11
|
||||||
to:plex_move::@return
|
to:plex_move::@return
|
||||||
plex_move::@return: scope:[plex_move] from plex_move::@5
|
plex_move::@return: scope:[plex_move] from plex_move::@5
|
||||||
[183] return
|
[185] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) plexSort()
|
(void()) plexSort()
|
||||||
plexSort: scope:[plexSort] from main::@11 main::@13
|
plexSort: scope:[plexSort] from main::@11 main::@13
|
||||||
[184] phi()
|
[186] phi()
|
||||||
to:plexSort::@1
|
to:plexSort::@1
|
||||||
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
|
plexSort::@1: scope:[plexSort] from plexSort plexSort::@2
|
||||||
[185] (byte) plexSort::m#2 ← phi( plexSort/(byte) 0 plexSort::@2/(byte) plexSort::m#1 )
|
[187] (byte) plexSort::m#2 ← phi( plexSort/(byte) 0 plexSort::@2/(byte) plexSort::m#1 )
|
||||||
[186] (byte) plexSort::nxt_idx#0 ← *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::m#2)
|
[188] (byte) plexSort::nxt_idx#0 ← *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::m#2)
|
||||||
[187] (byte) plexSort::nxt_y#0 ← *((const byte*) PLEX_YPOS + (byte) plexSort::nxt_idx#0)
|
[189] (byte) plexSort::nxt_y#0 ← *((const byte*) PLEX_YPOS + (byte) plexSort::nxt_idx#0)
|
||||||
[188] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2
|
[190] if((byte) plexSort::nxt_y#0>=*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::m#2))) goto plexSort::@2
|
||||||
to:plexSort::@5
|
to:plexSort::@5
|
||||||
plexSort::@5: scope:[plexSort] from plexSort::@1
|
plexSort::@5: scope:[plexSort] from plexSort::@1
|
||||||
[189] (byte) plexSort::s#6 ← (byte) plexSort::m#2
|
[191] (byte) plexSort::s#6 ← (byte) plexSort::m#2
|
||||||
to:plexSort::@3
|
to:plexSort::@3
|
||||||
plexSort::@3: scope:[plexSort] from plexSort::@5 plexSort::@7
|
plexSort::@3: scope:[plexSort] from plexSort::@5 plexSort::@7
|
||||||
[190] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@5/(byte) plexSort::s#6 )
|
[192] (byte) plexSort::s#3 ← phi( plexSort::@7/(byte) plexSort::s#1 plexSort::@5/(byte) plexSort::s#6 )
|
||||||
[191] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3)
|
[193] *((const byte*) PLEX_SORTED_IDX+(byte) 1 + (byte) plexSort::s#3) ← *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#3)
|
||||||
[192] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3
|
[194] (byte) plexSort::s#1 ← -- (byte) plexSort::s#3
|
||||||
[193] if((byte) plexSort::s#1==(byte) $ff) goto plexSort::@4
|
[195] if((byte) plexSort::s#1==(byte) $ff) goto plexSort::@4
|
||||||
to:plexSort::@7
|
to:plexSort::@7
|
||||||
plexSort::@7: scope:[plexSort] from plexSort::@3
|
plexSort::@7: scope:[plexSort] from plexSort::@3
|
||||||
[194] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3
|
[196] if((byte) plexSort::nxt_y#0<*((const byte*) PLEX_YPOS + *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#1))) goto plexSort::@3
|
||||||
to:plexSort::@4
|
to:plexSort::@4
|
||||||
plexSort::@4: scope:[plexSort] from plexSort::@3 plexSort::@7
|
plexSort::@4: scope:[plexSort] from plexSort::@3 plexSort::@7
|
||||||
[195] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1
|
[197] (byte) plexSort::s#2 ← ++ (byte) plexSort::s#1
|
||||||
[196] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0
|
[198] *((const byte*) PLEX_SORTED_IDX + (byte) plexSort::s#2) ← (byte) plexSort::nxt_idx#0
|
||||||
to:plexSort::@2
|
to:plexSort::@2
|
||||||
plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4
|
plexSort::@2: scope:[plexSort] from plexSort::@1 plexSort::@4
|
||||||
[197] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2
|
[199] (byte) plexSort::m#1 ← ++ (byte) plexSort::m#2
|
||||||
[198] if((byte) plexSort::m#1!=(const nomodify byte) PLEX_COUNT-(byte) 2+(byte) 1) goto plexSort::@1
|
[200] if((byte) plexSort::m#1!=(const nomodify byte) PLEX_COUNT-(byte) 2+(byte) 1) goto plexSort::@1
|
||||||
to:plexSort::@6
|
to:plexSort::@6
|
||||||
plexSort::@6: scope:[plexSort] from plexSort::@2
|
plexSort::@6: scope:[plexSort] from plexSort::@2
|
||||||
[199] (volatile byte) plex_show_idx ← (byte) 0
|
[201] (volatile byte) plex_show_idx ← (byte) 0
|
||||||
[200] (volatile byte) plex_sprite_idx ← (byte) 0
|
[202] (volatile byte) plex_sprite_idx ← (byte) 0
|
||||||
[201] (volatile byte) plex_sprite_msb ← (byte) 1
|
[203] (volatile byte) plex_sprite_msb ← (byte) 1
|
||||||
to:plexSort::plexFreePrepare1
|
to:plexSort::plexFreePrepare1
|
||||||
plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@6
|
plexSort::plexFreePrepare1: scope:[plexSort] from plexSort::@6
|
||||||
[202] phi()
|
[204] phi()
|
||||||
to:plexSort::plexFreePrepare1_@1
|
to:plexSort::plexFreePrepare1_@1
|
||||||
plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1
|
plexSort::plexFreePrepare1_@1: scope:[plexSort] from plexSort::plexFreePrepare1 plexSort::plexFreePrepare1_@1
|
||||||
[203] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 )
|
[205] (byte) plexSort::plexFreePrepare1_s#2 ← phi( plexSort::plexFreePrepare1/(byte) 0 plexSort::plexFreePrepare1_@1/(byte) plexSort::plexFreePrepare1_s#1 )
|
||||||
[204] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0
|
[206] *((const byte*) PLEX_FREE_YPOS + (byte) plexSort::plexFreePrepare1_s#2) ← (byte) 0
|
||||||
[205] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2
|
[207] (byte) plexSort::plexFreePrepare1_s#1 ← ++ (byte) plexSort::plexFreePrepare1_s#2
|
||||||
[206] if((byte) plexSort::plexFreePrepare1_s#1!=(byte) 8) goto plexSort::plexFreePrepare1_@1
|
[208] if((byte) plexSort::plexFreePrepare1_s#1!=(byte) 8) goto plexSort::plexFreePrepare1_@1
|
||||||
to:plexSort::plexFreePrepare1_@2
|
to:plexSort::plexFreePrepare1_@2
|
||||||
plexSort::plexFreePrepare1_@2: scope:[plexSort] from plexSort::plexFreePrepare1_@1
|
plexSort::plexFreePrepare1_@2: scope:[plexSort] from plexSort::plexFreePrepare1_@1
|
||||||
[207] (volatile byte) plex_free_next ← (byte) 0
|
[209] (volatile byte) plex_free_next ← (byte) 0
|
||||||
to:plexSort::@return
|
to:plexSort::@return
|
||||||
plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@2
|
plexSort::@return: scope:[plexSort] from plexSort::plexFreePrepare1_@2
|
||||||
[208] return
|
[210] return
|
||||||
to:@return
|
to:@return
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -135,10 +135,12 @@
|
|||||||
(byte*) __start::__init1_toSpritePtr1_sprite
|
(byte*) __start::__init1_toSpritePtr1_sprite
|
||||||
(void()) font_2x2((byte*) font_2x2::font_original , (byte*) font_2x2::font_2x2)
|
(void()) font_2x2((byte*) font_2x2::font_original , (byte*) font_2x2::font_2x2)
|
||||||
(byte~) font_2x2::$1 reg byte a 200002.0
|
(byte~) font_2x2::$1 reg byte a 200002.0
|
||||||
(byte~) font_2x2::$11 reg byte y 20002.0
|
(byte~) font_2x2::$10 reg byte a 20002.0
|
||||||
(byte~) font_2x2::$12 reg byte a 10001.0
|
(byte~) font_2x2::$11 reg byte y 10001.0
|
||||||
(byte~) font_2x2::$14 reg byte y 20002.0
|
(byte~) font_2x2::$12 reg byte a 20002.0
|
||||||
(byte~) font_2x2::$15 reg byte a 10001.0
|
(byte~) font_2x2::$13 reg byte a 20002.0
|
||||||
|
(byte~) font_2x2::$14 reg byte y 10001.0
|
||||||
|
(byte~) font_2x2::$15 reg byte a 20002.0
|
||||||
(word~) font_2x2::$5 zp[2]:23 200002.0
|
(word~) font_2x2::$5 zp[2]:23 200002.0
|
||||||
(word~) font_2x2::$7 zp[2]:23 200002.0
|
(word~) font_2x2::$7 zp[2]:23 200002.0
|
||||||
(label) font_2x2::@1
|
(label) font_2x2::@1
|
||||||
@ -156,7 +158,7 @@
|
|||||||
(byte) font_2x2::b#2 reg byte y 20000.2
|
(byte) font_2x2::b#2 reg byte y 20000.2
|
||||||
(byte) font_2x2::c
|
(byte) font_2x2::c
|
||||||
(byte) font_2x2::c#1 c zp[1]:16 1501.5
|
(byte) font_2x2::c#1 c zp[1]:16 1501.5
|
||||||
(byte) font_2x2::c#11 c zp[1]:16 58.88235294117647
|
(byte) font_2x2::c#11 c zp[1]:16 55.611111111111114
|
||||||
(byte*) font_2x2::font_2x2
|
(byte*) font_2x2::font_2x2
|
||||||
(byte*) font_2x2::font_original
|
(byte*) font_2x2::font_original
|
||||||
(byte) font_2x2::glyph_bit
|
(byte) font_2x2::glyph_bit
|
||||||
@ -167,31 +169,31 @@
|
|||||||
(byte) font_2x2::glyph_bits#2 glyph_bits zp[1]:13 34444.88888888889
|
(byte) font_2x2::glyph_bits#2 glyph_bits zp[1]:13 34444.88888888889
|
||||||
(word) font_2x2::glyph_bits_2x2
|
(word) font_2x2::glyph_bits_2x2
|
||||||
(word) font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:23 200002.0
|
(word) font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:23 200002.0
|
||||||
(word) font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:23 27500.5
|
(word) font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:23 20000.500000000004
|
||||||
(word) font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:23 40000.4
|
(word) font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:23 40000.4
|
||||||
(byte) font_2x2::l
|
(byte) font_2x2::l
|
||||||
(byte) font_2x2::l#1 l zp[1]:29 15001.5
|
(byte) font_2x2::l#1 l zp[1]:29 15001.5
|
||||||
(byte) font_2x2::l#2 l zp[1]:29 1111.2222222222222
|
(byte) font_2x2::l#2 l zp[1]:29 1034.5862068965519
|
||||||
(byte) font_2x2::l2
|
(byte) font_2x2::l2
|
||||||
(byte) font_2x2::l2#1 l2 zp[1]:28 15001.5
|
(byte) font_2x2::l2#1 l2 zp[1]:28 15001.5
|
||||||
(byte) font_2x2::l2#8 l2 zp[1]:28 2727.5454545454545
|
(byte) font_2x2::l2#8 l2 zp[1]:28 2500.25
|
||||||
(byte) font_2x2::l2#9 l2 zp[1]:28 6667.333333333333
|
(byte) font_2x2::l2#9 l2 zp[1]:28 6667.333333333333
|
||||||
(byte*) font_2x2::next_2x2
|
(byte*) font_2x2::next_2x2
|
||||||
(byte*) font_2x2::next_2x2#1 next_2x2 zp[2]:26 500.5
|
(byte*) font_2x2::next_2x2#1 next_2x2 zp[2]:26 500.5
|
||||||
(byte*) font_2x2::next_2x2_left
|
(byte*) font_2x2::next_2x2_left
|
||||||
(byte*) font_2x2::next_2x2_left#0 next_2x2_left zp[2]:26 750.1875
|
(byte*) font_2x2::next_2x2_left#0 next_2x2_left zp[2]:26 706.0588235294117
|
||||||
(byte*) font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:7 10001.0
|
(byte*) font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:7 10001.0
|
||||||
(byte*) font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:7 2002.0
|
(byte*) font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:7 2002.0
|
||||||
(byte*) font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:7 1708.5416666666665
|
(byte*) font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:7 1577.1153846153845
|
||||||
(byte*) font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:7 10001.0
|
(byte*) font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:7 10001.0
|
||||||
(byte*) font_2x2::next_2x2_right
|
(byte*) font_2x2::next_2x2_right
|
||||||
(byte*) font_2x2::next_2x2_right#0 next_2x2_right zp[2]:9 1001.0
|
(byte*) font_2x2::next_2x2_right#0 next_2x2_right zp[2]:9 1001.0
|
||||||
(byte*) font_2x2::next_2x2_right#1 next_2x2_right zp[2]:9 20002.0
|
(byte*) font_2x2::next_2x2_right#1 next_2x2_right zp[2]:9 20002.0
|
||||||
(byte*) font_2x2::next_2x2_right#7 next_2x2_right zp[2]:9 1708.5416666666665
|
(byte*) font_2x2::next_2x2_right#7 next_2x2_right zp[2]:9 1577.1153846153845
|
||||||
(byte*) font_2x2::next_2x2_right#8 next_2x2_right zp[2]:9 10001.0
|
(byte*) font_2x2::next_2x2_right#8 next_2x2_right zp[2]:9 10001.0
|
||||||
(byte*) font_2x2::next_original
|
(byte*) font_2x2::next_original
|
||||||
(byte*) font_2x2::next_original#1 next_original zp[2]:5 667.3333333333334
|
(byte*) font_2x2::next_original#1 next_original zp[2]:5 667.3333333333334
|
||||||
(byte*) font_2x2::next_original#4 next_original zp[2]:5 363.7272727272727
|
(byte*) font_2x2::next_original#4 next_original zp[2]:5 342.9428571428572
|
||||||
(void()) font_2x2_to_sprites((byte*) font_2x2_to_sprites::font_2x2 , (byte*) font_2x2_to_sprites::sprites , (byte) font_2x2_to_sprites::num_chars)
|
(void()) font_2x2_to_sprites((byte*) font_2x2_to_sprites::font_2x2 , (byte*) font_2x2_to_sprites::sprites , (byte) font_2x2_to_sprites::num_chars)
|
||||||
(byte~) font_2x2_to_sprites::$3 zp[1]:28 10001.0
|
(byte~) font_2x2_to_sprites::$3 zp[1]:28 10001.0
|
||||||
(label) font_2x2_to_sprites::@1
|
(label) font_2x2_to_sprites::@1
|
||||||
@ -418,10 +420,12 @@ reg byte a [ plexShowSprite::$9 ]
|
|||||||
reg byte x [ plexShowSprite::$5 ]
|
reg byte x [ plexShowSprite::$5 ]
|
||||||
reg byte a [ plexShowSprite::$6 ]
|
reg byte a [ plexShowSprite::$6 ]
|
||||||
reg byte a [ font_2x2::$1 ]
|
reg byte a [ font_2x2::$1 ]
|
||||||
reg byte a [ font_2x2::$12 ]
|
reg byte a [ font_2x2::$10 ]
|
||||||
reg byte y [ font_2x2::$11 ]
|
reg byte y [ font_2x2::$11 ]
|
||||||
reg byte a [ font_2x2::$15 ]
|
reg byte a [ font_2x2::$12 ]
|
||||||
|
reg byte a [ font_2x2::$13 ]
|
||||||
reg byte y [ font_2x2::$14 ]
|
reg byte y [ font_2x2::$14 ]
|
||||||
|
reg byte a [ font_2x2::$15 ]
|
||||||
reg byte y [ font_2x2_to_sprites::sprite_idx#2 ]
|
reg byte y [ font_2x2_to_sprites::sprite_idx#2 ]
|
||||||
reg byte x [ plex_move::$6 ]
|
reg byte x [ plex_move::$6 ]
|
||||||
zp[2]:26 [ plex_move::$7 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
zp[2]:26 [ plex_move::$7 font_2x2_to_sprites::char_current#2 font_2x2_to_sprites::char_current#1 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
||||||
|
@ -82,13 +82,7 @@ mulf_init: {
|
|||||||
// mulf_sqr2[1-i] = val
|
// mulf_sqr2[1-i] = val
|
||||||
lda.z val
|
lda.z val
|
||||||
sta mulf_sqr2,x
|
sta mulf_sqr2,x
|
||||||
// 1-i
|
|
||||||
tya
|
|
||||||
eor #$ff
|
|
||||||
tax
|
|
||||||
axs #-1-1
|
|
||||||
// (mulf_sqr2+$100)[1-i] = val
|
// (mulf_sqr2+$100)[1-i] = val
|
||||||
lda.z val
|
|
||||||
sta mulf_sqr2+$100,x
|
sta mulf_sqr2+$100,x
|
||||||
// sqr += add
|
// sqr += add
|
||||||
lda.z sqr
|
lda.z sqr
|
||||||
|
@ -33,195 +33,194 @@ mulf_init::@1: scope:[mulf_init] from mulf_init mulf_init::@1
|
|||||||
[15] *((const byte*) mulf_sqr1+(word) $100 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0
|
[15] *((const byte*) mulf_sqr1+(word) $100 + (byte~) mulf_init::$2) ← (byte) mulf_init::val#0
|
||||||
[16] *((const byte*) mulf_sqr2+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0
|
[16] *((const byte*) mulf_sqr2+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0
|
||||||
[17] *((const byte*) mulf_sqr2+(word) $100+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0
|
[17] *((const byte*) mulf_sqr2+(word) $100+(byte) 1 + (byte) mulf_init::i#2) ← (byte) mulf_init::val#0
|
||||||
[18] (byte~) mulf_init::$5 ← (byte) 1 - (byte) mulf_init::i#2
|
[18] (byte~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2
|
||||||
[19] *((const byte*) mulf_sqr2 + (byte~) mulf_init::$5) ← (byte) mulf_init::val#0
|
[19] *((const byte*) mulf_sqr2 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0
|
||||||
[20] (byte~) mulf_init::$6 ← (byte) 1 - (byte) mulf_init::i#2
|
[20] *((const byte*) mulf_sqr2+(word) $100 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0
|
||||||
[21] *((const byte*) mulf_sqr2+(word) $100 + (byte~) mulf_init::$6) ← (byte) mulf_init::val#0
|
[21] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2
|
||||||
[22] (signed word) mulf_init::sqr#1 ← (signed word) mulf_init::sqr#2 + (signed word) mulf_init::add#2
|
[22] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (signed byte) 2
|
||||||
[23] (signed word) mulf_init::add#1 ← (signed word) mulf_init::add#2 + (signed byte) 2
|
[23] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2
|
||||||
[24] (byte) mulf_init::i#1 ← ++ (byte) mulf_init::i#2
|
[24] if((byte) mulf_init::i#1!=(byte) $81) goto mulf_init::@1
|
||||||
[25] if((byte) mulf_init::i#1!=(byte) $81) goto mulf_init::@1
|
|
||||||
to:mulf_init::@return
|
to:mulf_init::@return
|
||||||
mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
mulf_init::@return: scope:[mulf_init] from mulf_init::@1
|
||||||
[26] return
|
[25] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) print_cls()
|
(void()) print_cls()
|
||||||
print_cls: scope:[print_cls] from main::@1
|
print_cls: scope:[print_cls] from main::@1
|
||||||
[27] phi()
|
[26] phi()
|
||||||
[28] call memset
|
[27] call memset
|
||||||
to:print_cls::@return
|
to:print_cls::@return
|
||||||
print_cls::@return: scope:[print_cls] from print_cls
|
print_cls::@return: scope:[print_cls] from print_cls
|
||||||
[29] return
|
[28] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
(void()) do_perspective((signed byte) do_perspective::x , (signed byte) do_perspective::y , (signed byte) do_perspective::z)
|
||||||
do_perspective: scope:[do_perspective] from main::@2
|
do_perspective: scope:[do_perspective] from main::@2
|
||||||
[30] phi()
|
[29] phi()
|
||||||
[31] call print_str
|
[30] call print_str
|
||||||
to:do_perspective::@1
|
to:do_perspective::@1
|
||||||
do_perspective::@1: scope:[do_perspective] from do_perspective
|
do_perspective::@1: scope:[do_perspective] from do_perspective
|
||||||
[32] phi()
|
[31] phi()
|
||||||
[33] call print_schar
|
[32] call print_schar
|
||||||
to:do_perspective::@2
|
to:do_perspective::@2
|
||||||
do_perspective::@2: scope:[do_perspective] from do_perspective::@1
|
do_perspective::@2: scope:[do_perspective] from do_perspective::@1
|
||||||
[34] phi()
|
[33] phi()
|
||||||
[35] call print_str
|
[34] call print_str
|
||||||
to:do_perspective::@3
|
to:do_perspective::@3
|
||||||
do_perspective::@3: scope:[do_perspective] from do_perspective::@2
|
do_perspective::@3: scope:[do_perspective] from do_perspective::@2
|
||||||
[36] phi()
|
[35] phi()
|
||||||
[37] call print_schar
|
[36] call print_schar
|
||||||
to:do_perspective::@4
|
to:do_perspective::@4
|
||||||
do_perspective::@4: scope:[do_perspective] from do_perspective::@3
|
do_perspective::@4: scope:[do_perspective] from do_perspective::@3
|
||||||
[38] phi()
|
[37] phi()
|
||||||
[39] call print_str
|
[38] call print_str
|
||||||
to:do_perspective::@5
|
to:do_perspective::@5
|
||||||
do_perspective::@5: scope:[do_perspective] from do_perspective::@4
|
do_perspective::@5: scope:[do_perspective] from do_perspective::@4
|
||||||
[40] phi()
|
[39] phi()
|
||||||
[41] call print_schar
|
[40] call print_schar
|
||||||
to:do_perspective::@6
|
to:do_perspective::@6
|
||||||
do_perspective::@6: scope:[do_perspective] from do_perspective::@5
|
do_perspective::@6: scope:[do_perspective] from do_perspective::@5
|
||||||
[42] phi()
|
[41] phi()
|
||||||
[43] call print_str
|
[42] call print_str
|
||||||
to:do_perspective::@7
|
to:do_perspective::@7
|
||||||
do_perspective::@7: scope:[do_perspective] from do_perspective::@6
|
do_perspective::@7: scope:[do_perspective] from do_perspective::@6
|
||||||
[44] phi()
|
[43] phi()
|
||||||
[45] call perspective
|
[44] call perspective
|
||||||
to:do_perspective::@8
|
to:do_perspective::@8
|
||||||
do_perspective::@8: scope:[do_perspective] from do_perspective::@7
|
do_perspective::@8: scope:[do_perspective] from do_perspective::@7
|
||||||
[46] (byte) print_uchar::b#6 ← (byte)*((const signed byte*) xr)
|
[45] (byte) print_uchar::b#6 ← (byte)*((const signed byte*) xr)
|
||||||
[47] call print_uchar
|
[46] call print_uchar
|
||||||
to:do_perspective::@9
|
to:do_perspective::@9
|
||||||
do_perspective::@9: scope:[do_perspective] from do_perspective::@8
|
do_perspective::@9: scope:[do_perspective] from do_perspective::@8
|
||||||
[48] phi()
|
[47] phi()
|
||||||
[49] call print_str
|
[48] call print_str
|
||||||
to:do_perspective::@10
|
to:do_perspective::@10
|
||||||
do_perspective::@10: scope:[do_perspective] from do_perspective::@9
|
do_perspective::@10: scope:[do_perspective] from do_perspective::@9
|
||||||
[50] (byte) print_uchar::b#5 ← (byte)*((const signed byte*) yr)
|
[49] (byte) print_uchar::b#5 ← (byte)*((const signed byte*) yr)
|
||||||
[51] call print_uchar
|
[50] call print_uchar
|
||||||
to:do_perspective::@11
|
to:do_perspective::@11
|
||||||
do_perspective::@11: scope:[do_perspective] from do_perspective::@10
|
do_perspective::@11: scope:[do_perspective] from do_perspective::@10
|
||||||
[52] phi()
|
[51] phi()
|
||||||
[53] call print_str
|
[52] call print_str
|
||||||
to:do_perspective::@12
|
to:do_perspective::@12
|
||||||
do_perspective::@12: scope:[do_perspective] from do_perspective::@11
|
do_perspective::@12: scope:[do_perspective] from do_perspective::@11
|
||||||
[54] phi()
|
[53] phi()
|
||||||
[55] call print_ln
|
[54] call print_ln
|
||||||
to:do_perspective::@return
|
to:do_perspective::@return
|
||||||
do_perspective::@return: scope:[do_perspective] from do_perspective::@12
|
do_perspective::@return: scope:[do_perspective] from do_perspective::@12
|
||||||
[56] return
|
[55] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
memset: scope:[memset] from print_cls
|
memset: scope:[memset] from print_cls
|
||||||
[57] phi()
|
[56] phi()
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
memset::@1: scope:[memset] from memset memset::@2
|
memset::@1: scope:[memset] from memset memset::@2
|
||||||
[58] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
[57] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
||||||
[59] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
[58] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
||||||
to:memset::@return
|
to:memset::@return
|
||||||
memset::@return: scope:[memset] from memset::@1
|
memset::@return: scope:[memset] from memset::@1
|
||||||
[60] return
|
[59] return
|
||||||
to:@return
|
to:@return
|
||||||
memset::@2: scope:[memset] from memset::@1
|
memset::@2: scope:[memset] from memset::@1
|
||||||
[61] *((byte*) memset::dst#2) ← (const byte) memset::c#0
|
[60] *((byte*) memset::dst#2) ← (const byte) memset::c#0
|
||||||
[62] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
[61] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
|
|
||||||
(void()) print_str((byte*) print_str::str)
|
(void()) print_str((byte*) print_str::str)
|
||||||
print_str: scope:[print_str] from do_perspective do_perspective::@11 do_perspective::@2 do_perspective::@4 do_perspective::@6 do_perspective::@9
|
print_str: scope:[print_str] from do_perspective do_perspective::@11 do_perspective::@2 do_perspective::@4 do_perspective::@6 do_perspective::@9
|
||||||
[63] (byte*) print_char_cursor#77 ← phi( do_perspective/(const byte*) print_screen#0 do_perspective::@11/(byte*) print_char_cursor#11 do_perspective::@2/(byte*) print_char_cursor#11 do_perspective::@4/(byte*) print_char_cursor#11 do_perspective::@6/(byte*) print_char_cursor#11 do_perspective::@9/(byte*) print_char_cursor#11 )
|
[62] (byte*) print_char_cursor#77 ← phi( do_perspective/(const byte*) print_screen#0 do_perspective::@11/(byte*) print_char_cursor#11 do_perspective::@2/(byte*) print_char_cursor#11 do_perspective::@4/(byte*) print_char_cursor#11 do_perspective::@6/(byte*) print_char_cursor#11 do_perspective::@9/(byte*) print_char_cursor#11 )
|
||||||
[63] (byte*) print_str::str#10 ← phi( do_perspective/(const byte*) do_perspective::str do_perspective::@11/(const byte*) do_perspective::str5 do_perspective::@2/(const byte*) do_perspective::str1 do_perspective::@4/(const byte*) do_perspective::str1 do_perspective::@6/(const byte*) do_perspective::str3 do_perspective::@9/(const byte*) do_perspective::str1 )
|
[62] (byte*) print_str::str#10 ← phi( do_perspective/(const byte*) do_perspective::str do_perspective::@11/(const byte*) do_perspective::str5 do_perspective::@2/(const byte*) do_perspective::str1 do_perspective::@4/(const byte*) do_perspective::str1 do_perspective::@6/(const byte*) do_perspective::str3 do_perspective::@9/(const byte*) do_perspective::str1 )
|
||||||
to:print_str::@1
|
to:print_str::@1
|
||||||
print_str::@1: scope:[print_str] from print_str print_str::@3
|
print_str::@1: scope:[print_str] from print_str print_str::@3
|
||||||
[64] (byte*) print_char_cursor#1 ← phi( print_str/(byte*) print_char_cursor#77 print_str::@3/(byte*) print_char_cursor#11 )
|
[63] (byte*) print_char_cursor#1 ← phi( print_str/(byte*) print_char_cursor#77 print_str::@3/(byte*) print_char_cursor#11 )
|
||||||
[64] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#10 print_str::@3/(byte*) print_str::str#0 )
|
[63] (byte*) print_str::str#7 ← phi( print_str/(byte*) print_str::str#10 print_str::@3/(byte*) print_str::str#0 )
|
||||||
[65] if((byte) 0!=*((byte*) print_str::str#7)) goto print_str::@2
|
[64] if((byte) 0!=*((byte*) print_str::str#7)) goto print_str::@2
|
||||||
to:print_str::@return
|
to:print_str::@return
|
||||||
print_str::@return: scope:[print_str] from print_str::@1
|
print_str::@return: scope:[print_str] from print_str::@1
|
||||||
[66] return
|
[65] return
|
||||||
to:@return
|
to:@return
|
||||||
print_str::@2: scope:[print_str] from print_str::@1
|
print_str::@2: scope:[print_str] from print_str::@1
|
||||||
[67] (byte) print_char::ch#0 ← *((byte*) print_str::str#7)
|
[66] (byte) print_char::ch#0 ← *((byte*) print_str::str#7)
|
||||||
[68] call print_char
|
[67] call print_char
|
||||||
to:print_str::@3
|
to:print_str::@3
|
||||||
print_str::@3: scope:[print_str] from print_str::@2
|
print_str::@3: scope:[print_str] from print_str::@2
|
||||||
[69] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7
|
[68] (byte*) print_str::str#0 ← ++ (byte*) print_str::str#7
|
||||||
to:print_str::@1
|
to:print_str::@1
|
||||||
|
|
||||||
(void()) print_schar((signed byte) print_schar::b)
|
(void()) print_schar((signed byte) print_schar::b)
|
||||||
print_schar: scope:[print_schar] from do_perspective::@1 do_perspective::@3 do_perspective::@5
|
print_schar: scope:[print_schar] from do_perspective::@1 do_perspective::@3 do_perspective::@5
|
||||||
[70] (signed byte) print_schar::b#4 ← phi( do_perspective::@1/(const signed byte) do_perspective::x#0 do_perspective::@3/(const signed byte) do_perspective::y#0 do_perspective::@5/(const signed byte) do_perspective::z#0 )
|
[69] (signed byte) print_schar::b#4 ← phi( do_perspective::@1/(const signed byte) do_perspective::x#0 do_perspective::@3/(const signed byte) do_perspective::y#0 do_perspective::@5/(const signed byte) do_perspective::z#0 )
|
||||||
[71] if((signed byte) print_schar::b#4<(signed byte) 0) goto print_schar::@1
|
[70] if((signed byte) print_schar::b#4<(signed byte) 0) goto print_schar::@1
|
||||||
to:print_schar::@3
|
to:print_schar::@3
|
||||||
print_schar::@3: scope:[print_schar] from print_schar
|
print_schar::@3: scope:[print_schar] from print_schar
|
||||||
[72] phi()
|
[71] phi()
|
||||||
[73] call print_char
|
[72] call print_char
|
||||||
to:print_schar::@2
|
to:print_schar::@2
|
||||||
print_schar::@2: scope:[print_schar] from print_schar::@3 print_schar::@4
|
print_schar::@2: scope:[print_schar] from print_schar::@3 print_schar::@4
|
||||||
[74] (signed byte) print_schar::b#6 ← phi( print_schar::@4/(signed byte) print_schar::b#0 print_schar::@3/(signed byte) print_schar::b#4 )
|
[73] (signed byte) print_schar::b#6 ← phi( print_schar::@4/(signed byte) print_schar::b#0 print_schar::@3/(signed byte) print_schar::b#4 )
|
||||||
[75] (byte) print_uchar::b#0 ← (byte)(signed byte) print_schar::b#6
|
[74] (byte) print_uchar::b#0 ← (byte)(signed byte) print_schar::b#6
|
||||||
[76] call print_uchar
|
[75] call print_uchar
|
||||||
to:print_schar::@return
|
to:print_schar::@return
|
||||||
print_schar::@return: scope:[print_schar] from print_schar::@2
|
print_schar::@return: scope:[print_schar] from print_schar::@2
|
||||||
[77] return
|
[76] return
|
||||||
to:@return
|
to:@return
|
||||||
print_schar::@1: scope:[print_schar] from print_schar
|
print_schar::@1: scope:[print_schar] from print_schar
|
||||||
[78] phi()
|
[77] phi()
|
||||||
[79] call print_char
|
[78] call print_char
|
||||||
to:print_schar::@4
|
to:print_schar::@4
|
||||||
print_schar::@4: scope:[print_schar] from print_schar::@1
|
print_schar::@4: scope:[print_schar] from print_schar::@1
|
||||||
[80] (signed byte) print_schar::b#0 ← - (signed byte) print_schar::b#4
|
[79] (signed byte) print_schar::b#0 ← - (signed byte) print_schar::b#4
|
||||||
to:print_schar::@2
|
to:print_schar::@2
|
||||||
|
|
||||||
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
|
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
|
||||||
perspective: scope:[perspective] from do_perspective::@7
|
perspective: scope:[perspective] from do_perspective::@7
|
||||||
[81] *((const signed byte*) xr) ← (const signed byte) do_perspective::x#0
|
[80] *((const signed byte*) xr) ← (const signed byte) do_perspective::x#0
|
||||||
[82] *((const signed byte*) yr) ← (const signed byte) do_perspective::y#0
|
[81] *((const signed byte*) yr) ← (const signed byte) do_perspective::y#0
|
||||||
[83] *((const signed byte*) zr) ← (const signed byte) do_perspective::z#0
|
[82] *((const signed byte*) zr) ← (const signed byte) do_perspective::z#0
|
||||||
asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr }
|
asm { ldazr staPP+1 PP: ldaPERSP_Z stapsp1 eor#$ff stapsp2 clc ldyyr lda(psp1),y sbc(psp2),y adc#$80 stayr clc ldyxr lda(psp1),y sbc(psp2),y adc#$80 staxr }
|
||||||
to:perspective::@return
|
to:perspective::@return
|
||||||
perspective::@return: scope:[perspective] from perspective
|
perspective::@return: scope:[perspective] from perspective
|
||||||
[85] return
|
[84] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) print_uchar((byte) print_uchar::b)
|
(void()) print_uchar((byte) print_uchar::b)
|
||||||
print_uchar: scope:[print_uchar] from do_perspective::@10 do_perspective::@8 print_schar::@2
|
print_uchar: scope:[print_uchar] from do_perspective::@10 do_perspective::@8 print_schar::@2
|
||||||
[86] (byte*) print_char_cursor#72 ← phi( do_perspective::@10/(byte*) print_char_cursor#1 do_perspective::@8/(byte*) print_char_cursor#1 print_schar::@2/(byte*) print_char_cursor#11 )
|
[85] (byte*) print_char_cursor#72 ← phi( do_perspective::@10/(byte*) print_char_cursor#1 do_perspective::@8/(byte*) print_char_cursor#1 print_schar::@2/(byte*) print_char_cursor#11 )
|
||||||
[86] (byte) print_uchar::b#3 ← phi( do_perspective::@10/(byte) print_uchar::b#5 do_perspective::@8/(byte) print_uchar::b#6 print_schar::@2/(byte) print_uchar::b#0 )
|
[85] (byte) print_uchar::b#3 ← phi( do_perspective::@10/(byte) print_uchar::b#5 do_perspective::@8/(byte) print_uchar::b#6 print_schar::@2/(byte) print_uchar::b#0 )
|
||||||
[87] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4
|
[86] (byte~) print_uchar::$0 ← (byte) print_uchar::b#3 >> (byte) 4
|
||||||
[88] (byte) print_char::ch#3 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0)
|
[87] (byte) print_char::ch#3 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$0)
|
||||||
[89] call print_char
|
[88] call print_char
|
||||||
to:print_uchar::@1
|
to:print_uchar::@1
|
||||||
print_uchar::@1: scope:[print_uchar] from print_uchar
|
print_uchar::@1: scope:[print_uchar] from print_uchar
|
||||||
[90] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f
|
[89] (byte~) print_uchar::$2 ← (byte) print_uchar::b#3 & (byte) $f
|
||||||
[91] (byte) print_char::ch#4 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2)
|
[90] (byte) print_char::ch#4 ← *((const to_nomodify byte*) print_hextab + (byte~) print_uchar::$2)
|
||||||
[92] call print_char
|
[91] call print_char
|
||||||
to:print_uchar::@return
|
to:print_uchar::@return
|
||||||
print_uchar::@return: scope:[print_uchar] from print_uchar::@1
|
print_uchar::@return: scope:[print_uchar] from print_uchar::@1
|
||||||
[93] return
|
[92] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) print_ln()
|
(void()) print_ln()
|
||||||
print_ln: scope:[print_ln] from do_perspective::@12
|
print_ln: scope:[print_ln] from do_perspective::@12
|
||||||
[94] phi()
|
[93] phi()
|
||||||
to:print_ln::@1
|
to:print_ln::@1
|
||||||
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
print_ln::@1: scope:[print_ln] from print_ln print_ln::@1
|
||||||
[95] (byte*) print_line_cursor#12 ← phi( print_ln/(const byte*) print_screen#0 print_ln::@1/(byte*) print_line_cursor#0 )
|
[94] (byte*) print_line_cursor#12 ← phi( print_ln/(const byte*) print_screen#0 print_ln::@1/(byte*) print_line_cursor#0 )
|
||||||
[96] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28
|
[95] (byte*) print_line_cursor#0 ← (byte*) print_line_cursor#12 + (byte) $28
|
||||||
[97] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#1) goto print_ln::@1
|
[96] if((byte*) print_line_cursor#0<(byte*) print_char_cursor#1) goto print_ln::@1
|
||||||
to:print_ln::@return
|
to:print_ln::@return
|
||||||
print_ln::@return: scope:[print_ln] from print_ln::@1
|
print_ln::@return: scope:[print_ln] from print_ln::@1
|
||||||
[98] return
|
[97] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) print_char((byte) print_char::ch)
|
(void()) print_char((byte) print_char::ch)
|
||||||
print_char: scope:[print_char] from print_schar::@1 print_schar::@3 print_str::@2 print_uchar print_uchar::@1
|
print_char: scope:[print_char] from print_schar::@1 print_schar::@3 print_str::@2 print_uchar print_uchar::@1
|
||||||
[99] (byte*) print_char_cursor#45 ← phi( print_schar::@1/(byte*) print_char_cursor#1 print_schar::@3/(byte*) print_char_cursor#1 print_str::@2/(byte*) print_char_cursor#1 print_uchar/(byte*) print_char_cursor#72 print_uchar::@1/(byte*) print_char_cursor#11 )
|
[98] (byte*) print_char_cursor#45 ← phi( print_schar::@1/(byte*) print_char_cursor#1 print_schar::@3/(byte*) print_char_cursor#1 print_str::@2/(byte*) print_char_cursor#1 print_uchar/(byte*) print_char_cursor#72 print_uchar::@1/(byte*) print_char_cursor#11 )
|
||||||
[99] (byte) print_char::ch#5 ← phi( print_schar::@1/(byte) '-' print_schar::@3/(byte) ' ' print_str::@2/(byte) print_char::ch#0 print_uchar/(byte) print_char::ch#3 print_uchar::@1/(byte) print_char::ch#4 )
|
[98] (byte) print_char::ch#5 ← phi( print_schar::@1/(byte) '-' print_schar::@3/(byte) ' ' print_str::@2/(byte) print_char::ch#0 print_uchar/(byte) print_char::ch#3 print_uchar::@1/(byte) print_char::ch#4 )
|
||||||
[100] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#5
|
[99] *((byte*) print_char_cursor#45) ← (byte) print_char::ch#5
|
||||||
[101] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#45
|
[100] (byte*) print_char_cursor#11 ← ++ (byte*) print_char_cursor#45
|
||||||
to:print_char::@return
|
to:print_char::@return
|
||||||
print_char::@return: scope:[print_char] from print_char
|
print_char::@return: scope:[print_char] from print_char
|
||||||
[102] return
|
[101] return
|
||||||
to:@return
|
to:@return
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -144,21 +144,20 @@
|
|||||||
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
|
(const void*) memset::str#0 str = (void*)(const byte*) print_screen#0
|
||||||
(void()) mulf_init()
|
(void()) mulf_init()
|
||||||
(byte~) mulf_init::$2 reg byte x 151.5
|
(byte~) mulf_init::$2 reg byte x 151.5
|
||||||
(byte~) mulf_init::$5 reg byte x 202.0
|
(byte~) mulf_init::$6 reg byte x 151.5
|
||||||
(byte~) mulf_init::$6 reg byte x 202.0
|
|
||||||
(label) mulf_init::@1
|
(label) mulf_init::@1
|
||||||
(label) mulf_init::@return
|
(label) mulf_init::@return
|
||||||
(signed word) mulf_init::add
|
(signed word) mulf_init::add
|
||||||
(signed word) mulf_init::add#1 add zp[2]:2 67.33333333333333
|
(signed word) mulf_init::add#1 add zp[2]:2 67.33333333333333
|
||||||
(signed word) mulf_init::add#2 add zp[2]:2 21.642857142857142
|
(signed word) mulf_init::add#2 add zp[2]:2 23.307692307692307
|
||||||
(byte) mulf_init::i
|
(byte) mulf_init::i
|
||||||
(byte) mulf_init::i#1 reg byte y 151.5
|
(byte) mulf_init::i#1 reg byte y 151.5
|
||||||
(byte) mulf_init::i#2 reg byte y 60.6
|
(byte) mulf_init::i#2 reg byte y 57.714285714285715
|
||||||
(signed word) mulf_init::sqr
|
(signed word) mulf_init::sqr
|
||||||
(signed word) mulf_init::sqr#1 sqr zp[2]:4 50.5
|
(signed word) mulf_init::sqr#1 sqr zp[2]:4 50.5
|
||||||
(signed word) mulf_init::sqr#2 sqr zp[2]:4 23.307692307692307
|
(signed word) mulf_init::sqr#2 sqr zp[2]:4 25.25
|
||||||
(byte) mulf_init::val
|
(byte) mulf_init::val
|
||||||
(byte) mulf_init::val#0 val zp[1]:8 82.63636363636364
|
(byte) mulf_init::val#0 val zp[1]:8 90.89999999999999
|
||||||
(const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) }
|
(const byte*) mulf_sqr1[(number) $200] = { fill( $200, 0) }
|
||||||
(const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) }
|
(const byte*) mulf_sqr2[(number) $200] = { fill( $200, 0) }
|
||||||
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
|
(void()) perspective((signed byte) perspective::x , (signed byte) perspective::y , (signed byte) perspective::z)
|
||||||
@ -234,7 +233,6 @@ reg byte a [ print_char::ch#5 print_char::ch#0 print_char::ch#3 print_char::ch#4
|
|||||||
zp[2]:6 [ print_char_cursor#45 print_char_cursor#72 print_char_cursor#1 print_char_cursor#77 print_char_cursor#11 ]
|
zp[2]:6 [ print_char_cursor#45 print_char_cursor#72 print_char_cursor#1 print_char_cursor#77 print_char_cursor#11 ]
|
||||||
zp[1]:8 [ mulf_init::val#0 ]
|
zp[1]:8 [ mulf_init::val#0 ]
|
||||||
reg byte x [ mulf_init::$2 ]
|
reg byte x [ mulf_init::$2 ]
|
||||||
reg byte x [ mulf_init::$5 ]
|
|
||||||
reg byte x [ mulf_init::$6 ]
|
reg byte x [ mulf_init::$6 ]
|
||||||
reg byte a [ print_uchar::$0 ]
|
reg byte a [ print_uchar::$0 ]
|
||||||
reg byte x [ print_uchar::$2 ]
|
reg byte x [ print_uchar::$2 ]
|
||||||
|
@ -160,6 +160,7 @@ font_2x2: {
|
|||||||
sta (next_2x2_left_1),y
|
sta (next_2x2_left_1),y
|
||||||
// l2+1
|
// l2+1
|
||||||
iny
|
iny
|
||||||
|
// >glyph_bits_2x2
|
||||||
// next_2x2_left[l2+1] = >glyph_bits_2x2
|
// next_2x2_left[l2+1] = >glyph_bits_2x2
|
||||||
sta (next_2x2_left_1),y
|
sta (next_2x2_left_1),y
|
||||||
// <glyph_bits_2x2
|
// <glyph_bits_2x2
|
||||||
@ -169,6 +170,7 @@ font_2x2: {
|
|||||||
sta (next_2x2_right),y
|
sta (next_2x2_right),y
|
||||||
// l2+1
|
// l2+1
|
||||||
iny
|
iny
|
||||||
|
// <glyph_bits_2x2
|
||||||
// next_2x2_right[l2+1] = <glyph_bits_2x2
|
// next_2x2_right[l2+1] = <glyph_bits_2x2
|
||||||
sta (next_2x2_right),y
|
sta (next_2x2_right),y
|
||||||
// l2 += 2
|
// l2 += 2
|
||||||
|
@ -82,149 +82,151 @@ font_2x2::@5: scope:[font_2x2] from font_2x2::@3 font_2x2::@4
|
|||||||
[39] if((byte) font_2x2::b#1!=(byte) 8) goto font_2x2::@3
|
[39] if((byte) font_2x2::b#1!=(byte) 8) goto font_2x2::@3
|
||||||
to:font_2x2::@6
|
to:font_2x2::@6
|
||||||
font_2x2::@6: scope:[font_2x2] from font_2x2::@5
|
font_2x2::@6: scope:[font_2x2] from font_2x2::@5
|
||||||
[40] (byte~) font_2x2::$12 ← > (word) font_2x2::glyph_bits_2x2#2
|
[40] (byte~) font_2x2::$10 ← > (word) font_2x2::glyph_bits_2x2#2
|
||||||
[41] *((byte*) font_2x2::next_2x2_left#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$12
|
[41] *((byte*) font_2x2::next_2x2_left#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$10
|
||||||
[42] (byte~) font_2x2::$11 ← (byte) font_2x2::l2#8 + (byte) 1
|
[42] (byte~) font_2x2::$11 ← (byte) font_2x2::l2#8 + (byte) 1
|
||||||
[43] *((byte*) font_2x2::next_2x2_left#7 + (byte~) font_2x2::$11) ← (byte~) font_2x2::$12
|
[43] (byte~) font_2x2::$12 ← > (word) font_2x2::glyph_bits_2x2#2
|
||||||
[44] (byte~) font_2x2::$15 ← < (word) font_2x2::glyph_bits_2x2#2
|
[44] *((byte*) font_2x2::next_2x2_left#7 + (byte~) font_2x2::$11) ← (byte~) font_2x2::$12
|
||||||
[45] *((byte*) font_2x2::next_2x2_right#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$15
|
[45] (byte~) font_2x2::$13 ← < (word) font_2x2::glyph_bits_2x2#2
|
||||||
[46] (byte~) font_2x2::$14 ← (byte) font_2x2::l2#8 + (byte) 1
|
[46] *((byte*) font_2x2::next_2x2_right#7 + (byte) font_2x2::l2#8) ← (byte~) font_2x2::$13
|
||||||
[47] *((byte*) font_2x2::next_2x2_right#7 + (byte~) font_2x2::$14) ← (byte~) font_2x2::$15
|
[47] (byte~) font_2x2::$14 ← (byte) font_2x2::l2#8 + (byte) 1
|
||||||
[48] (byte) font_2x2::l2#1 ← (byte) font_2x2::l2#8 + (byte) 2
|
[48] (byte~) font_2x2::$15 ← < (word) font_2x2::glyph_bits_2x2#2
|
||||||
[49] if((byte) font_2x2::l2#1!=(byte) 8) goto font_2x2::@8
|
[49] *((byte*) font_2x2::next_2x2_right#7 + (byte~) font_2x2::$14) ← (byte~) font_2x2::$15
|
||||||
|
[50] (byte) font_2x2::l2#1 ← (byte) font_2x2::l2#8 + (byte) 2
|
||||||
|
[51] if((byte) font_2x2::l2#1!=(byte) 8) goto font_2x2::@8
|
||||||
to:font_2x2::@7
|
to:font_2x2::@7
|
||||||
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
|
font_2x2::@7: scope:[font_2x2] from font_2x2::@6
|
||||||
[50] (byte*) font_2x2::next_2x2_left#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $80*(number) 8
|
[52] (byte*) font_2x2::next_2x2_left#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $80*(number) 8
|
||||||
[51] (byte*) font_2x2::next_2x2_right#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $c0*(number) 8
|
[53] (byte*) font_2x2::next_2x2_right#1 ← (byte*) font_2x2::next_2x2_left#0 + (word)(number) $c0*(number) 8
|
||||||
to:font_2x2::@8
|
to:font_2x2::@8
|
||||||
font_2x2::@8: scope:[font_2x2] from font_2x2::@6 font_2x2::@7
|
font_2x2::@8: scope:[font_2x2] from font_2x2::@6 font_2x2::@7
|
||||||
[52] (byte*) font_2x2::next_2x2_right#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_right#7 font_2x2::@7/(byte*) font_2x2::next_2x2_right#1 )
|
[54] (byte*) font_2x2::next_2x2_right#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_right#7 font_2x2::@7/(byte*) font_2x2::next_2x2_right#1 )
|
||||||
[52] (byte) font_2x2::l2#9 ← phi( font_2x2::@6/(byte) font_2x2::l2#1 font_2x2::@7/(byte) 0 )
|
[54] (byte) font_2x2::l2#9 ← phi( font_2x2::@6/(byte) font_2x2::l2#1 font_2x2::@7/(byte) 0 )
|
||||||
[52] (byte*) font_2x2::next_2x2_left#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_left#7 font_2x2::@7/(byte*) font_2x2::next_2x2_left#1 )
|
[54] (byte*) font_2x2::next_2x2_left#8 ← phi( font_2x2::@6/(byte*) font_2x2::next_2x2_left#7 font_2x2::@7/(byte*) font_2x2::next_2x2_left#1 )
|
||||||
[53] (byte) font_2x2::l#1 ← ++ (byte) font_2x2::l#2
|
[55] (byte) font_2x2::l#1 ← ++ (byte) font_2x2::l#2
|
||||||
[54] if((byte) font_2x2::l#1!=(byte) 8) goto font_2x2::@2
|
[56] if((byte) font_2x2::l#1!=(byte) 8) goto font_2x2::@2
|
||||||
to:font_2x2::@9
|
to:font_2x2::@9
|
||||||
font_2x2::@9: scope:[font_2x2] from font_2x2::@8
|
font_2x2::@9: scope:[font_2x2] from font_2x2::@8
|
||||||
[55] (byte*) font_2x2::next_2x2#1 ← (byte*) font_2x2::next_2x2_left#0 + (byte) 8
|
[57] (byte*) font_2x2::next_2x2#1 ← (byte*) font_2x2::next_2x2_left#0 + (byte) 8
|
||||||
[56] (byte*) font_2x2::next_original#1 ← (byte*) font_2x2::next_original#4 + (byte) 8
|
[58] (byte*) font_2x2::next_original#1 ← (byte*) font_2x2::next_original#4 + (byte) 8
|
||||||
[57] (byte) font_2x2::c#1 ← ++ (byte) font_2x2::c#11
|
[59] (byte) font_2x2::c#1 ← ++ (byte) font_2x2::c#11
|
||||||
[58] if((byte) font_2x2::c#1!=(byte) $40) goto font_2x2::@1
|
[60] if((byte) font_2x2::c#1!=(byte) $40) goto font_2x2::@1
|
||||||
to:font_2x2::@return
|
to:font_2x2::@return
|
||||||
font_2x2::@return: scope:[font_2x2] from font_2x2::@9
|
font_2x2::@return: scope:[font_2x2] from font_2x2::@9
|
||||||
[59] return
|
[61] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(byte()) font_compress((byte*) font_compress::font_original , (byte*) font_compress::font_compressed , (byte*) font_compress::compress_mapping)
|
(byte()) font_compress((byte*) font_compress::font_original , (byte*) font_compress::font_compressed , (byte*) font_compress::compress_mapping)
|
||||||
font_compress: scope:[font_compress] from main::@6
|
font_compress: scope:[font_compress] from main::@6
|
||||||
[60] phi()
|
[62] phi()
|
||||||
to:font_compress::@1
|
to:font_compress::@1
|
||||||
font_compress::@1: scope:[font_compress] from font_compress font_compress::@6
|
font_compress::@1: scope:[font_compress] from font_compress font_compress::@6
|
||||||
[61] (byte*) font_compress::next_compressed#4 ← phi( font_compress/(const nomodify byte*) FONT_COMPRESSED font_compress::@6/(byte*) font_compress::next_compressed#7 )
|
[63] (byte*) font_compress::next_compressed#4 ← phi( font_compress/(const nomodify byte*) FONT_COMPRESSED font_compress::@6/(byte*) font_compress::next_compressed#7 )
|
||||||
[61] (byte) font_compress::i#4 ← phi( font_compress/(byte) 0 font_compress::@6/(byte) font_compress::i#1 )
|
[63] (byte) font_compress::i#4 ← phi( font_compress/(byte) 0 font_compress::@6/(byte) font_compress::i#1 )
|
||||||
[61] (byte) font_compress::font_size#2 ← phi( font_compress/(byte) 0 font_compress::@6/(byte) font_compress::font_size#9 )
|
[63] (byte) font_compress::font_size#2 ← phi( font_compress/(byte) 0 font_compress::@6/(byte) font_compress::font_size#9 )
|
||||||
[61] (byte*) font_compress::next_original#2 ← phi( font_compress/(const nomodify byte*) FONT_ORIGINAL font_compress::@6/(byte*) font_compress::next_original#1 )
|
[63] (byte*) font_compress::next_original#2 ← phi( font_compress/(const nomodify byte*) FONT_ORIGINAL font_compress::@6/(byte*) font_compress::next_original#1 )
|
||||||
[62] (byte*) font_find::glyph#0 ← (byte*) font_compress::next_original#2
|
[64] (byte*) font_find::glyph#0 ← (byte*) font_compress::next_original#2
|
||||||
[63] (byte) font_find::font_size#0 ← (byte) font_compress::font_size#2
|
[65] (byte) font_find::font_size#0 ← (byte) font_compress::font_size#2
|
||||||
[64] call font_find
|
[66] call font_find
|
||||||
[65] (byte) font_find::return#0 ← (byte) font_find::return#3
|
[67] (byte) font_find::return#0 ← (byte) font_find::return#3
|
||||||
to:font_compress::@5
|
to:font_compress::@5
|
||||||
font_compress::@5: scope:[font_compress] from font_compress::@1
|
font_compress::@5: scope:[font_compress] from font_compress::@1
|
||||||
[66] (byte) font_compress::found#0 ← (byte) font_find::return#0
|
[68] (byte) font_compress::found#0 ← (byte) font_find::return#0
|
||||||
[67] if((byte) font_compress::found#0!=(byte) $ff) goto font_compress::@7
|
[69] if((byte) font_compress::found#0!=(byte) $ff) goto font_compress::@7
|
||||||
to:font_compress::@3
|
to:font_compress::@3
|
||||||
font_compress::@3: scope:[font_compress] from font_compress::@3 font_compress::@5
|
font_compress::@3: scope:[font_compress] from font_compress::@3 font_compress::@5
|
||||||
[68] (byte) font_compress::l#2 ← phi( font_compress::@3/(byte) font_compress::l#1 font_compress::@5/(byte) 0 )
|
[70] (byte) font_compress::l#2 ← phi( font_compress::@3/(byte) font_compress::l#1 font_compress::@5/(byte) 0 )
|
||||||
[69] *((byte*) font_compress::next_compressed#4 + (byte) font_compress::l#2) ← *((byte*) font_compress::next_original#2 + (byte) font_compress::l#2)
|
[71] *((byte*) font_compress::next_compressed#4 + (byte) font_compress::l#2) ← *((byte*) font_compress::next_original#2 + (byte) font_compress::l#2)
|
||||||
[70] (byte) font_compress::l#1 ← ++ (byte) font_compress::l#2
|
[72] (byte) font_compress::l#1 ← ++ (byte) font_compress::l#2
|
||||||
[71] if((byte) font_compress::l#1!=(byte) 8) goto font_compress::@3
|
[73] if((byte) font_compress::l#1!=(byte) 8) goto font_compress::@3
|
||||||
to:font_compress::@4
|
to:font_compress::@4
|
||||||
font_compress::@4: scope:[font_compress] from font_compress::@3
|
font_compress::@4: scope:[font_compress] from font_compress::@3
|
||||||
[72] (byte*) font_compress::next_compressed#1 ← (byte*) font_compress::next_compressed#4 + (byte) 8
|
[74] (byte*) font_compress::next_compressed#1 ← (byte*) font_compress::next_compressed#4 + (byte) 8
|
||||||
[73] (byte) font_compress::font_size#1 ← ++ (byte) font_compress::font_size#2
|
[75] (byte) font_compress::font_size#1 ← ++ (byte) font_compress::font_size#2
|
||||||
[74] (byte) font_compress::found#3 ← (byte) font_compress::font_size#2
|
[76] (byte) font_compress::found#3 ← (byte) font_compress::font_size#2
|
||||||
to:font_compress::@2
|
to:font_compress::@2
|
||||||
font_compress::@2: scope:[font_compress] from font_compress::@4 font_compress::@7
|
font_compress::@2: scope:[font_compress] from font_compress::@4 font_compress::@7
|
||||||
[75] (byte*) font_compress::next_compressed#7 ← phi( font_compress::@4/(byte*) font_compress::next_compressed#1 font_compress::@7/(byte*) font_compress::next_compressed#4 )
|
[77] (byte*) font_compress::next_compressed#7 ← phi( font_compress::@4/(byte*) font_compress::next_compressed#1 font_compress::@7/(byte*) font_compress::next_compressed#4 )
|
||||||
[75] (byte) font_compress::return#1 ← phi( font_compress::@4/(byte) font_compress::font_size#1 font_compress::@7/(byte) font_compress::return#5 )
|
[77] (byte) font_compress::return#1 ← phi( font_compress::@4/(byte) font_compress::font_size#1 font_compress::@7/(byte) font_compress::return#5 )
|
||||||
[75] (byte) font_compress::found#2 ← phi( font_compress::@4/(byte) font_compress::found#3 font_compress::@7/(byte) font_compress::found#0 )
|
[77] (byte) font_compress::found#2 ← phi( font_compress::@4/(byte) font_compress::found#3 font_compress::@7/(byte) font_compress::found#0 )
|
||||||
[76] *((const byte*) FONT_COMPRESSED_MAP + (byte) font_compress::i#4) ← (byte) font_compress::found#2
|
[78] *((const byte*) FONT_COMPRESSED_MAP + (byte) font_compress::i#4) ← (byte) font_compress::found#2
|
||||||
[77] (byte*) font_compress::next_original#1 ← (byte*) font_compress::next_original#2 + (byte) 8
|
[79] (byte*) font_compress::next_original#1 ← (byte*) font_compress::next_original#2 + (byte) 8
|
||||||
[78] (byte) font_compress::i#1 ← ++ (byte) font_compress::i#4
|
[80] (byte) font_compress::i#1 ← ++ (byte) font_compress::i#4
|
||||||
[79] if((byte) font_compress::i#1!=(byte) 0) goto font_compress::@6
|
[81] if((byte) font_compress::i#1!=(byte) 0) goto font_compress::@6
|
||||||
to:font_compress::@return
|
to:font_compress::@return
|
||||||
font_compress::@return: scope:[font_compress] from font_compress::@2
|
font_compress::@return: scope:[font_compress] from font_compress::@2
|
||||||
[80] return
|
[82] return
|
||||||
to:@return
|
to:@return
|
||||||
font_compress::@6: scope:[font_compress] from font_compress::@2
|
font_compress::@6: scope:[font_compress] from font_compress::@2
|
||||||
[81] (byte) font_compress::font_size#9 ← (byte) font_compress::return#1
|
[83] (byte) font_compress::font_size#9 ← (byte) font_compress::return#1
|
||||||
to:font_compress::@1
|
to:font_compress::@1
|
||||||
font_compress::@7: scope:[font_compress] from font_compress::@5
|
font_compress::@7: scope:[font_compress] from font_compress::@5
|
||||||
[82] (byte) font_compress::return#5 ← (byte) font_compress::font_size#2
|
[84] (byte) font_compress::return#5 ← (byte) font_compress::font_size#2
|
||||||
to:font_compress::@2
|
to:font_compress::@2
|
||||||
|
|
||||||
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
(void*()) memset((void*) memset::str , (byte) memset::c , (word) memset::num)
|
||||||
memset: scope:[memset] from main::@5
|
memset: scope:[memset] from main::@5
|
||||||
[83] phi()
|
[85] phi()
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
memset::@1: scope:[memset] from memset memset::@2
|
memset::@1: scope:[memset] from memset memset::@2
|
||||||
[84] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
[86] (byte*) memset::dst#2 ← phi( memset/(byte*)(const void*) memset::str#0 memset::@2/(byte*) memset::dst#1 )
|
||||||
[85] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
[87] if((byte*) memset::dst#2!=(const byte*) memset::end#0) goto memset::@2
|
||||||
to:memset::@return
|
to:memset::@return
|
||||||
memset::@return: scope:[memset] from memset::@1
|
memset::@return: scope:[memset] from memset::@1
|
||||||
[86] return
|
[88] return
|
||||||
to:@return
|
to:@return
|
||||||
memset::@2: scope:[memset] from memset::@1
|
memset::@2: scope:[memset] from memset::@1
|
||||||
[87] *((byte*) memset::dst#2) ← (byte) memset::c#0
|
[89] *((byte*) memset::dst#2) ← (byte) memset::c#0
|
||||||
[88] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
[90] (byte*) memset::dst#1 ← ++ (byte*) memset::dst#2
|
||||||
to:memset::@1
|
to:memset::@1
|
||||||
|
|
||||||
(void()) show((byte) show::c , (byte) show::x , (byte) show::y , (byte*) show::font_mapping)
|
(void()) show((byte) show::c , (byte) show::x , (byte) show::y , (byte*) show::font_mapping)
|
||||||
show: scope:[show] from main::@2
|
show: scope:[show] from main::@2
|
||||||
[89] (word~) show::$7 ← (word)(byte) show::y#0
|
[91] (word~) show::$7 ← (word)(byte) show::y#0
|
||||||
[90] (word~) show::$8 ← (word~) show::$7 << (byte) 2
|
[92] (word~) show::$8 ← (word~) show::$7 << (byte) 2
|
||||||
[91] (word~) show::$9 ← (word~) show::$8 + (word~) show::$7
|
[93] (word~) show::$9 ← (word~) show::$8 + (word~) show::$7
|
||||||
[92] (word~) show::$0 ← (word~) show::$9 << (byte) 4
|
[94] (word~) show::$0 ← (word~) show::$9 << (byte) 4
|
||||||
[93] (byte*~) show::$1 ← (const nomodify byte*) SCREEN + (word~) show::$0
|
[95] (byte*~) show::$1 ← (const nomodify byte*) SCREEN + (word~) show::$0
|
||||||
[94] (byte~) show::$2 ← (byte) show::x#0 << (byte) 1
|
[96] (byte~) show::$2 ← (byte) show::x#0 << (byte) 1
|
||||||
[95] (byte*) show::ptr#0 ← (byte*~) show::$1 + (byte~) show::$2
|
[97] (byte*) show::ptr#0 ← (byte*~) show::$1 + (byte~) show::$2
|
||||||
[96] *((byte*) show::ptr#0) ← *((const byte*) FONT_COMPRESSED_MAP + (byte) show::c#0)
|
[98] *((byte*) show::ptr#0) ← *((const byte*) FONT_COMPRESSED_MAP + (byte) show::c#0)
|
||||||
[97] (byte~) show::$4 ← (byte) show::c#0
|
[99] (byte~) show::$4 ← (byte) show::c#0
|
||||||
[98] *((byte*) show::ptr#0 + (byte) 1) ← *((const byte*) FONT_COMPRESSED_MAP+(byte) $40 + (byte~) show::$4)
|
[100] *((byte*) show::ptr#0 + (byte) 1) ← *((const byte*) FONT_COMPRESSED_MAP+(byte) $40 + (byte~) show::$4)
|
||||||
[99] (byte~) show::$5 ← (byte) show::c#0
|
[101] (byte~) show::$5 ← (byte) show::c#0
|
||||||
[100] *((byte*) show::ptr#0 + (byte) $28) ← *((const byte*) FONT_COMPRESSED_MAP+(byte) $80 + (byte~) show::$5)
|
[102] *((byte*) show::ptr#0 + (byte) $28) ← *((const byte*) FONT_COMPRESSED_MAP+(byte) $80 + (byte~) show::$5)
|
||||||
[101] (byte~) show::$6 ← (byte) show::c#0
|
[103] (byte~) show::$6 ← (byte) show::c#0
|
||||||
[102] *((byte*) show::ptr#0 + (byte) $29) ← *((const byte*) FONT_COMPRESSED_MAP+(byte) $c0 + (byte~) show::$6)
|
[104] *((byte*) show::ptr#0 + (byte) $29) ← *((const byte*) FONT_COMPRESSED_MAP+(byte) $c0 + (byte~) show::$6)
|
||||||
to:show::@return
|
to:show::@return
|
||||||
show::@return: scope:[show] from show
|
show::@return: scope:[show] from show
|
||||||
[103] return
|
[105] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(byte()) font_find((byte*) font_find::glyph , (byte*) font_find::font , (byte) font_find::font_size)
|
(byte()) font_find((byte*) font_find::glyph , (byte*) font_find::font , (byte) font_find::font_size)
|
||||||
font_find: scope:[font_find] from font_compress::@1
|
font_find: scope:[font_find] from font_compress::@1
|
||||||
[104] phi()
|
[106] phi()
|
||||||
to:font_find::@1
|
to:font_find::@1
|
||||||
font_find::@1: scope:[font_find] from font_find font_find::@5
|
font_find::@1: scope:[font_find] from font_find font_find::@5
|
||||||
[105] (byte*) font_find::font#4 ← phi( font_find/(const nomodify byte*) FONT_COMPRESSED font_find::@5/(byte*) font_find::font#1 )
|
[107] (byte*) font_find::font#4 ← phi( font_find/(const nomodify byte*) FONT_COMPRESSED font_find::@5/(byte*) font_find::font#1 )
|
||||||
[105] (byte) font_find::i#2 ← phi( font_find/(byte) 0 font_find::@5/(byte) font_find::i#1 )
|
[107] (byte) font_find::i#2 ← phi( font_find/(byte) 0 font_find::@5/(byte) font_find::i#1 )
|
||||||
[106] if((byte) font_find::i#2<(byte) font_find::font_size#0) goto font_find::@2
|
[108] if((byte) font_find::i#2<(byte) font_find::font_size#0) goto font_find::@2
|
||||||
to:font_find::@return
|
to:font_find::@return
|
||||||
font_find::@return: scope:[font_find] from font_find::@1 font_find::@4
|
font_find::@return: scope:[font_find] from font_find::@1 font_find::@4
|
||||||
[107] (byte) font_find::return#3 ← phi( font_find::@1/(byte) $ff font_find::@4/(byte) font_find::i#2 )
|
[109] (byte) font_find::return#3 ← phi( font_find::@1/(byte) $ff font_find::@4/(byte) font_find::i#2 )
|
||||||
[108] return
|
[110] return
|
||||||
to:@return
|
to:@return
|
||||||
font_find::@2: scope:[font_find] from font_find::@1 font_find::@3
|
font_find::@2: scope:[font_find] from font_find::@1 font_find::@3
|
||||||
[109] (byte) font_find::l#2 ← phi( font_find::@1/(byte) 0 font_find::@3/(byte) font_find::l#1 )
|
[111] (byte) font_find::l#2 ← phi( font_find::@1/(byte) 0 font_find::@3/(byte) font_find::l#1 )
|
||||||
[110] if(*((byte*) font_find::glyph#0 + (byte) font_find::l#2)==*((byte*) font_find::font#4 + (byte) font_find::l#2)) goto font_find::@3
|
[112] if(*((byte*) font_find::glyph#0 + (byte) font_find::l#2)==*((byte*) font_find::font#4 + (byte) font_find::l#2)) goto font_find::@3
|
||||||
to:font_find::@4
|
to:font_find::@4
|
||||||
font_find::@3: scope:[font_find] from font_find::@2
|
font_find::@3: scope:[font_find] from font_find::@2
|
||||||
[111] (byte) font_find::l#1 ← ++ (byte) font_find::l#2
|
[113] (byte) font_find::l#1 ← ++ (byte) font_find::l#2
|
||||||
[112] if((byte) font_find::l#1!=(byte) 8) goto font_find::@2
|
[114] if((byte) font_find::l#1!=(byte) 8) goto font_find::@2
|
||||||
to:font_find::@4
|
to:font_find::@4
|
||||||
font_find::@4: scope:[font_find] from font_find::@2 font_find::@3
|
font_find::@4: scope:[font_find] from font_find::@2 font_find::@3
|
||||||
[113] (byte) font_find::found#2 ← phi( font_find::@3/(byte) 1 font_find::@2/(byte) 0 )
|
[115] (byte) font_find::found#2 ← phi( font_find::@3/(byte) 1 font_find::@2/(byte) 0 )
|
||||||
[114] if((byte) 0==(byte) font_find::found#2) goto font_find::@5
|
[116] if((byte) 0==(byte) font_find::found#2) goto font_find::@5
|
||||||
to:font_find::@return
|
to:font_find::@return
|
||||||
font_find::@5: scope:[font_find] from font_find::@4
|
font_find::@5: scope:[font_find] from font_find::@4
|
||||||
[115] (byte*) font_find::font#1 ← (byte*) font_find::font#4 + (byte) 8
|
[117] (byte*) font_find::font#1 ← (byte*) font_find::font#4 + (byte) 8
|
||||||
[116] (byte) font_find::i#1 ← ++ (byte) font_find::i#2
|
[118] (byte) font_find::i#1 ← ++ (byte) font_find::i#2
|
||||||
to:font_find::@1
|
to:font_find::@1
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -93,10 +93,12 @@
|
|||||||
(const nomodify byte*) SCREEN = (byte*) 1024
|
(const nomodify byte*) SCREEN = (byte*) 1024
|
||||||
(void()) font_2x2((byte*) font_2x2::font_original , (byte*) font_2x2::font_2x2)
|
(void()) font_2x2((byte*) font_2x2::font_original , (byte*) font_2x2::font_2x2)
|
||||||
(byte~) font_2x2::$1 reg byte a 20002.0
|
(byte~) font_2x2::$1 reg byte a 20002.0
|
||||||
(byte~) font_2x2::$11 reg byte y 2002.0
|
(byte~) font_2x2::$10 reg byte a 2002.0
|
||||||
(byte~) font_2x2::$12 reg byte a 1001.0
|
(byte~) font_2x2::$11 reg byte y 1001.0
|
||||||
(byte~) font_2x2::$14 reg byte y 2002.0
|
(byte~) font_2x2::$12 reg byte a 2002.0
|
||||||
(byte~) font_2x2::$15 reg byte a 1001.0
|
(byte~) font_2x2::$13 reg byte a 2002.0
|
||||||
|
(byte~) font_2x2::$14 reg byte y 1001.0
|
||||||
|
(byte~) font_2x2::$15 reg byte a 2002.0
|
||||||
(word~) font_2x2::$5 zp[2]:15 20002.0
|
(word~) font_2x2::$5 zp[2]:15 20002.0
|
||||||
(word~) font_2x2::$7 zp[2]:15 20002.0
|
(word~) font_2x2::$7 zp[2]:15 20002.0
|
||||||
(label) font_2x2::@1
|
(label) font_2x2::@1
|
||||||
@ -114,7 +116,7 @@
|
|||||||
(byte) font_2x2::b#2 reg byte y 2000.2
|
(byte) font_2x2::b#2 reg byte y 2000.2
|
||||||
(byte) font_2x2::c
|
(byte) font_2x2::c
|
||||||
(byte) font_2x2::c#1 c zp[1]:7 151.5
|
(byte) font_2x2::c#1 c zp[1]:7 151.5
|
||||||
(byte) font_2x2::c#11 c zp[1]:7 5.9411764705882355
|
(byte) font_2x2::c#11 c zp[1]:7 5.611111111111111
|
||||||
(byte*) font_2x2::font_2x2
|
(byte*) font_2x2::font_2x2
|
||||||
(byte*) font_2x2::font_original
|
(byte*) font_2x2::font_original
|
||||||
(byte) font_2x2::glyph_bit
|
(byte) font_2x2::glyph_bit
|
||||||
@ -125,31 +127,31 @@
|
|||||||
(byte) font_2x2::glyph_bits#2 glyph_bits zp[1]:6 3444.8888888888887
|
(byte) font_2x2::glyph_bits#2 glyph_bits zp[1]:6 3444.8888888888887
|
||||||
(word) font_2x2::glyph_bits_2x2
|
(word) font_2x2::glyph_bits_2x2
|
||||||
(word) font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:15 20002.0
|
(word) font_2x2::glyph_bits_2x2#1 glyph_bits_2x2 zp[2]:15 20002.0
|
||||||
(word) font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:15 2750.5
|
(word) font_2x2::glyph_bits_2x2#2 glyph_bits_2x2 zp[2]:15 2000.5000000000002
|
||||||
(word) font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:15 4000.4
|
(word) font_2x2::glyph_bits_2x2#3 glyph_bits_2x2 zp[2]:15 4000.4
|
||||||
(byte) font_2x2::l
|
(byte) font_2x2::l
|
||||||
(byte) font_2x2::l#1 l zp[1]:8 1501.5
|
(byte) font_2x2::l#1 l zp[1]:8 1501.5
|
||||||
(byte) font_2x2::l#2 l zp[1]:8 111.22222222222223
|
(byte) font_2x2::l#2 l zp[1]:8 103.55172413793102
|
||||||
(byte) font_2x2::l2
|
(byte) font_2x2::l2
|
||||||
(byte) font_2x2::l2#1 l2 zp[1]:5 1501.5
|
(byte) font_2x2::l2#1 l2 zp[1]:5 1501.5
|
||||||
(byte) font_2x2::l2#8 l2 zp[1]:5 273.0
|
(byte) font_2x2::l2#8 l2 zp[1]:5 250.25000000000003
|
||||||
(byte) font_2x2::l2#9 l2 zp[1]:5 667.3333333333334
|
(byte) font_2x2::l2#9 l2 zp[1]:5 667.3333333333334
|
||||||
(byte*) font_2x2::next_2x2
|
(byte*) font_2x2::next_2x2
|
||||||
(byte*) font_2x2::next_2x2#1 next_2x2 zp[2]:17 50.5
|
(byte*) font_2x2::next_2x2#1 next_2x2 zp[2]:17 50.5
|
||||||
(byte*) font_2x2::next_2x2_left
|
(byte*) font_2x2::next_2x2_left
|
||||||
(byte*) font_2x2::next_2x2_left#0 next_2x2_left zp[2]:17 75.1875
|
(byte*) font_2x2::next_2x2_left#0 next_2x2_left zp[2]:17 70.76470588235294
|
||||||
(byte*) font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:11 1001.0
|
(byte*) font_2x2::next_2x2_left#1 next_2x2_left_1 zp[2]:11 1001.0
|
||||||
(byte*) font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:11 202.0
|
(byte*) font_2x2::next_2x2_left#10 next_2x2_left_1 zp[2]:11 202.0
|
||||||
(byte*) font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:11 171.04166666666669
|
(byte*) font_2x2::next_2x2_left#7 next_2x2_left_1 zp[2]:11 157.8846153846154
|
||||||
(byte*) font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:11 1001.0
|
(byte*) font_2x2::next_2x2_left#8 next_2x2_left_1 zp[2]:11 1001.0
|
||||||
(byte*) font_2x2::next_2x2_right
|
(byte*) font_2x2::next_2x2_right
|
||||||
(byte*) font_2x2::next_2x2_right#0 next_2x2_right zp[2]:13 101.0
|
(byte*) font_2x2::next_2x2_right#0 next_2x2_right zp[2]:13 101.0
|
||||||
(byte*) font_2x2::next_2x2_right#1 next_2x2_right zp[2]:13 2002.0
|
(byte*) font_2x2::next_2x2_right#1 next_2x2_right zp[2]:13 2002.0
|
||||||
(byte*) font_2x2::next_2x2_right#7 next_2x2_right zp[2]:13 171.04166666666669
|
(byte*) font_2x2::next_2x2_right#7 next_2x2_right zp[2]:13 157.8846153846154
|
||||||
(byte*) font_2x2::next_2x2_right#8 next_2x2_right zp[2]:13 1001.0
|
(byte*) font_2x2::next_2x2_right#8 next_2x2_right zp[2]:13 1001.0
|
||||||
(byte*) font_2x2::next_original
|
(byte*) font_2x2::next_original
|
||||||
(byte*) font_2x2::next_original#1 next_original zp[2]:9 67.33333333333333
|
(byte*) font_2x2::next_original#1 next_original zp[2]:9 67.33333333333333
|
||||||
(byte*) font_2x2::next_original#4 next_original zp[2]:9 36.45454545454545
|
(byte*) font_2x2::next_original#4 next_original zp[2]:9 34.371428571428574
|
||||||
(byte()) font_compress((byte*) font_compress::font_original , (byte*) font_compress::font_compressed , (byte*) font_compress::compress_mapping)
|
(byte()) font_compress((byte*) font_compress::font_original , (byte*) font_compress::font_compressed , (byte*) font_compress::compress_mapping)
|
||||||
(label) font_compress::@1
|
(label) font_compress::@1
|
||||||
(label) font_compress::@2
|
(label) font_compress::@2
|
||||||
@ -293,10 +295,12 @@ reg byte x [ memset::c#0 ]
|
|||||||
reg byte x [ show::x#0 ]
|
reg byte x [ show::x#0 ]
|
||||||
reg byte a [ show::y#0 ]
|
reg byte a [ show::y#0 ]
|
||||||
reg byte a [ font_2x2::$1 ]
|
reg byte a [ font_2x2::$1 ]
|
||||||
reg byte a [ font_2x2::$12 ]
|
reg byte a [ font_2x2::$10 ]
|
||||||
reg byte y [ font_2x2::$11 ]
|
reg byte y [ font_2x2::$11 ]
|
||||||
reg byte a [ font_2x2::$15 ]
|
reg byte a [ font_2x2::$12 ]
|
||||||
|
reg byte a [ font_2x2::$13 ]
|
||||||
reg byte y [ font_2x2::$14 ]
|
reg byte y [ font_2x2::$14 ]
|
||||||
|
reg byte a [ font_2x2::$15 ]
|
||||||
reg byte a [ font_find::return#0 ]
|
reg byte a [ font_find::return#0 ]
|
||||||
zp[2]:15 [ show::$7 show::$9 show::$0 show::$1 show::ptr#0 font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 font_2x2::$7 font_2x2::glyph_bits_2x2#1 ]
|
zp[2]:15 [ show::$7 show::$9 show::$0 show::$1 show::ptr#0 font_2x2::glyph_bits_2x2#3 font_2x2::glyph_bits_2x2#2 font_2x2::$5 font_2x2::$7 font_2x2::glyph_bits_2x2#1 ]
|
||||||
zp[2]:17 [ show::$8 font_compress::next_original#2 font_compress::next_original#1 font_find::glyph#0 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
zp[2]:17 [ show::$8 font_compress::next_original#2 font_compress::next_original#1 font_find::glyph#0 font_2x2::next_2x2_left#0 font_2x2::next_2x2#1 ]
|
||||||
|
@ -127,7 +127,7 @@ main: {
|
|||||||
// Ie. the memory that will be pointed to is $100 * the passed page address. Only the lower 12bits of the passed value is used.
|
// Ie. the memory that will be pointed to is $100 * the passed page address. Only the lower 12bits of the passed value is used.
|
||||||
// memoryRemapBlock(byte register(X) blockPage)
|
// memoryRemapBlock(byte register(X) blockPage)
|
||||||
memoryRemapBlock: {
|
memoryRemapBlock: {
|
||||||
.label pageOffset = $d
|
.label pageOffset = $b
|
||||||
// pageOffset = memoryPage-blockPage
|
// pageOffset = memoryPage-blockPage
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
lda #<$100
|
lda #<$100
|
||||||
@ -188,16 +188,16 @@ memoryRemapBlock: {
|
|||||||
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
||||||
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
||||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||||
// memoryRemap(byte register(Z) remapBlocks, word zp($d) lowerPageOffset, word zp(2) upperPageOffset)
|
// memoryRemap(byte register(Z) remapBlocks, word zp($b) lowerPageOffset, word zp($e) upperPageOffset)
|
||||||
memoryRemap: {
|
memoryRemap: {
|
||||||
.label aVal = $fc
|
.label aVal = $fc
|
||||||
.label xVal = $fd
|
.label xVal = $fd
|
||||||
.label yVal = $fe
|
.label yVal = $fe
|
||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __1 = $f
|
.label __1 = $d
|
||||||
.label __6 = 8
|
.label __6 = 6
|
||||||
.label lowerPageOffset = $d
|
.label lowerPageOffset = $b
|
||||||
.label upperPageOffset = 2
|
.label upperPageOffset = $e
|
||||||
// <lowerPageOffset
|
// <lowerPageOffset
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
// *aVal = <lowerPageOffset
|
// *aVal = <lowerPageOffset
|
||||||
@ -268,7 +268,7 @@ memoryRemap: {
|
|||||||
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
||||||
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
||||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||||
// memoryRemap256M(byte register(Z) remapBlocks, dword zp(4) lowerPageOffset)
|
// memoryRemap256M(byte register(Z) remapBlocks, dword zp(2) lowerPageOffset)
|
||||||
memoryRemap256M: {
|
memoryRemap256M: {
|
||||||
.label lMb = $fa
|
.label lMb = $fa
|
||||||
.label uMb = $fb
|
.label uMb = $fb
|
||||||
@ -276,10 +276,11 @@ memoryRemap256M: {
|
|||||||
.label xVal = $fd
|
.label xVal = $fd
|
||||||
.label yVal = $fe
|
.label yVal = $fe
|
||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __0 = 9
|
.label __0 = 7
|
||||||
.label __6 = $f
|
.label __4 = $b
|
||||||
.label __7 = $d
|
.label __6 = $d
|
||||||
.label lowerPageOffset = 4
|
.label __7 = $e
|
||||||
|
.label lowerPageOffset = 2
|
||||||
// lowerPageOffset>>4
|
// lowerPageOffset>>4
|
||||||
lda.z lowerPageOffset+3
|
lda.z lowerPageOffset+3
|
||||||
lsr
|
lsr
|
||||||
@ -314,11 +315,11 @@ memoryRemap256M: {
|
|||||||
sta uMb
|
sta uMb
|
||||||
// <lowerPageOffset
|
// <lowerPageOffset
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
sta.z __7
|
sta.z __4
|
||||||
lda.z lowerPageOffset+1
|
lda.z lowerPageOffset+1
|
||||||
sta.z __7+1
|
sta.z __4+1
|
||||||
// < <lowerPageOffset
|
// < <lowerPageOffset
|
||||||
lda.z __7
|
lda.z __4
|
||||||
// *aVal = < <lowerPageOffset
|
// *aVal = < <lowerPageOffset
|
||||||
sta aVal
|
sta aVal
|
||||||
// remapBlocks << 4
|
// remapBlocks << 4
|
||||||
@ -328,8 +329,12 @@ memoryRemap256M: {
|
|||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
sta.z __6
|
sta.z __6
|
||||||
|
// <lowerPageOffset
|
||||||
|
lda.z lowerPageOffset
|
||||||
|
sta.z __7
|
||||||
|
lda.z lowerPageOffset+1
|
||||||
|
sta.z __7+1
|
||||||
// > <lowerPageOffset
|
// > <lowerPageOffset
|
||||||
lda.z __7+1
|
|
||||||
// > <lowerPageOffset & 0xf
|
// > <lowerPageOffset & 0xf
|
||||||
and #$f
|
and #$f
|
||||||
// (remapBlocks << 4) | (> <lowerPageOffset & 0xf)
|
// (remapBlocks << 4) | (> <lowerPageOffset & 0xf)
|
||||||
|
@ -95,19 +95,20 @@ memoryRemap256M: scope:[memoryRemap256M] from main::@3 main::@6
|
|||||||
[52] (byte~) memoryRemap256M::$1 ← > (word)(dword~) memoryRemap256M::$0
|
[52] (byte~) memoryRemap256M::$1 ← > (word)(dword~) memoryRemap256M::$0
|
||||||
[53] *((const byte*) memoryRemap256M::lMb) ← (byte~) memoryRemap256M::$1
|
[53] *((const byte*) memoryRemap256M::lMb) ← (byte~) memoryRemap256M::$1
|
||||||
[54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0
|
[54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0
|
||||||
[55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
[55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
||||||
[56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$7
|
[56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$4
|
||||||
[57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5
|
[57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5
|
||||||
[58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4
|
[58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4
|
||||||
[59] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7
|
[59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
||||||
[60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f
|
[60] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7
|
||||||
[61] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9
|
[61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f
|
||||||
[62] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10
|
[62] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9
|
||||||
[63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0
|
[63] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10
|
||||||
[64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0
|
[64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0
|
||||||
[65] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17
|
[65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0
|
||||||
|
[66] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17
|
||||||
asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
||||||
to:memoryRemap256M::@return
|
to:memoryRemap256M::@return
|
||||||
memoryRemap256M::@return: scope:[memoryRemap256M] from memoryRemap256M
|
memoryRemap256M::@return: scope:[memoryRemap256M] from memoryRemap256M
|
||||||
[67] return
|
[68] return
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -761,9 +761,6 @@ Alias memoryRemapBlock::blockBits#0 = memoryRemapBlock::$2
|
|||||||
Alias main::i#2 = main::i#3
|
Alias main::i#2 = main::i#3
|
||||||
Alias main::i1#2 = main::i1#3
|
Alias main::i1#2 = main::i1#3
|
||||||
Successful SSA optimization Pass2AliasElimination
|
Successful SSA optimization Pass2AliasElimination
|
||||||
Identified duplicate assignment right side [40] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
|
||||||
Identified duplicate assignment right side [49] (word~) memoryRemap256M::$14 ← < (dword) memoryRemap256M::upperPageOffset#2
|
|
||||||
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
||||||
Simple Condition (bool~) main::$5 [72] if((byte) main::i#2<(byte) 6) goto main::@2
|
Simple Condition (bool~) main::$5 [72] if((byte) main::i#2<(byte) 6) goto main::@2
|
||||||
Simple Condition (bool~) main::$6 [82] if((byte) main::i1#2<(byte) $10) goto main::@5
|
Simple Condition (bool~) main::$6 [82] if((byte) main::i1#2<(byte) $10) goto main::@5
|
||||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||||
@ -792,9 +789,6 @@ Removing unused procedure block __start
|
|||||||
Removing unused procedure block __start::@1
|
Removing unused procedure block __start::@1
|
||||||
Removing unused procedure block __start::@return
|
Removing unused procedure block __start::@return
|
||||||
Successful SSA optimization PassNEliminateEmptyStart
|
Successful SSA optimization PassNEliminateEmptyStart
|
||||||
Alias memoryRemap256M::$7 = memoryRemap256M::$4
|
|
||||||
Alias memoryRemap256M::$14 = memoryRemap256M::$11
|
|
||||||
Successful SSA optimization Pass2AliasElimination
|
|
||||||
Rewriting division to use shift [19] (byte) memoryRemapBlock::block#0 ← (byte) memoryRemapBlock::blockPage#2 / (byte) $20
|
Rewriting division to use shift [19] (byte) memoryRemapBlock::block#0 ← (byte) memoryRemapBlock::blockPage#2 / (byte) $20
|
||||||
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
||||||
Inlining constant with var siblings (const byte) memoryRemap::remapBlocks#1
|
Inlining constant with var siblings (const byte) memoryRemap::remapBlocks#1
|
||||||
@ -840,24 +834,28 @@ Identical Phi Values (word) memoryRemapBlock::memoryPage#2 (word) $100
|
|||||||
Identical Phi Values (dword) memoryRemap256M::upperPageOffset#2 (byte) 0
|
Identical Phi Values (dword) memoryRemap256M::upperPageOffset#2 (byte) 0
|
||||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||||
Constant right-side identified [30] (dword~) memoryRemap256M::$2 ← (byte) 0 >> (byte) 4
|
Constant right-side identified [30] (dword~) memoryRemap256M::$2 ← (byte) 0 >> (byte) 4
|
||||||
Constant right-side identified [41] (word~) memoryRemap256M::$14 ← < (byte) 0
|
Constant right-side identified [42] (word~) memoryRemap256M::$11 ← < (byte) 0
|
||||||
|
Constant right-side identified [46] (word~) memoryRemap256M::$14 ← < (byte) 0
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
Constant (const dword) memoryRemap256M::$2 = 0>>4
|
Constant (const dword) memoryRemap256M::$2 = 0>>4
|
||||||
|
Constant (const word) memoryRemap256M::$11 = <0
|
||||||
Constant (const word) memoryRemap256M::$14 = <0
|
Constant (const word) memoryRemap256M::$14 = <0
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
Constant value identified (word)memoryRemap256M::$2 in [31] (byte~) memoryRemap256M::$3 ← > (word)(const dword) memoryRemap256M::$2
|
Constant value identified (word)memoryRemap256M::$2 in [31] (byte~) memoryRemap256M::$3 ← > (word)(const dword) memoryRemap256M::$2
|
||||||
Successful SSA optimization Pass2ConstantValues
|
Successful SSA optimization Pass2ConstantValues
|
||||||
Simplifying constant evaluating to zero (byte) 0>>(byte) 4 in
|
Simplifying constant evaluating to zero (byte) 0>>(byte) 4 in
|
||||||
Simplifying constant evaluating to zero <(byte) 0 in
|
Simplifying constant evaluating to zero <(byte) 0 in
|
||||||
|
Simplifying constant evaluating to zero <(byte) 0 in
|
||||||
Simplifying constant evaluating to zero (word)(const dword) memoryRemap256M::$2 in [31] (byte~) memoryRemap256M::$3 ← > (word)(const dword) memoryRemap256M::$2
|
Simplifying constant evaluating to zero (word)(const dword) memoryRemap256M::$2 in [31] (byte~) memoryRemap256M::$3 ← > (word)(const dword) memoryRemap256M::$2
|
||||||
Successful SSA optimization PassNSimplifyConstantZero
|
Successful SSA optimization PassNSimplifyConstantZero
|
||||||
Eliminating unused constant (const dword) memoryRemap256M::$2
|
Eliminating unused constant (const dword) memoryRemap256M::$2
|
||||||
Successful SSA optimization PassNEliminateUnusedVars
|
Successful SSA optimization PassNEliminateUnusedVars
|
||||||
|
Constant inlined memoryRemap256M::$11 = (byte) 0
|
||||||
Constant inlined memoryRemap256M::$14 = (byte) 0
|
Constant inlined memoryRemap256M::$14 = (byte) 0
|
||||||
Successful SSA optimization Pass2ConstantInlining
|
Successful SSA optimization Pass2ConstantInlining
|
||||||
Constant right-side identified [30] (byte~) memoryRemap256M::$3 ← > (word) 0
|
Constant right-side identified [30] (byte~) memoryRemap256M::$3 ← > (word) 0
|
||||||
Constant right-side identified [40] (byte~) memoryRemap256M::$12 ← < (byte) 0
|
Constant right-side identified [41] (byte~) memoryRemap256M::$12 ← < (byte) 0
|
||||||
Constant right-side identified [43] (byte~) memoryRemap256M::$15 ← > (byte) 0
|
Constant right-side identified [44] (byte~) memoryRemap256M::$15 ← > (byte) 0
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
Constant (const byte) memoryRemap256M::$3 = >0
|
Constant (const byte) memoryRemap256M::$3 = >0
|
||||||
Constant (const byte) memoryRemap256M::$12 = <0
|
Constant (const byte) memoryRemap256M::$12 = <0
|
||||||
@ -871,13 +869,13 @@ Constant inlined memoryRemap256M::$15 = (byte) 0
|
|||||||
Constant inlined memoryRemap256M::$12 = (byte) 0
|
Constant inlined memoryRemap256M::$12 = (byte) 0
|
||||||
Constant inlined memoryRemap256M::$3 = (byte) 0
|
Constant inlined memoryRemap256M::$3 = (byte) 0
|
||||||
Successful SSA optimization Pass2ConstantInlining
|
Successful SSA optimization Pass2ConstantInlining
|
||||||
Constant right-side identified [41] (byte~) memoryRemap256M::$16 ← (byte) 0 & (byte) $f
|
Constant right-side identified [42] (byte~) memoryRemap256M::$16 ← (byte) 0 & (byte) $f
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
Constant (const byte) memoryRemap256M::$16 = 0&$f
|
Constant (const byte) memoryRemap256M::$16 = 0&$f
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
Simplifying constant evaluating to zero (byte) 0&(byte) $f in
|
Simplifying constant evaluating to zero (byte) 0&(byte) $f in
|
||||||
Successful SSA optimization PassNSimplifyConstantZero
|
Successful SSA optimization PassNSimplifyConstantZero
|
||||||
Simplifying expression containing zero memoryRemap256M::$13 in [42] (byte~) memoryRemap256M::$17 ← (byte~) memoryRemap256M::$13 | (const byte) memoryRemap256M::$16
|
Simplifying expression containing zero memoryRemap256M::$13 in [43] (byte~) memoryRemap256M::$17 ← (byte~) memoryRemap256M::$13 | (const byte) memoryRemap256M::$16
|
||||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||||
Eliminating unused constant (const byte) memoryRemap256M::$16
|
Eliminating unused constant (const byte) memoryRemap256M::$16
|
||||||
Successful SSA optimization PassNEliminateUnusedVars
|
Successful SSA optimization PassNEliminateUnusedVars
|
||||||
@ -1005,21 +1003,22 @@ memoryRemap256M: scope:[memoryRemap256M] from main::@3 main::@6
|
|||||||
[52] (byte~) memoryRemap256M::$1 ← > (word)(dword~) memoryRemap256M::$0
|
[52] (byte~) memoryRemap256M::$1 ← > (word)(dword~) memoryRemap256M::$0
|
||||||
[53] *((const byte*) memoryRemap256M::lMb) ← (byte~) memoryRemap256M::$1
|
[53] *((const byte*) memoryRemap256M::lMb) ← (byte~) memoryRemap256M::$1
|
||||||
[54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0
|
[54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0
|
||||||
[55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
[55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
||||||
[56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$7
|
[56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$4
|
||||||
[57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5
|
[57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5
|
||||||
[58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4
|
[58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4
|
||||||
[59] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7
|
[59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2
|
||||||
[60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f
|
[60] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7
|
||||||
[61] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9
|
[61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f
|
||||||
[62] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10
|
[62] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9
|
||||||
[63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0
|
[63] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10
|
||||||
[64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0
|
[64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0
|
||||||
[65] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17
|
[65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0
|
||||||
|
[66] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17
|
||||||
asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
||||||
to:memoryRemap256M::@return
|
to:memoryRemap256M::@return
|
||||||
memoryRemap256M::@return: scope:[memoryRemap256M] from memoryRemap256M
|
memoryRemap256M::@return: scope:[memoryRemap256M] from memoryRemap256M
|
||||||
[67] return
|
[68] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
|
|
||||||
@ -1365,15 +1364,16 @@ VARIABLE REGISTER WEIGHTS
|
|||||||
(byte~) memoryRemap256M::$1 22.0
|
(byte~) memoryRemap256M::$1 22.0
|
||||||
(byte~) memoryRemap256M::$10 22.0
|
(byte~) memoryRemap256M::$10 22.0
|
||||||
(byte~) memoryRemap256M::$17 22.0
|
(byte~) memoryRemap256M::$17 22.0
|
||||||
|
(word~) memoryRemap256M::$4 22.0
|
||||||
(byte~) memoryRemap256M::$5 22.0
|
(byte~) memoryRemap256M::$5 22.0
|
||||||
(byte~) memoryRemap256M::$6 7.333333333333333
|
(byte~) memoryRemap256M::$6 5.5
|
||||||
(word~) memoryRemap256M::$7 8.25
|
(word~) memoryRemap256M::$7 22.0
|
||||||
(byte~) memoryRemap256M::$8 22.0
|
(byte~) memoryRemap256M::$8 22.0
|
||||||
(byte~) memoryRemap256M::$9 22.0
|
(byte~) memoryRemap256M::$9 22.0
|
||||||
(dword) memoryRemap256M::lowerPageOffset
|
(dword) memoryRemap256M::lowerPageOffset
|
||||||
(dword) memoryRemap256M::lowerPageOffset#2 4.4
|
(dword) memoryRemap256M::lowerPageOffset#2 3.666666666666667
|
||||||
(byte) memoryRemap256M::remapBlocks
|
(byte) memoryRemap256M::remapBlocks
|
||||||
(byte) memoryRemap256M::remapBlocks#2 1.5714285714285714
|
(byte) memoryRemap256M::remapBlocks#2 1.4666666666666666
|
||||||
(dword) memoryRemap256M::upperPageOffset
|
(dword) memoryRemap256M::upperPageOffset
|
||||||
(void()) memoryRemapBlock((byte) memoryRemapBlock::blockPage , (word) memoryRemapBlock::memoryPage)
|
(void()) memoryRemapBlock((byte) memoryRemapBlock::blockPage , (word) memoryRemapBlock::memoryPage)
|
||||||
(byte) memoryRemapBlock::block
|
(byte) memoryRemapBlock::block
|
||||||
@ -1411,9 +1411,10 @@ Added variable memoryRemap::$8 to live range equivalence class [ memoryRemap::$8
|
|||||||
Added variable memoryRemap::$9 to live range equivalence class [ memoryRemap::$9 ]
|
Added variable memoryRemap::$9 to live range equivalence class [ memoryRemap::$9 ]
|
||||||
Added variable memoryRemap256M::$0 to live range equivalence class [ memoryRemap256M::$0 ]
|
Added variable memoryRemap256M::$0 to live range equivalence class [ memoryRemap256M::$0 ]
|
||||||
Added variable memoryRemap256M::$1 to live range equivalence class [ memoryRemap256M::$1 ]
|
Added variable memoryRemap256M::$1 to live range equivalence class [ memoryRemap256M::$1 ]
|
||||||
Added variable memoryRemap256M::$7 to live range equivalence class [ memoryRemap256M::$7 ]
|
Added variable memoryRemap256M::$4 to live range equivalence class [ memoryRemap256M::$4 ]
|
||||||
Added variable memoryRemap256M::$5 to live range equivalence class [ memoryRemap256M::$5 ]
|
Added variable memoryRemap256M::$5 to live range equivalence class [ memoryRemap256M::$5 ]
|
||||||
Added variable memoryRemap256M::$6 to live range equivalence class [ memoryRemap256M::$6 ]
|
Added variable memoryRemap256M::$6 to live range equivalence class [ memoryRemap256M::$6 ]
|
||||||
|
Added variable memoryRemap256M::$7 to live range equivalence class [ memoryRemap256M::$7 ]
|
||||||
Added variable memoryRemap256M::$8 to live range equivalence class [ memoryRemap256M::$8 ]
|
Added variable memoryRemap256M::$8 to live range equivalence class [ memoryRemap256M::$8 ]
|
||||||
Added variable memoryRemap256M::$9 to live range equivalence class [ memoryRemap256M::$9 ]
|
Added variable memoryRemap256M::$9 to live range equivalence class [ memoryRemap256M::$9 ]
|
||||||
Added variable memoryRemap256M::$10 to live range equivalence class [ memoryRemap256M::$10 ]
|
Added variable memoryRemap256M::$10 to live range equivalence class [ memoryRemap256M::$10 ]
|
||||||
@ -1443,9 +1444,10 @@ Complete equivalence classes
|
|||||||
[ memoryRemap::$9 ]
|
[ memoryRemap::$9 ]
|
||||||
[ memoryRemap256M::$0 ]
|
[ memoryRemap256M::$0 ]
|
||||||
[ memoryRemap256M::$1 ]
|
[ memoryRemap256M::$1 ]
|
||||||
[ memoryRemap256M::$7 ]
|
[ memoryRemap256M::$4 ]
|
||||||
[ memoryRemap256M::$5 ]
|
[ memoryRemap256M::$5 ]
|
||||||
[ memoryRemap256M::$6 ]
|
[ memoryRemap256M::$6 ]
|
||||||
|
[ memoryRemap256M::$7 ]
|
||||||
[ memoryRemap256M::$8 ]
|
[ memoryRemap256M::$8 ]
|
||||||
[ memoryRemap256M::$9 ]
|
[ memoryRemap256M::$9 ]
|
||||||
[ memoryRemap256M::$10 ]
|
[ memoryRemap256M::$10 ]
|
||||||
@ -1474,13 +1476,14 @@ Allocated zp[1]:28 [ memoryRemap::$8 ]
|
|||||||
Allocated zp[1]:29 [ memoryRemap::$9 ]
|
Allocated zp[1]:29 [ memoryRemap::$9 ]
|
||||||
Allocated zp[4]:30 [ memoryRemap256M::$0 ]
|
Allocated zp[4]:30 [ memoryRemap256M::$0 ]
|
||||||
Allocated zp[1]:34 [ memoryRemap256M::$1 ]
|
Allocated zp[1]:34 [ memoryRemap256M::$1 ]
|
||||||
Allocated zp[2]:35 [ memoryRemap256M::$7 ]
|
Allocated zp[2]:35 [ memoryRemap256M::$4 ]
|
||||||
Allocated zp[1]:37 [ memoryRemap256M::$5 ]
|
Allocated zp[1]:37 [ memoryRemap256M::$5 ]
|
||||||
Allocated zp[1]:38 [ memoryRemap256M::$6 ]
|
Allocated zp[1]:38 [ memoryRemap256M::$6 ]
|
||||||
Allocated zp[1]:39 [ memoryRemap256M::$8 ]
|
Allocated zp[2]:39 [ memoryRemap256M::$7 ]
|
||||||
Allocated zp[1]:40 [ memoryRemap256M::$9 ]
|
Allocated zp[1]:41 [ memoryRemap256M::$8 ]
|
||||||
Allocated zp[1]:41 [ memoryRemap256M::$10 ]
|
Allocated zp[1]:42 [ memoryRemap256M::$9 ]
|
||||||
Allocated zp[1]:42 [ memoryRemap256M::$17 ]
|
Allocated zp[1]:43 [ memoryRemap256M::$10 ]
|
||||||
|
Allocated zp[1]:44 [ memoryRemap256M::$17 ]
|
||||||
|
|
||||||
INITIAL ASM
|
INITIAL ASM
|
||||||
Target platform is mega65 / MEGA45GS02
|
Target platform is mega65 / MEGA45GS02
|
||||||
@ -1895,13 +1898,14 @@ memoryRemap256M: {
|
|||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __0 = $1e
|
.label __0 = $1e
|
||||||
.label __1 = $22
|
.label __1 = $22
|
||||||
|
.label __4 = $23
|
||||||
.label __5 = $25
|
.label __5 = $25
|
||||||
.label __6 = $26
|
.label __6 = $26
|
||||||
.label __7 = $23
|
.label __7 = $27
|
||||||
.label __8 = $27
|
.label __8 = $29
|
||||||
.label __9 = $28
|
.label __9 = $2a
|
||||||
.label __10 = $29
|
.label __10 = $2b
|
||||||
.label __17 = $2a
|
.label __17 = $2c
|
||||||
.label lowerPageOffset = $a
|
.label lowerPageOffset = $a
|
||||||
.label remapBlocks = $e
|
.label remapBlocks = $e
|
||||||
// [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 -- vduz1=vduz2_ror_4
|
// [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 -- vduz1=vduz2_ror_4
|
||||||
@ -1938,13 +1942,13 @@ memoryRemap256M: {
|
|||||||
// [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta uMb
|
sta uMb
|
||||||
// [55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
// [55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
sta.z __7
|
sta.z __4
|
||||||
lda.z lowerPageOffset+1
|
lda.z lowerPageOffset+1
|
||||||
sta.z __7+1
|
sta.z __4+1
|
||||||
// [56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$7 -- vbuz1=_lo_vwuz2
|
// [56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$4 -- vbuz1=_lo_vwuz2
|
||||||
lda.z __7
|
lda.z __4
|
||||||
sta.z __5
|
sta.z __5
|
||||||
// [57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5 -- _deref_pbuc1=vbuz1
|
// [57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5 -- _deref_pbuc1=vbuz1
|
||||||
lda.z __5
|
lda.z __5
|
||||||
@ -1956,28 +1960,33 @@ memoryRemap256M: {
|
|||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
sta.z __6
|
sta.z __6
|
||||||
// [59] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7 -- vbuz1=_hi_vwuz2
|
// [59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
||||||
|
lda.z lowerPageOffset
|
||||||
|
sta.z __7
|
||||||
|
lda.z lowerPageOffset+1
|
||||||
|
sta.z __7+1
|
||||||
|
// [60] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7 -- vbuz1=_hi_vwuz2
|
||||||
lda.z __7+1
|
lda.z __7+1
|
||||||
sta.z __8
|
sta.z __8
|
||||||
// [60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f -- vbuz1=vbuz2_band_vbuc1
|
// [61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f -- vbuz1=vbuz2_band_vbuc1
|
||||||
lda #$f
|
lda #$f
|
||||||
and.z __8
|
and.z __8
|
||||||
sta.z __9
|
sta.z __9
|
||||||
// [61] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9 -- vbuz1=vbuz2_bor_vbuz3
|
// [62] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9 -- vbuz1=vbuz2_bor_vbuz3
|
||||||
lda.z __6
|
lda.z __6
|
||||||
ora.z __9
|
ora.z __9
|
||||||
sta.z __10
|
sta.z __10
|
||||||
// [62] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10 -- _deref_pbuc1=vbuz1
|
// [63] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10 -- _deref_pbuc1=vbuz1
|
||||||
lda.z __10
|
lda.z __10
|
||||||
sta xVal
|
sta xVal
|
||||||
// [63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta yVal
|
sta yVal
|
||||||
// [64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 -- vbuz1=vbuz2_band_vbuc1
|
// [65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 -- vbuz1=vbuz2_band_vbuc1
|
||||||
lda #$f0
|
lda #$f0
|
||||||
and.z remapBlocks
|
and.z remapBlocks
|
||||||
sta.z __17
|
sta.z __17
|
||||||
// [65] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17 -- _deref_pbuc1=vbuz1
|
// [66] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17 -- _deref_pbuc1=vbuz1
|
||||||
lda.z __17
|
lda.z __17
|
||||||
sta zVal
|
sta zVal
|
||||||
// asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
// asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
||||||
@ -1995,7 +2004,7 @@ memoryRemap256M: {
|
|||||||
jmp __breturn
|
jmp __breturn
|
||||||
// memoryRemap256M::@return
|
// memoryRemap256M::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [67] return
|
// [68] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -2028,12 +2037,13 @@ Statement asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg b
|
|||||||
Statement [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } ) always clobbers reg byte a
|
Statement [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
||||||
Statement [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
Statement [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 ] { } ) always clobbers reg byte a
|
Statement [55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$4 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$4 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$4 ] { } ) always clobbers reg byte a
|
||||||
Statement [58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 memoryRemap256M::$6 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 memoryRemap256M::$6 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 memoryRemap256M::$6 ] { } ) always clobbers reg byte a
|
Statement [58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 ] { } ) always clobbers reg byte a
|
||||||
Statement [60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } ) always clobbers reg byte a
|
Statement [59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$7 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$7 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$7 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:38 [ memoryRemap256M::$6 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:38 [ memoryRemap256M::$6 ]
|
||||||
Statement [63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 [ memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
Statement [61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } ) always clobbers reg byte a
|
||||||
Statement [64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 [ memoryRemap256M::$17 ] ( memoryRemap256M:13 [ memoryRemap256M::$17 ] { } memoryRemap256M:17 [ memoryRemap256M::$17 ] { } ) always clobbers reg byte a
|
Statement [64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 [ memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
||||||
|
Statement [65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 [ memoryRemap256M::$17 ] ( memoryRemap256M:13 [ memoryRemap256M::$17 ] { } memoryRemap256M:17 [ memoryRemap256M::$17 ] { } ) always clobbers reg byte a
|
||||||
Statement asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg byte a reg byte x reg byte y reg byte z
|
Statement asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg byte a reg byte x reg byte y reg byte z
|
||||||
Statement [2] *((const byte*) main::BLOCK_4000) ← (byte) '-' [ ] ( [ ] { } ) always clobbers reg byte a
|
Statement [2] *((const byte*) main::BLOCK_4000) ← (byte) '-' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
Statement [3] *((const byte*) main::BLOCK_4000+(byte) 1) ← (byte) '*' [ ] ( [ ] { } ) always clobbers reg byte a
|
Statement [3] *((const byte*) main::BLOCK_4000+(byte) 1) ← (byte) '*' [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
@ -2055,11 +2065,12 @@ Statement [45] (byte~) memoryRemap::$8 ← (byte~) memoryRemap::$7 & (byte) $f [
|
|||||||
Statement asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg byte a reg byte x reg byte y reg byte z
|
Statement asm { ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg byte a reg byte x reg byte y reg byte z
|
||||||
Statement [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } ) always clobbers reg byte a
|
Statement [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$0 ] { } ) always clobbers reg byte a
|
||||||
Statement [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
Statement [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 ] { } ) always clobbers reg byte a
|
Statement [55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$4 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$4 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$4 ] { } ) always clobbers reg byte a
|
||||||
Statement [58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 memoryRemap256M::$6 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 memoryRemap256M::$6 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$7 memoryRemap256M::$6 ] { } ) always clobbers reg byte a
|
Statement [58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 ] ( memoryRemap256M:13 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 ] { } memoryRemap256M:17 [ memoryRemap256M::lowerPageOffset#2 memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 ] { } ) always clobbers reg byte a
|
||||||
Statement [60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } ) always clobbers reg byte a
|
Statement [59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$7 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$7 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$7 ] { } ) always clobbers reg byte a
|
||||||
Statement [63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 [ memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
Statement [61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 memoryRemap256M::$6 memoryRemap256M::$9 ] { } ) always clobbers reg byte a
|
||||||
Statement [64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 [ memoryRemap256M::$17 ] ( memoryRemap256M:13 [ memoryRemap256M::$17 ] { } memoryRemap256M:17 [ memoryRemap256M::$17 ] { } ) always clobbers reg byte a
|
Statement [64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 [ memoryRemap256M::remapBlocks#2 ] ( memoryRemap256M:13 [ memoryRemap256M::remapBlocks#2 ] { } memoryRemap256M:17 [ memoryRemap256M::remapBlocks#2 ] { } ) always clobbers reg byte a
|
||||||
|
Statement [65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 [ memoryRemap256M::$17 ] ( memoryRemap256M:13 [ memoryRemap256M::$17 ] { } memoryRemap256M:17 [ memoryRemap256M::$17 ] { } ) always clobbers reg byte a
|
||||||
Statement asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg byte a reg byte x reg byte y reg byte z
|
Statement asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom } always clobbers reg byte a reg byte x reg byte y reg byte z
|
||||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:3 [ main::i1#2 main::i1#1 ] : zp[1]:3 , reg byte x , reg byte y , reg byte z ,
|
||||||
@ -2085,17 +2096,18 @@ Potential registers zp[1]:28 [ memoryRemap::$8 ] : zp[1]:28 , reg byte a , reg b
|
|||||||
Potential registers zp[1]:29 [ memoryRemap::$9 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:29 [ memoryRemap::$9 ] : zp[1]:29 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[4]:30 [ memoryRemap256M::$0 ] : zp[4]:30 ,
|
Potential registers zp[4]:30 [ memoryRemap256M::$0 ] : zp[4]:30 ,
|
||||||
Potential registers zp[1]:34 [ memoryRemap256M::$1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:34 [ memoryRemap256M::$1 ] : zp[1]:34 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[2]:35 [ memoryRemap256M::$7 ] : zp[2]:35 ,
|
Potential registers zp[2]:35 [ memoryRemap256M::$4 ] : zp[2]:35 ,
|
||||||
Potential registers zp[1]:37 [ memoryRemap256M::$5 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:37 [ memoryRemap256M::$5 ] : zp[1]:37 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[1]:38 [ memoryRemap256M::$6 ] : zp[1]:38 , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:38 [ memoryRemap256M::$6 ] : zp[1]:38 , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[1]:39 [ memoryRemap256M::$8 ] : zp[1]:39 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[2]:39 [ memoryRemap256M::$7 ] : zp[2]:39 ,
|
||||||
Potential registers zp[1]:40 [ memoryRemap256M::$9 ] : zp[1]:40 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:41 [ memoryRemap256M::$8 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[1]:41 [ memoryRemap256M::$10 ] : zp[1]:41 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:42 [ memoryRemap256M::$9 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
Potential registers zp[1]:42 [ memoryRemap256M::$17 ] : zp[1]:42 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
Potential registers zp[1]:43 [ memoryRemap256M::$10 ] : zp[1]:43 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
|
Potential registers zp[1]:44 [ memoryRemap256M::$17 ] : zp[1]:44 , reg byte a , reg byte x , reg byte y , reg byte z ,
|
||||||
|
|
||||||
REGISTER UPLIFT SCOPES
|
REGISTER UPLIFT SCOPES
|
||||||
Uplift Scope [memoryRemap] 202: zp[1]:20 [ memoryRemap::$0 ] 202: zp[1]:22 [ memoryRemap::$2 ] 202: zp[1]:23 [ memoryRemap::$3 ] 202: zp[1]:24 [ memoryRemap::$4 ] 202: zp[1]:25 [ memoryRemap::$5 ] 202: zp[1]:27 [ memoryRemap::$7 ] 202: zp[1]:28 [ memoryRemap::$8 ] 202: zp[1]:29 [ memoryRemap::$9 ] 67.33: zp[1]:21 [ memoryRemap::$1 ] 67.33: zp[1]:26 [ memoryRemap::$6 ] 64.25: zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 ] 41.36: zp[2]:8 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ] 28.63: zp[1]:7 [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
Uplift Scope [memoryRemap] 202: zp[1]:20 [ memoryRemap::$0 ] 202: zp[1]:22 [ memoryRemap::$2 ] 202: zp[1]:23 [ memoryRemap::$3 ] 202: zp[1]:24 [ memoryRemap::$4 ] 202: zp[1]:25 [ memoryRemap::$5 ] 202: zp[1]:27 [ memoryRemap::$7 ] 202: zp[1]:28 [ memoryRemap::$8 ] 202: zp[1]:29 [ memoryRemap::$9 ] 67.33: zp[1]:21 [ memoryRemap::$1 ] 67.33: zp[1]:26 [ memoryRemap::$6 ] 64.25: zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 ] 41.36: zp[2]:8 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ] 28.63: zp[1]:7 [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
||||||
Uplift Scope [memoryRemap256M] 22: zp[1]:34 [ memoryRemap256M::$1 ] 22: zp[1]:37 [ memoryRemap256M::$5 ] 22: zp[1]:39 [ memoryRemap256M::$8 ] 22: zp[1]:40 [ memoryRemap256M::$9 ] 22: zp[1]:41 [ memoryRemap256M::$10 ] 22: zp[1]:42 [ memoryRemap256M::$17 ] 11: zp[4]:30 [ memoryRemap256M::$0 ] 8.25: zp[2]:35 [ memoryRemap256M::$7 ] 7.33: zp[1]:38 [ memoryRemap256M::$6 ] 4.4: zp[4]:10 [ memoryRemap256M::lowerPageOffset#2 ] 1.57: zp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
Uplift Scope [memoryRemap256M] 22: zp[1]:34 [ memoryRemap256M::$1 ] 22: zp[2]:35 [ memoryRemap256M::$4 ] 22: zp[1]:37 [ memoryRemap256M::$5 ] 22: zp[2]:39 [ memoryRemap256M::$7 ] 22: zp[1]:41 [ memoryRemap256M::$8 ] 22: zp[1]:42 [ memoryRemap256M::$9 ] 22: zp[1]:43 [ memoryRemap256M::$10 ] 22: zp[1]:44 [ memoryRemap256M::$17 ] 11: zp[4]:30 [ memoryRemap256M::$0 ] 5.5: zp[1]:38 [ memoryRemap256M::$6 ] 3.67: zp[4]:10 [ memoryRemap256M::lowerPageOffset#2 ] 1.47: zp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
||||||
Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] 35.75: zp[1]:3 [ main::i1#2 main::i1#1 ] 22: zp[1]:15 [ main::$7 ]
|
Uplift Scope [main] 40.33: zp[1]:2 [ main::i#2 main::i#1 ] 35.75: zp[1]:3 [ main::i1#2 main::i1#1 ] 22: zp[1]:15 [ main::$7 ]
|
||||||
Uplift Scope [memoryRemapBlock] 22: zp[1]:18 [ memoryRemapBlock::block#0 ] 22: zp[1]:19 [ memoryRemapBlock::blockBits#0 ] 11: zp[1]:4 [ memoryRemapBlock::blockPage#2 ] 6.6: zp[2]:16 [ memoryRemapBlock::pageOffset#0 ]
|
Uplift Scope [memoryRemapBlock] 22: zp[1]:18 [ memoryRemapBlock::block#0 ] 22: zp[1]:19 [ memoryRemapBlock::blockBits#0 ] 11: zp[1]:4 [ memoryRemapBlock::blockPage#2 ] 6.6: zp[2]:16 [ memoryRemapBlock::pageOffset#0 ]
|
||||||
Uplift Scope [MOS6526_CIA]
|
Uplift Scope [MOS6526_CIA]
|
||||||
@ -2108,56 +2120,57 @@ Uplift Scope [DMA_LIST_F018A]
|
|||||||
Uplift Scope [DMA_LIST_F018B]
|
Uplift Scope [DMA_LIST_F018B]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [memoryRemap] best 1438 combination reg byte a [ memoryRemap::$0 ] reg byte a [ memoryRemap::$2 ] reg byte a [ memoryRemap::$3 ] zp[1]:24 [ memoryRemap::$4 ] zp[1]:25 [ memoryRemap::$5 ] zp[1]:27 [ memoryRemap::$7 ] zp[1]:28 [ memoryRemap::$8 ] zp[1]:29 [ memoryRemap::$9 ] zp[1]:21 [ memoryRemap::$1 ] zp[1]:26 [ memoryRemap::$6 ] zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 ] zp[2]:8 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ] zp[1]:7 [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
Uplifting [memoryRemap] best 1450 combination reg byte a [ memoryRemap::$0 ] reg byte a [ memoryRemap::$2 ] reg byte a [ memoryRemap::$3 ] zp[1]:24 [ memoryRemap::$4 ] zp[1]:25 [ memoryRemap::$5 ] zp[1]:27 [ memoryRemap::$7 ] zp[1]:28 [ memoryRemap::$8 ] zp[1]:29 [ memoryRemap::$9 ] zp[1]:21 [ memoryRemap::$1 ] zp[1]:26 [ memoryRemap::$6 ] zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 ] zp[2]:8 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ] zp[1]:7 [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
||||||
Limited combination testing to 100 combinations of 25000000 possible.
|
Limited combination testing to 100 combinations of 25000000 possible.
|
||||||
Uplifting [memoryRemap256M] best 1420 combination reg byte a [ memoryRemap256M::$1 ] reg byte a [ memoryRemap256M::$5 ] reg byte a [ memoryRemap256M::$8 ] zp[1]:40 [ memoryRemap256M::$9 ] zp[1]:41 [ memoryRemap256M::$10 ] zp[1]:42 [ memoryRemap256M::$17 ] zp[4]:30 [ memoryRemap256M::$0 ] zp[2]:35 [ memoryRemap256M::$7 ] zp[1]:38 [ memoryRemap256M::$6 ] zp[4]:10 [ memoryRemap256M::lowerPageOffset#2 ] zp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
Uplifting [memoryRemap256M] best 1432 combination reg byte a [ memoryRemap256M::$1 ] zp[2]:35 [ memoryRemap256M::$4 ] reg byte a [ memoryRemap256M::$5 ] zp[2]:39 [ memoryRemap256M::$7 ] reg byte a [ memoryRemap256M::$8 ] zp[1]:42 [ memoryRemap256M::$9 ] zp[1]:43 [ memoryRemap256M::$10 ] zp[1]:44 [ memoryRemap256M::$17 ] zp[4]:30 [ memoryRemap256M::$0 ] zp[1]:38 [ memoryRemap256M::$6 ] zp[4]:10 [ memoryRemap256M::lowerPageOffset#2 ] zp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
||||||
Limited combination testing to 100 combinations of 250000 possible.
|
Limited combination testing to 100 combinations of 250000 possible.
|
||||||
Uplifting [main] best 1110 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ] reg byte a [ main::$7 ]
|
Uplifting [main] best 1122 combination reg byte x [ main::i#2 main::i#1 ] reg byte x [ main::i1#2 main::i1#1 ] reg byte a [ main::$7 ]
|
||||||
Uplifting [memoryRemapBlock] best 1096 combination reg byte a [ memoryRemapBlock::block#0 ] reg byte a [ memoryRemapBlock::blockBits#0 ] reg byte x [ memoryRemapBlock::blockPage#2 ] zp[2]:16 [ memoryRemapBlock::pageOffset#0 ]
|
Uplifting [memoryRemapBlock] best 1108 combination reg byte a [ memoryRemapBlock::block#0 ] reg byte a [ memoryRemapBlock::blockBits#0 ] reg byte x [ memoryRemapBlock::blockPage#2 ] zp[2]:16 [ memoryRemapBlock::pageOffset#0 ]
|
||||||
Uplifting [MOS6526_CIA] best 1096 combination
|
Uplifting [MOS6526_CIA] best 1108 combination
|
||||||
Uplifting [MOS6569_VICII] best 1096 combination
|
Uplifting [MOS6569_VICII] best 1108 combination
|
||||||
Uplifting [MOS6581_SID] best 1096 combination
|
Uplifting [MOS6581_SID] best 1108 combination
|
||||||
Uplifting [MOS4569_VICIII] best 1096 combination
|
Uplifting [MOS4569_VICIII] best 1108 combination
|
||||||
Uplifting [MEGA65_VICIV] best 1096 combination
|
Uplifting [MEGA65_VICIV] best 1108 combination
|
||||||
Uplifting [F018_DMAGIC] best 1096 combination
|
Uplifting [F018_DMAGIC] best 1108 combination
|
||||||
Uplifting [DMA_LIST_F018A] best 1096 combination
|
Uplifting [DMA_LIST_F018A] best 1108 combination
|
||||||
Uplifting [DMA_LIST_F018B] best 1096 combination
|
Uplifting [DMA_LIST_F018B] best 1108 combination
|
||||||
Uplifting [] best 1096 combination
|
Uplifting [] best 1108 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:24 [ memoryRemap::$4 ]
|
Attempting to uplift remaining variables inzp[1]:24 [ memoryRemap::$4 ]
|
||||||
Uplifting [memoryRemap] best 1090 combination reg byte a [ memoryRemap::$4 ]
|
Uplifting [memoryRemap] best 1102 combination reg byte a [ memoryRemap::$4 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:25 [ memoryRemap::$5 ]
|
Attempting to uplift remaining variables inzp[1]:25 [ memoryRemap::$5 ]
|
||||||
Uplifting [memoryRemap] best 1084 combination reg byte a [ memoryRemap::$5 ]
|
Uplifting [memoryRemap] best 1096 combination reg byte a [ memoryRemap::$5 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:27 [ memoryRemap::$7 ]
|
Attempting to uplift remaining variables inzp[1]:27 [ memoryRemap::$7 ]
|
||||||
Uplifting [memoryRemap] best 1078 combination reg byte a [ memoryRemap::$7 ]
|
Uplifting [memoryRemap] best 1090 combination reg byte a [ memoryRemap::$7 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:28 [ memoryRemap::$8 ]
|
Attempting to uplift remaining variables inzp[1]:28 [ memoryRemap::$8 ]
|
||||||
Uplifting [memoryRemap] best 1072 combination reg byte a [ memoryRemap::$8 ]
|
Uplifting [memoryRemap] best 1084 combination reg byte a [ memoryRemap::$8 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:29 [ memoryRemap::$9 ]
|
Attempting to uplift remaining variables inzp[1]:29 [ memoryRemap::$9 ]
|
||||||
Uplifting [memoryRemap] best 1066 combination reg byte a [ memoryRemap::$9 ]
|
Uplifting [memoryRemap] best 1078 combination reg byte a [ memoryRemap::$9 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:21 [ memoryRemap::$1 ]
|
Attempting to uplift remaining variables inzp[1]:21 [ memoryRemap::$1 ]
|
||||||
Uplifting [memoryRemap] best 1066 combination zp[1]:21 [ memoryRemap::$1 ]
|
Uplifting [memoryRemap] best 1078 combination zp[1]:21 [ memoryRemap::$1 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:26 [ memoryRemap::$6 ]
|
Attempting to uplift remaining variables inzp[1]:26 [ memoryRemap::$6 ]
|
||||||
Uplifting [memoryRemap] best 1066 combination zp[1]:26 [ memoryRemap::$6 ]
|
Uplifting [memoryRemap] best 1078 combination zp[1]:26 [ memoryRemap::$6 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:7 [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
Attempting to uplift remaining variables inzp[1]:7 [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
||||||
Uplifting [memoryRemap] best 1057 combination reg byte z [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
Uplifting [memoryRemap] best 1069 combination reg byte z [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:40 [ memoryRemap256M::$9 ]
|
Attempting to uplift remaining variables inzp[1]:42 [ memoryRemap256M::$9 ]
|
||||||
Uplifting [memoryRemap256M] best 1051 combination reg byte a [ memoryRemap256M::$9 ]
|
Uplifting [memoryRemap256M] best 1063 combination reg byte a [ memoryRemap256M::$9 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:41 [ memoryRemap256M::$10 ]
|
Attempting to uplift remaining variables inzp[1]:43 [ memoryRemap256M::$10 ]
|
||||||
Uplifting [memoryRemap256M] best 1045 combination reg byte a [ memoryRemap256M::$10 ]
|
Uplifting [memoryRemap256M] best 1057 combination reg byte a [ memoryRemap256M::$10 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:42 [ memoryRemap256M::$17 ]
|
Attempting to uplift remaining variables inzp[1]:44 [ memoryRemap256M::$17 ]
|
||||||
Uplifting [memoryRemap256M] best 1039 combination reg byte a [ memoryRemap256M::$17 ]
|
Uplifting [memoryRemap256M] best 1051 combination reg byte a [ memoryRemap256M::$17 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:38 [ memoryRemap256M::$6 ]
|
Attempting to uplift remaining variables inzp[1]:38 [ memoryRemap256M::$6 ]
|
||||||
Uplifting [memoryRemap256M] best 1039 combination zp[1]:38 [ memoryRemap256M::$6 ]
|
Uplifting [memoryRemap256M] best 1051 combination zp[1]:38 [ memoryRemap256M::$6 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
Attempting to uplift remaining variables inzp[1]:14 [ memoryRemap256M::remapBlocks#2 ]
|
||||||
Uplifting [memoryRemap256M] best 1029 combination reg byte z [ memoryRemap256M::remapBlocks#2 ]
|
Uplifting [memoryRemap256M] best 1041 combination reg byte z [ memoryRemap256M::remapBlocks#2 ]
|
||||||
Coalescing zero page register [ zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 ] ] with [ zp[2]:16 [ memoryRemapBlock::pageOffset#0 ] ] - score: 1
|
Coalescing zero page register [ zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 ] ] with [ zp[2]:16 [ memoryRemapBlock::pageOffset#0 ] ] - score: 1
|
||||||
Coalescing zero page register [ zp[2]:35 [ memoryRemap256M::$7 ] ] with [ zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ] ]
|
Coalescing zero page register [ zp[2]:35 [ memoryRemap256M::$4 ] ] with [ zp[2]:5 [ memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ] ]
|
||||||
Coalescing zero page register [ zp[1]:38 [ memoryRemap256M::$6 ] ] with [ zp[1]:21 [ memoryRemap::$1 ] ]
|
Coalescing zero page register [ zp[1]:38 [ memoryRemap256M::$6 ] ] with [ zp[1]:21 [ memoryRemap::$1 ] ]
|
||||||
Allocated (was zp[2]:8) zp[2]:2 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ]
|
Coalescing zero page register [ zp[2]:39 [ memoryRemap256M::$7 ] ] with [ zp[2]:8 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ] ]
|
||||||
Allocated (was zp[4]:10) zp[4]:4 [ memoryRemap256M::lowerPageOffset#2 ]
|
Allocated (was zp[4]:10) zp[4]:2 [ memoryRemap256M::lowerPageOffset#2 ]
|
||||||
Allocated (was zp[1]:26) zp[1]:8 [ memoryRemap::$6 ]
|
Allocated (was zp[1]:26) zp[1]:6 [ memoryRemap::$6 ]
|
||||||
Allocated (was zp[4]:30) zp[4]:9 [ memoryRemap256M::$0 ]
|
Allocated (was zp[4]:30) zp[4]:7 [ memoryRemap256M::$0 ]
|
||||||
Allocated (was zp[2]:35) zp[2]:13 [ memoryRemap256M::$7 memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ]
|
Allocated (was zp[2]:35) zp[2]:11 [ memoryRemap256M::$4 memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ]
|
||||||
Allocated (was zp[1]:38) zp[1]:15 [ memoryRemap256M::$6 memoryRemap::$1 ]
|
Allocated (was zp[1]:38) zp[1]:13 [ memoryRemap256M::$6 memoryRemap::$1 ]
|
||||||
|
Allocated (was zp[2]:39) zp[2]:14 [ memoryRemap256M::$7 memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ]
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
// File Comments
|
// File Comments
|
||||||
@ -2354,7 +2367,7 @@ main: {
|
|||||||
// Ie. the memory that will be pointed to is $100 * the passed page address. Only the lower 12bits of the passed value is used.
|
// Ie. the memory that will be pointed to is $100 * the passed page address. Only the lower 12bits of the passed value is used.
|
||||||
// memoryRemapBlock(byte register(X) blockPage)
|
// memoryRemapBlock(byte register(X) blockPage)
|
||||||
memoryRemapBlock: {
|
memoryRemapBlock: {
|
||||||
.label pageOffset = $d
|
.label pageOffset = $b
|
||||||
// [25] (word) memoryRemapBlock::pageOffset#0 ← (word) $100 - (byte) memoryRemapBlock::blockPage#2 -- vwuz1=vwuc1_minus_vbuxx
|
// [25] (word) memoryRemapBlock::pageOffset#0 ← (word) $100 - (byte) memoryRemapBlock::blockPage#2 -- vwuz1=vwuc1_minus_vbuxx
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
lda #<$100
|
lda #<$100
|
||||||
@ -2427,16 +2440,16 @@ memoryRemapBlock: {
|
|||||||
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
||||||
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
||||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||||
// memoryRemap(byte register(Z) remapBlocks, word zp($d) lowerPageOffset, word zp(2) upperPageOffset)
|
// memoryRemap(byte register(Z) remapBlocks, word zp($b) lowerPageOffset, word zp($e) upperPageOffset)
|
||||||
memoryRemap: {
|
memoryRemap: {
|
||||||
.label aVal = $fc
|
.label aVal = $fc
|
||||||
.label xVal = $fd
|
.label xVal = $fd
|
||||||
.label yVal = $fe
|
.label yVal = $fe
|
||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __1 = $f
|
.label __1 = $d
|
||||||
.label __6 = 8
|
.label __6 = 6
|
||||||
.label lowerPageOffset = $d
|
.label lowerPageOffset = $b
|
||||||
.label upperPageOffset = 2
|
.label upperPageOffset = $e
|
||||||
// [34] (byte~) memoryRemap::$0 ← < (word) memoryRemap::lowerPageOffset#2 -- vbuaa=_lo_vwuz1
|
// [34] (byte~) memoryRemap::$0 ← < (word) memoryRemap::lowerPageOffset#2 -- vbuaa=_lo_vwuz1
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
// [35] *((const byte*) memoryRemap::aVal) ← (byte~) memoryRemap::$0 -- _deref_pbuc1=vbuaa
|
// [35] *((const byte*) memoryRemap::aVal) ← (byte~) memoryRemap::$0 -- _deref_pbuc1=vbuaa
|
||||||
@ -2511,7 +2524,7 @@ memoryRemap: {
|
|||||||
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
||||||
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
||||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||||
// memoryRemap256M(byte register(Z) remapBlocks, dword zp(4) lowerPageOffset)
|
// memoryRemap256M(byte register(Z) remapBlocks, dword zp(2) lowerPageOffset)
|
||||||
memoryRemap256M: {
|
memoryRemap256M: {
|
||||||
.label lMb = $fa
|
.label lMb = $fa
|
||||||
.label uMb = $fb
|
.label uMb = $fb
|
||||||
@ -2519,10 +2532,11 @@ memoryRemap256M: {
|
|||||||
.label xVal = $fd
|
.label xVal = $fd
|
||||||
.label yVal = $fe
|
.label yVal = $fe
|
||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __0 = 9
|
.label __0 = 7
|
||||||
.label __6 = $f
|
.label __4 = $b
|
||||||
.label __7 = $d
|
.label __6 = $d
|
||||||
.label lowerPageOffset = 4
|
.label __7 = $e
|
||||||
|
.label lowerPageOffset = 2
|
||||||
// [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 -- vduz1=vduz2_ror_4
|
// [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 -- vduz1=vduz2_ror_4
|
||||||
lda.z lowerPageOffset+3
|
lda.z lowerPageOffset+3
|
||||||
lsr
|
lsr
|
||||||
@ -2555,13 +2569,13 @@ memoryRemap256M: {
|
|||||||
// [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [54] *((const byte*) memoryRemap256M::uMb) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta uMb
|
sta uMb
|
||||||
// [55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
// [55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
sta.z __7
|
sta.z __4
|
||||||
lda.z lowerPageOffset+1
|
lda.z lowerPageOffset+1
|
||||||
sta.z __7+1
|
sta.z __4+1
|
||||||
// [56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$7 -- vbuaa=_lo_vwuz1
|
// [56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$4 -- vbuaa=_lo_vwuz1
|
||||||
lda.z __7
|
lda.z __4
|
||||||
// [57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5 -- _deref_pbuc1=vbuaa
|
// [57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5 -- _deref_pbuc1=vbuaa
|
||||||
sta aVal
|
sta aVal
|
||||||
// [58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4 -- vbuz1=vbuzz_rol_4
|
// [58] (byte~) memoryRemap256M::$6 ← (byte) memoryRemap256M::remapBlocks#2 << (byte) 4 -- vbuz1=vbuzz_rol_4
|
||||||
@ -2571,21 +2585,26 @@ memoryRemap256M: {
|
|||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
sta.z __6
|
sta.z __6
|
||||||
// [59] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7 -- vbuaa=_hi_vwuz1
|
// [59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
||||||
|
lda.z lowerPageOffset
|
||||||
|
sta.z __7
|
||||||
|
lda.z lowerPageOffset+1
|
||||||
|
sta.z __7+1
|
||||||
|
// [60] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7 -- vbuaa=_hi_vwuz1
|
||||||
lda.z __7+1
|
lda.z __7+1
|
||||||
// [60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f -- vbuaa=vbuaa_band_vbuc1
|
// [61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f -- vbuaa=vbuaa_band_vbuc1
|
||||||
and #$f
|
and #$f
|
||||||
// [61] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9 -- vbuaa=vbuz1_bor_vbuaa
|
// [62] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9 -- vbuaa=vbuz1_bor_vbuaa
|
||||||
ora.z __6
|
ora.z __6
|
||||||
// [62] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10 -- _deref_pbuc1=vbuaa
|
// [63] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10 -- _deref_pbuc1=vbuaa
|
||||||
sta xVal
|
sta xVal
|
||||||
// [63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta yVal
|
sta yVal
|
||||||
// [64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 -- vbuaa=vbuzz_band_vbuc1
|
// [65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 -- vbuaa=vbuzz_band_vbuc1
|
||||||
tza
|
tza
|
||||||
and #$f0
|
and #$f0
|
||||||
// [65] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17 -- _deref_pbuc1=vbuaa
|
// [66] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17 -- _deref_pbuc1=vbuaa
|
||||||
sta zVal
|
sta zVal
|
||||||
// asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
// asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
||||||
lda lMb
|
lda lMb
|
||||||
@ -2602,7 +2621,7 @@ memoryRemap256M: {
|
|||||||
jmp __breturn
|
jmp __breturn
|
||||||
// memoryRemap256M::@return
|
// memoryRemap256M::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [67] return
|
// [68] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -2621,6 +2640,7 @@ Removing instruction jmp __breturn
|
|||||||
Removing instruction jmp __breturn
|
Removing instruction jmp __breturn
|
||||||
Succesful ASM optimization Pass5NextJumpElimination
|
Succesful ASM optimization Pass5NextJumpElimination
|
||||||
Removing instruction lda #0
|
Removing instruction lda #0
|
||||||
|
Removing instruction lda.z __7+1
|
||||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
||||||
Removing instruction __b3_from___b1:
|
Removing instruction __b3_from___b1:
|
||||||
Removing instruction __b6_from___b4:
|
Removing instruction __b6_from___b4:
|
||||||
@ -2981,46 +3001,47 @@ FINAL SYMBOL TABLE
|
|||||||
(byte) main::i1#2 reg byte x 13.75
|
(byte) main::i1#2 reg byte x 13.75
|
||||||
(void()) memoryRemap((byte) memoryRemap::remapBlocks , (word) memoryRemap::lowerPageOffset , (word) memoryRemap::upperPageOffset)
|
(void()) memoryRemap((byte) memoryRemap::remapBlocks , (word) memoryRemap::lowerPageOffset , (word) memoryRemap::upperPageOffset)
|
||||||
(byte~) memoryRemap::$0 reg byte a 202.0
|
(byte~) memoryRemap::$0 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$1 zp[1]:15 67.33333333333333
|
(byte~) memoryRemap::$1 zp[1]:13 67.33333333333333
|
||||||
(byte~) memoryRemap::$2 reg byte a 202.0
|
(byte~) memoryRemap::$2 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$3 reg byte a 202.0
|
(byte~) memoryRemap::$3 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$4 reg byte a 202.0
|
(byte~) memoryRemap::$4 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$5 reg byte a 202.0
|
(byte~) memoryRemap::$5 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$6 zp[1]:8 67.33333333333333
|
(byte~) memoryRemap::$6 zp[1]:6 67.33333333333333
|
||||||
(byte~) memoryRemap::$7 reg byte a 202.0
|
(byte~) memoryRemap::$7 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$8 reg byte a 202.0
|
(byte~) memoryRemap::$8 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$9 reg byte a 202.0
|
(byte~) memoryRemap::$9 reg byte a 202.0
|
||||||
(label) memoryRemap::@return
|
(label) memoryRemap::@return
|
||||||
(const byte*) memoryRemap::aVal = (byte*) 252
|
(const byte*) memoryRemap::aVal = (byte*) 252
|
||||||
(word) memoryRemap::lowerPageOffset
|
(word) memoryRemap::lowerPageOffset
|
||||||
(word) memoryRemap::lowerPageOffset#0 lowerPageOffset zp[2]:13 11.0
|
(word) memoryRemap::lowerPageOffset#0 lowerPageOffset zp[2]:11 11.0
|
||||||
(word) memoryRemap::lowerPageOffset#2 lowerPageOffset zp[2]:13 53.25
|
(word) memoryRemap::lowerPageOffset#2 lowerPageOffset zp[2]:11 53.25
|
||||||
(byte) memoryRemap::remapBlocks
|
(byte) memoryRemap::remapBlocks
|
||||||
(byte) memoryRemap::remapBlocks#0 reg byte z 7.333333333333333
|
(byte) memoryRemap::remapBlocks#0 reg byte z 7.333333333333333
|
||||||
(byte) memoryRemap::remapBlocks#2 reg byte z 21.299999999999997
|
(byte) memoryRemap::remapBlocks#2 reg byte z 21.299999999999997
|
||||||
(word) memoryRemap::upperPageOffset
|
(word) memoryRemap::upperPageOffset
|
||||||
(word) memoryRemap::upperPageOffset#0 upperPageOffset zp[2]:2 22.0
|
(word) memoryRemap::upperPageOffset#0 upperPageOffset zp[2]:14 22.0
|
||||||
(word) memoryRemap::upperPageOffset#2 upperPageOffset zp[2]:2 19.363636363636363
|
(word) memoryRemap::upperPageOffset#2 upperPageOffset zp[2]:14 19.363636363636363
|
||||||
(const byte*) memoryRemap::xVal = (byte*) 253
|
(const byte*) memoryRemap::xVal = (byte*) 253
|
||||||
(const byte*) memoryRemap::yVal = (byte*) 254
|
(const byte*) memoryRemap::yVal = (byte*) 254
|
||||||
(const byte*) memoryRemap::zVal = (byte*) 255
|
(const byte*) memoryRemap::zVal = (byte*) 255
|
||||||
(void()) memoryRemap256M((byte) memoryRemap256M::remapBlocks , (dword) memoryRemap256M::lowerPageOffset , (dword) memoryRemap256M::upperPageOffset)
|
(void()) memoryRemap256M((byte) memoryRemap256M::remapBlocks , (dword) memoryRemap256M::lowerPageOffset , (dword) memoryRemap256M::upperPageOffset)
|
||||||
(dword~) memoryRemap256M::$0 zp[4]:9 11.0
|
(dword~) memoryRemap256M::$0 zp[4]:7 11.0
|
||||||
(byte~) memoryRemap256M::$1 reg byte a 22.0
|
(byte~) memoryRemap256M::$1 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$10 reg byte a 22.0
|
(byte~) memoryRemap256M::$10 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$17 reg byte a 22.0
|
(byte~) memoryRemap256M::$17 reg byte a 22.0
|
||||||
|
(word~) memoryRemap256M::$4 zp[2]:11 22.0
|
||||||
(byte~) memoryRemap256M::$5 reg byte a 22.0
|
(byte~) memoryRemap256M::$5 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$6 zp[1]:15 7.333333333333333
|
(byte~) memoryRemap256M::$6 zp[1]:13 5.5
|
||||||
(word~) memoryRemap256M::$7 zp[2]:13 8.25
|
(word~) memoryRemap256M::$7 zp[2]:14 22.0
|
||||||
(byte~) memoryRemap256M::$8 reg byte a 22.0
|
(byte~) memoryRemap256M::$8 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$9 reg byte a 22.0
|
(byte~) memoryRemap256M::$9 reg byte a 22.0
|
||||||
(label) memoryRemap256M::@return
|
(label) memoryRemap256M::@return
|
||||||
(const byte*) memoryRemap256M::aVal = (byte*) 252
|
(const byte*) memoryRemap256M::aVal = (byte*) 252
|
||||||
(const byte*) memoryRemap256M::lMb = (byte*) 250
|
(const byte*) memoryRemap256M::lMb = (byte*) 250
|
||||||
(dword) memoryRemap256M::lowerPageOffset
|
(dword) memoryRemap256M::lowerPageOffset
|
||||||
(dword) memoryRemap256M::lowerPageOffset#2 lowerPageOffset zp[4]:4 4.4
|
(dword) memoryRemap256M::lowerPageOffset#2 lowerPageOffset zp[4]:2 3.666666666666667
|
||||||
(byte) memoryRemap256M::remapBlocks
|
(byte) memoryRemap256M::remapBlocks
|
||||||
(byte) memoryRemap256M::remapBlocks#2 reg byte z 1.5714285714285714
|
(byte) memoryRemap256M::remapBlocks#2 reg byte z 1.4666666666666666
|
||||||
(const byte*) memoryRemap256M::uMb = (byte*) 251
|
(const byte*) memoryRemap256M::uMb = (byte*) 251
|
||||||
(dword) memoryRemap256M::upperPageOffset
|
(dword) memoryRemap256M::upperPageOffset
|
||||||
(const byte*) memoryRemap256M::xVal = (byte*) 253
|
(const byte*) memoryRemap256M::xVal = (byte*) 253
|
||||||
@ -3036,14 +3057,13 @@ FINAL SYMBOL TABLE
|
|||||||
(byte) memoryRemapBlock::blockPage#2 reg byte x 11.0
|
(byte) memoryRemapBlock::blockPage#2 reg byte x 11.0
|
||||||
(word) memoryRemapBlock::memoryPage
|
(word) memoryRemapBlock::memoryPage
|
||||||
(word) memoryRemapBlock::pageOffset
|
(word) memoryRemapBlock::pageOffset
|
||||||
(word) memoryRemapBlock::pageOffset#0 pageOffset zp[2]:13 6.6000000000000005
|
(word) memoryRemapBlock::pageOffset#0 pageOffset zp[2]:11 6.6000000000000005
|
||||||
|
|
||||||
reg byte x [ main::i#2 main::i#1 ]
|
reg byte x [ main::i#2 main::i#1 ]
|
||||||
reg byte x [ main::i1#2 main::i1#1 ]
|
reg byte x [ main::i1#2 main::i1#1 ]
|
||||||
reg byte x [ memoryRemapBlock::blockPage#2 ]
|
reg byte x [ memoryRemapBlock::blockPage#2 ]
|
||||||
reg byte z [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
reg byte z [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
||||||
zp[2]:2 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ]
|
zp[4]:2 [ memoryRemap256M::lowerPageOffset#2 ]
|
||||||
zp[4]:4 [ memoryRemap256M::lowerPageOffset#2 ]
|
|
||||||
reg byte z [ memoryRemap256M::remapBlocks#2 ]
|
reg byte z [ memoryRemap256M::remapBlocks#2 ]
|
||||||
reg byte a [ main::$7 ]
|
reg byte a [ main::$7 ]
|
||||||
reg byte a [ memoryRemapBlock::block#0 ]
|
reg byte a [ memoryRemapBlock::block#0 ]
|
||||||
@ -3053,15 +3073,16 @@ reg byte a [ memoryRemap::$2 ]
|
|||||||
reg byte a [ memoryRemap::$3 ]
|
reg byte a [ memoryRemap::$3 ]
|
||||||
reg byte a [ memoryRemap::$4 ]
|
reg byte a [ memoryRemap::$4 ]
|
||||||
reg byte a [ memoryRemap::$5 ]
|
reg byte a [ memoryRemap::$5 ]
|
||||||
zp[1]:8 [ memoryRemap::$6 ]
|
zp[1]:6 [ memoryRemap::$6 ]
|
||||||
reg byte a [ memoryRemap::$7 ]
|
reg byte a [ memoryRemap::$7 ]
|
||||||
reg byte a [ memoryRemap::$8 ]
|
reg byte a [ memoryRemap::$8 ]
|
||||||
reg byte a [ memoryRemap::$9 ]
|
reg byte a [ memoryRemap::$9 ]
|
||||||
zp[4]:9 [ memoryRemap256M::$0 ]
|
zp[4]:7 [ memoryRemap256M::$0 ]
|
||||||
reg byte a [ memoryRemap256M::$1 ]
|
reg byte a [ memoryRemap256M::$1 ]
|
||||||
zp[2]:13 [ memoryRemap256M::$7 memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ]
|
zp[2]:11 [ memoryRemap256M::$4 memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ]
|
||||||
reg byte a [ memoryRemap256M::$5 ]
|
reg byte a [ memoryRemap256M::$5 ]
|
||||||
zp[1]:15 [ memoryRemap256M::$6 memoryRemap::$1 ]
|
zp[1]:13 [ memoryRemap256M::$6 memoryRemap::$1 ]
|
||||||
|
zp[2]:14 [ memoryRemap256M::$7 memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ]
|
||||||
reg byte a [ memoryRemap256M::$8 ]
|
reg byte a [ memoryRemap256M::$8 ]
|
||||||
reg byte a [ memoryRemap256M::$9 ]
|
reg byte a [ memoryRemap256M::$9 ]
|
||||||
reg byte a [ memoryRemap256M::$10 ]
|
reg byte a [ memoryRemap256M::$10 ]
|
||||||
@ -3069,7 +3090,7 @@ reg byte a [ memoryRemap256M::$17 ]
|
|||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 928
|
Score: 937
|
||||||
|
|
||||||
// File Comments
|
// File Comments
|
||||||
// Test the MAP instruction for remapping memory
|
// Test the MAP instruction for remapping memory
|
||||||
@ -3258,7 +3279,7 @@ main: {
|
|||||||
// Ie. the memory that will be pointed to is $100 * the passed page address. Only the lower 12bits of the passed value is used.
|
// Ie. the memory that will be pointed to is $100 * the passed page address. Only the lower 12bits of the passed value is used.
|
||||||
// memoryRemapBlock(byte register(X) blockPage)
|
// memoryRemapBlock(byte register(X) blockPage)
|
||||||
memoryRemapBlock: {
|
memoryRemapBlock: {
|
||||||
.label pageOffset = $d
|
.label pageOffset = $b
|
||||||
// pageOffset = memoryPage-blockPage
|
// pageOffset = memoryPage-blockPage
|
||||||
// [25] (word) memoryRemapBlock::pageOffset#0 ← (word) $100 - (byte) memoryRemapBlock::blockPage#2 -- vwuz1=vwuc1_minus_vbuxx
|
// [25] (word) memoryRemapBlock::pageOffset#0 ← (word) $100 - (byte) memoryRemapBlock::blockPage#2 -- vwuz1=vwuc1_minus_vbuxx
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
@ -3333,16 +3354,16 @@ memoryRemapBlock: {
|
|||||||
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
||||||
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
||||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||||
// memoryRemap(byte register(Z) remapBlocks, word zp($d) lowerPageOffset, word zp(2) upperPageOffset)
|
// memoryRemap(byte register(Z) remapBlocks, word zp($b) lowerPageOffset, word zp($e) upperPageOffset)
|
||||||
memoryRemap: {
|
memoryRemap: {
|
||||||
.label aVal = $fc
|
.label aVal = $fc
|
||||||
.label xVal = $fd
|
.label xVal = $fd
|
||||||
.label yVal = $fe
|
.label yVal = $fe
|
||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __1 = $f
|
.label __1 = $d
|
||||||
.label __6 = 8
|
.label __6 = 6
|
||||||
.label lowerPageOffset = $d
|
.label lowerPageOffset = $b
|
||||||
.label upperPageOffset = 2
|
.label upperPageOffset = $e
|
||||||
// <lowerPageOffset
|
// <lowerPageOffset
|
||||||
// [34] (byte~) memoryRemap::$0 ← < (word) memoryRemap::lowerPageOffset#2 -- vbuaa=_lo_vwuz1
|
// [34] (byte~) memoryRemap::$0 ← < (word) memoryRemap::lowerPageOffset#2 -- vbuaa=_lo_vwuz1
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
@ -3431,7 +3452,7 @@ memoryRemap: {
|
|||||||
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
// - If block 5 ($a000-$bfff) is remapped it will point to upperPageOffset*$100 + $a000.
|
||||||
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
// - If block 6 ($c000-$dfff) is remapped it will point to upperPageOffset*$100 + $c000.
|
||||||
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
// - If block 7 ($e000-$ffff) is remapped it will point to upperPageOffset*$100 + $e000.
|
||||||
// memoryRemap256M(byte register(Z) remapBlocks, dword zp(4) lowerPageOffset)
|
// memoryRemap256M(byte register(Z) remapBlocks, dword zp(2) lowerPageOffset)
|
||||||
memoryRemap256M: {
|
memoryRemap256M: {
|
||||||
.label lMb = $fa
|
.label lMb = $fa
|
||||||
.label uMb = $fb
|
.label uMb = $fb
|
||||||
@ -3439,10 +3460,11 @@ memoryRemap256M: {
|
|||||||
.label xVal = $fd
|
.label xVal = $fd
|
||||||
.label yVal = $fe
|
.label yVal = $fe
|
||||||
.label zVal = $ff
|
.label zVal = $ff
|
||||||
.label __0 = 9
|
.label __0 = 7
|
||||||
.label __6 = $f
|
.label __4 = $b
|
||||||
.label __7 = $d
|
.label __6 = $d
|
||||||
.label lowerPageOffset = 4
|
.label __7 = $e
|
||||||
|
.label lowerPageOffset = 2
|
||||||
// lowerPageOffset>>4
|
// lowerPageOffset>>4
|
||||||
// [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 -- vduz1=vduz2_ror_4
|
// [51] (dword~) memoryRemap256M::$0 ← (dword) memoryRemap256M::lowerPageOffset#2 >> (byte) 4 -- vduz1=vduz2_ror_4
|
||||||
lda.z lowerPageOffset+3
|
lda.z lowerPageOffset+3
|
||||||
@ -3480,14 +3502,14 @@ memoryRemap256M: {
|
|||||||
lda #0
|
lda #0
|
||||||
sta uMb
|
sta uMb
|
||||||
// <lowerPageOffset
|
// <lowerPageOffset
|
||||||
// [55] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
// [55] (word~) memoryRemap256M::$4 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
||||||
lda.z lowerPageOffset
|
lda.z lowerPageOffset
|
||||||
sta.z __7
|
sta.z __4
|
||||||
lda.z lowerPageOffset+1
|
lda.z lowerPageOffset+1
|
||||||
sta.z __7+1
|
sta.z __4+1
|
||||||
// < <lowerPageOffset
|
// < <lowerPageOffset
|
||||||
// [56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$7 -- vbuaa=_lo_vwuz1
|
// [56] (byte~) memoryRemap256M::$5 ← < (word~) memoryRemap256M::$4 -- vbuaa=_lo_vwuz1
|
||||||
lda.z __7
|
lda.z __4
|
||||||
// *aVal = < <lowerPageOffset
|
// *aVal = < <lowerPageOffset
|
||||||
// [57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5 -- _deref_pbuc1=vbuaa
|
// [57] *((const byte*) memoryRemap256M::aVal) ← (byte~) memoryRemap256M::$5 -- _deref_pbuc1=vbuaa
|
||||||
sta aVal
|
sta aVal
|
||||||
@ -3499,28 +3521,33 @@ memoryRemap256M: {
|
|||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
sta.z __6
|
sta.z __6
|
||||||
|
// <lowerPageOffset
|
||||||
|
// [59] (word~) memoryRemap256M::$7 ← < (dword) memoryRemap256M::lowerPageOffset#2 -- vwuz1=_lo_vduz2
|
||||||
|
lda.z lowerPageOffset
|
||||||
|
sta.z __7
|
||||||
|
lda.z lowerPageOffset+1
|
||||||
|
sta.z __7+1
|
||||||
// > <lowerPageOffset
|
// > <lowerPageOffset
|
||||||
// [59] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7 -- vbuaa=_hi_vwuz1
|
// [60] (byte~) memoryRemap256M::$8 ← > (word~) memoryRemap256M::$7 -- vbuaa=_hi_vwuz1
|
||||||
lda.z __7+1
|
|
||||||
// > <lowerPageOffset & 0xf
|
// > <lowerPageOffset & 0xf
|
||||||
// [60] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f -- vbuaa=vbuaa_band_vbuc1
|
// [61] (byte~) memoryRemap256M::$9 ← (byte~) memoryRemap256M::$8 & (byte) $f -- vbuaa=vbuaa_band_vbuc1
|
||||||
and #$f
|
and #$f
|
||||||
// (remapBlocks << 4) | (> <lowerPageOffset & 0xf)
|
// (remapBlocks << 4) | (> <lowerPageOffset & 0xf)
|
||||||
// [61] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9 -- vbuaa=vbuz1_bor_vbuaa
|
// [62] (byte~) memoryRemap256M::$10 ← (byte~) memoryRemap256M::$6 | (byte~) memoryRemap256M::$9 -- vbuaa=vbuz1_bor_vbuaa
|
||||||
ora.z __6
|
ora.z __6
|
||||||
// *xVal = (remapBlocks << 4) | (> <lowerPageOffset & 0xf)
|
// *xVal = (remapBlocks << 4) | (> <lowerPageOffset & 0xf)
|
||||||
// [62] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10 -- _deref_pbuc1=vbuaa
|
// [63] *((const byte*) memoryRemap256M::xVal) ← (byte~) memoryRemap256M::$10 -- _deref_pbuc1=vbuaa
|
||||||
sta xVal
|
sta xVal
|
||||||
// *yVal = < <upperPageOffset
|
// *yVal = < <upperPageOffset
|
||||||
// [63] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
// [64] *((const byte*) memoryRemap256M::yVal) ← (byte) 0 -- _deref_pbuc1=vbuc2
|
||||||
lda #0
|
lda #0
|
||||||
sta yVal
|
sta yVal
|
||||||
// (remapBlocks & 0xf0) | (> <upperPageOffset & 0xf)
|
// (remapBlocks & 0xf0) | (> <upperPageOffset & 0xf)
|
||||||
// [64] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 -- vbuaa=vbuzz_band_vbuc1
|
// [65] (byte~) memoryRemap256M::$17 ← (byte) memoryRemap256M::remapBlocks#2 & (byte) $f0 -- vbuaa=vbuzz_band_vbuc1
|
||||||
tza
|
tza
|
||||||
and #$f0
|
and #$f0
|
||||||
// *zVal = (remapBlocks & 0xf0) | (> <upperPageOffset & 0xf)
|
// *zVal = (remapBlocks & 0xf0) | (> <upperPageOffset & 0xf)
|
||||||
// [65] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17 -- _deref_pbuc1=vbuaa
|
// [66] *((const byte*) memoryRemap256M::zVal) ← (byte~) memoryRemap256M::$17 -- _deref_pbuc1=vbuaa
|
||||||
sta zVal
|
sta zVal
|
||||||
// asm
|
// asm
|
||||||
// asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
// asm { ldalMb ldx#$0f ldyuMb ldz#$00 map ldaaVal ldxxVal ldyyVal ldzzVal map eom }
|
||||||
@ -3537,7 +3564,7 @@ memoryRemap256M: {
|
|||||||
eom
|
eom
|
||||||
// memoryRemap256M::@return
|
// memoryRemap256M::@return
|
||||||
// }
|
// }
|
||||||
// [67] return
|
// [68] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
|
@ -332,46 +332,47 @@
|
|||||||
(byte) main::i1#2 reg byte x 13.75
|
(byte) main::i1#2 reg byte x 13.75
|
||||||
(void()) memoryRemap((byte) memoryRemap::remapBlocks , (word) memoryRemap::lowerPageOffset , (word) memoryRemap::upperPageOffset)
|
(void()) memoryRemap((byte) memoryRemap::remapBlocks , (word) memoryRemap::lowerPageOffset , (word) memoryRemap::upperPageOffset)
|
||||||
(byte~) memoryRemap::$0 reg byte a 202.0
|
(byte~) memoryRemap::$0 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$1 zp[1]:15 67.33333333333333
|
(byte~) memoryRemap::$1 zp[1]:13 67.33333333333333
|
||||||
(byte~) memoryRemap::$2 reg byte a 202.0
|
(byte~) memoryRemap::$2 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$3 reg byte a 202.0
|
(byte~) memoryRemap::$3 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$4 reg byte a 202.0
|
(byte~) memoryRemap::$4 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$5 reg byte a 202.0
|
(byte~) memoryRemap::$5 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$6 zp[1]:8 67.33333333333333
|
(byte~) memoryRemap::$6 zp[1]:6 67.33333333333333
|
||||||
(byte~) memoryRemap::$7 reg byte a 202.0
|
(byte~) memoryRemap::$7 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$8 reg byte a 202.0
|
(byte~) memoryRemap::$8 reg byte a 202.0
|
||||||
(byte~) memoryRemap::$9 reg byte a 202.0
|
(byte~) memoryRemap::$9 reg byte a 202.0
|
||||||
(label) memoryRemap::@return
|
(label) memoryRemap::@return
|
||||||
(const byte*) memoryRemap::aVal = (byte*) 252
|
(const byte*) memoryRemap::aVal = (byte*) 252
|
||||||
(word) memoryRemap::lowerPageOffset
|
(word) memoryRemap::lowerPageOffset
|
||||||
(word) memoryRemap::lowerPageOffset#0 lowerPageOffset zp[2]:13 11.0
|
(word) memoryRemap::lowerPageOffset#0 lowerPageOffset zp[2]:11 11.0
|
||||||
(word) memoryRemap::lowerPageOffset#2 lowerPageOffset zp[2]:13 53.25
|
(word) memoryRemap::lowerPageOffset#2 lowerPageOffset zp[2]:11 53.25
|
||||||
(byte) memoryRemap::remapBlocks
|
(byte) memoryRemap::remapBlocks
|
||||||
(byte) memoryRemap::remapBlocks#0 reg byte z 7.333333333333333
|
(byte) memoryRemap::remapBlocks#0 reg byte z 7.333333333333333
|
||||||
(byte) memoryRemap::remapBlocks#2 reg byte z 21.299999999999997
|
(byte) memoryRemap::remapBlocks#2 reg byte z 21.299999999999997
|
||||||
(word) memoryRemap::upperPageOffset
|
(word) memoryRemap::upperPageOffset
|
||||||
(word) memoryRemap::upperPageOffset#0 upperPageOffset zp[2]:2 22.0
|
(word) memoryRemap::upperPageOffset#0 upperPageOffset zp[2]:14 22.0
|
||||||
(word) memoryRemap::upperPageOffset#2 upperPageOffset zp[2]:2 19.363636363636363
|
(word) memoryRemap::upperPageOffset#2 upperPageOffset zp[2]:14 19.363636363636363
|
||||||
(const byte*) memoryRemap::xVal = (byte*) 253
|
(const byte*) memoryRemap::xVal = (byte*) 253
|
||||||
(const byte*) memoryRemap::yVal = (byte*) 254
|
(const byte*) memoryRemap::yVal = (byte*) 254
|
||||||
(const byte*) memoryRemap::zVal = (byte*) 255
|
(const byte*) memoryRemap::zVal = (byte*) 255
|
||||||
(void()) memoryRemap256M((byte) memoryRemap256M::remapBlocks , (dword) memoryRemap256M::lowerPageOffset , (dword) memoryRemap256M::upperPageOffset)
|
(void()) memoryRemap256M((byte) memoryRemap256M::remapBlocks , (dword) memoryRemap256M::lowerPageOffset , (dword) memoryRemap256M::upperPageOffset)
|
||||||
(dword~) memoryRemap256M::$0 zp[4]:9 11.0
|
(dword~) memoryRemap256M::$0 zp[4]:7 11.0
|
||||||
(byte~) memoryRemap256M::$1 reg byte a 22.0
|
(byte~) memoryRemap256M::$1 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$10 reg byte a 22.0
|
(byte~) memoryRemap256M::$10 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$17 reg byte a 22.0
|
(byte~) memoryRemap256M::$17 reg byte a 22.0
|
||||||
|
(word~) memoryRemap256M::$4 zp[2]:11 22.0
|
||||||
(byte~) memoryRemap256M::$5 reg byte a 22.0
|
(byte~) memoryRemap256M::$5 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$6 zp[1]:15 7.333333333333333
|
(byte~) memoryRemap256M::$6 zp[1]:13 5.5
|
||||||
(word~) memoryRemap256M::$7 zp[2]:13 8.25
|
(word~) memoryRemap256M::$7 zp[2]:14 22.0
|
||||||
(byte~) memoryRemap256M::$8 reg byte a 22.0
|
(byte~) memoryRemap256M::$8 reg byte a 22.0
|
||||||
(byte~) memoryRemap256M::$9 reg byte a 22.0
|
(byte~) memoryRemap256M::$9 reg byte a 22.0
|
||||||
(label) memoryRemap256M::@return
|
(label) memoryRemap256M::@return
|
||||||
(const byte*) memoryRemap256M::aVal = (byte*) 252
|
(const byte*) memoryRemap256M::aVal = (byte*) 252
|
||||||
(const byte*) memoryRemap256M::lMb = (byte*) 250
|
(const byte*) memoryRemap256M::lMb = (byte*) 250
|
||||||
(dword) memoryRemap256M::lowerPageOffset
|
(dword) memoryRemap256M::lowerPageOffset
|
||||||
(dword) memoryRemap256M::lowerPageOffset#2 lowerPageOffset zp[4]:4 4.4
|
(dword) memoryRemap256M::lowerPageOffset#2 lowerPageOffset zp[4]:2 3.666666666666667
|
||||||
(byte) memoryRemap256M::remapBlocks
|
(byte) memoryRemap256M::remapBlocks
|
||||||
(byte) memoryRemap256M::remapBlocks#2 reg byte z 1.5714285714285714
|
(byte) memoryRemap256M::remapBlocks#2 reg byte z 1.4666666666666666
|
||||||
(const byte*) memoryRemap256M::uMb = (byte*) 251
|
(const byte*) memoryRemap256M::uMb = (byte*) 251
|
||||||
(dword) memoryRemap256M::upperPageOffset
|
(dword) memoryRemap256M::upperPageOffset
|
||||||
(const byte*) memoryRemap256M::xVal = (byte*) 253
|
(const byte*) memoryRemap256M::xVal = (byte*) 253
|
||||||
@ -387,14 +388,13 @@
|
|||||||
(byte) memoryRemapBlock::blockPage#2 reg byte x 11.0
|
(byte) memoryRemapBlock::blockPage#2 reg byte x 11.0
|
||||||
(word) memoryRemapBlock::memoryPage
|
(word) memoryRemapBlock::memoryPage
|
||||||
(word) memoryRemapBlock::pageOffset
|
(word) memoryRemapBlock::pageOffset
|
||||||
(word) memoryRemapBlock::pageOffset#0 pageOffset zp[2]:13 6.6000000000000005
|
(word) memoryRemapBlock::pageOffset#0 pageOffset zp[2]:11 6.6000000000000005
|
||||||
|
|
||||||
reg byte x [ main::i#2 main::i#1 ]
|
reg byte x [ main::i#2 main::i#1 ]
|
||||||
reg byte x [ main::i1#2 main::i1#1 ]
|
reg byte x [ main::i1#2 main::i1#1 ]
|
||||||
reg byte x [ memoryRemapBlock::blockPage#2 ]
|
reg byte x [ memoryRemapBlock::blockPage#2 ]
|
||||||
reg byte z [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
reg byte z [ memoryRemap::remapBlocks#2 memoryRemap::remapBlocks#0 ]
|
||||||
zp[2]:2 [ memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ]
|
zp[4]:2 [ memoryRemap256M::lowerPageOffset#2 ]
|
||||||
zp[4]:4 [ memoryRemap256M::lowerPageOffset#2 ]
|
|
||||||
reg byte z [ memoryRemap256M::remapBlocks#2 ]
|
reg byte z [ memoryRemap256M::remapBlocks#2 ]
|
||||||
reg byte a [ main::$7 ]
|
reg byte a [ main::$7 ]
|
||||||
reg byte a [ memoryRemapBlock::block#0 ]
|
reg byte a [ memoryRemapBlock::block#0 ]
|
||||||
@ -404,15 +404,16 @@ reg byte a [ memoryRemap::$2 ]
|
|||||||
reg byte a [ memoryRemap::$3 ]
|
reg byte a [ memoryRemap::$3 ]
|
||||||
reg byte a [ memoryRemap::$4 ]
|
reg byte a [ memoryRemap::$4 ]
|
||||||
reg byte a [ memoryRemap::$5 ]
|
reg byte a [ memoryRemap::$5 ]
|
||||||
zp[1]:8 [ memoryRemap::$6 ]
|
zp[1]:6 [ memoryRemap::$6 ]
|
||||||
reg byte a [ memoryRemap::$7 ]
|
reg byte a [ memoryRemap::$7 ]
|
||||||
reg byte a [ memoryRemap::$8 ]
|
reg byte a [ memoryRemap::$8 ]
|
||||||
reg byte a [ memoryRemap::$9 ]
|
reg byte a [ memoryRemap::$9 ]
|
||||||
zp[4]:9 [ memoryRemap256M::$0 ]
|
zp[4]:7 [ memoryRemap256M::$0 ]
|
||||||
reg byte a [ memoryRemap256M::$1 ]
|
reg byte a [ memoryRemap256M::$1 ]
|
||||||
zp[2]:13 [ memoryRemap256M::$7 memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ]
|
zp[2]:11 [ memoryRemap256M::$4 memoryRemap::lowerPageOffset#2 memoryRemap::lowerPageOffset#0 memoryRemapBlock::pageOffset#0 ]
|
||||||
reg byte a [ memoryRemap256M::$5 ]
|
reg byte a [ memoryRemap256M::$5 ]
|
||||||
zp[1]:15 [ memoryRemap256M::$6 memoryRemap::$1 ]
|
zp[1]:13 [ memoryRemap256M::$6 memoryRemap::$1 ]
|
||||||
|
zp[2]:14 [ memoryRemap256M::$7 memoryRemap::upperPageOffset#2 memoryRemap::upperPageOffset#0 ]
|
||||||
reg byte a [ memoryRemap256M::$8 ]
|
reg byte a [ memoryRemap256M::$8 ]
|
||||||
reg byte a [ memoryRemap256M::$9 ]
|
reg byte a [ memoryRemap256M::$9 ]
|
||||||
reg byte a [ memoryRemap256M::$10 ]
|
reg byte a [ memoryRemap256M::$10 ]
|
||||||
|
@ -13,7 +13,6 @@ main: {
|
|||||||
// Move the entities
|
// Move the entities
|
||||||
.label line = 4
|
.label line = 4
|
||||||
.label i1 = 3
|
.label i1 = 3
|
||||||
.label __25 = 6
|
|
||||||
// asm
|
// asm
|
||||||
sei
|
sei
|
||||||
lda #-1
|
lda #-1
|
||||||
@ -22,9 +21,7 @@ main: {
|
|||||||
__b1:
|
__b1:
|
||||||
// for(char i=0;i<NUM_ENTITIES;i++)
|
// for(char i=0;i<NUM_ENTITIES;i++)
|
||||||
cpx #$19
|
cpx #$19
|
||||||
bcs !__b2+
|
bcc __b2
|
||||||
jmp __b2
|
|
||||||
!__b2:
|
|
||||||
// Wait for raster refresh
|
// Wait for raster refresh
|
||||||
__b3:
|
__b3:
|
||||||
// while(*VIC_RASTER!=0xff)
|
// while(*VIC_RASTER!=0xff)
|
||||||
@ -53,7 +50,6 @@ main: {
|
|||||||
// line[entities[i].x_pos] = ' '
|
// line[entities[i].x_pos] = ' '
|
||||||
lda.z i1
|
lda.z i1
|
||||||
asl
|
asl
|
||||||
sta.z __25
|
|
||||||
clc
|
clc
|
||||||
adc.z i1
|
adc.z i1
|
||||||
tax
|
tax
|
||||||
@ -80,10 +76,6 @@ main: {
|
|||||||
bmi __b8
|
bmi __b8
|
||||||
__b9:
|
__b9:
|
||||||
// -entities[i].x_vel
|
// -entities[i].x_vel
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
tax
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
@ -97,11 +89,7 @@ main: {
|
|||||||
sta entities,x
|
sta entities,x
|
||||||
__b8:
|
__b8:
|
||||||
// line[entities[i].x_pos] = entities[i].symbol
|
// line[entities[i].x_pos] = entities[i].symbol
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
// Draw symbol
|
// Draw symbol
|
||||||
tax
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
|
@ -24,32 +24,30 @@ main::@7: scope:[main] from main::@5
|
|||||||
to:main::@3
|
to:main::@3
|
||||||
main::@6: scope:[main] from main::@5
|
main::@6: scope:[main] from main::@5
|
||||||
[8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1
|
[8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1
|
||||||
[9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2
|
[9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2
|
||||||
[10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' '
|
[10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' '
|
||||||
[11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13)
|
[11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16)
|
||||||
[12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9
|
[12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9
|
||||||
to:main::@10
|
to:main::@10
|
||||||
main::@10: scope:[main] from main::@6
|
main::@10: scope:[main] from main::@6
|
||||||
[13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8
|
[13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8
|
||||||
to:main::@9
|
to:main::@9
|
||||||
main::@9: scope:[main] from main::@10 main::@6
|
main::@9: scope:[main] from main::@10 main::@6
|
||||||
[14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2
|
[14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16)
|
||||||
[15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18)
|
[15] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) ← (signed byte~) main::$8
|
||||||
[16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8
|
[16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16)
|
||||||
[17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18)
|
|
||||||
to:main::@8
|
to:main::@8
|
||||||
main::@8: scope:[main] from main::@10 main::@9
|
main::@8: scope:[main] from main::@10 main::@9
|
||||||
[18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2
|
[17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16)
|
||||||
[19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16)
|
[18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28
|
||||||
[20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28
|
[19] (byte) main::i1#1 ← ++ (byte) main::i1#2
|
||||||
[21] (byte) main::i1#1 ← ++ (byte) main::i1#2
|
|
||||||
to:main::@5
|
to:main::@5
|
||||||
main::@2: scope:[main] from main::@1
|
main::@2: scope:[main] from main::@1
|
||||||
[22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1
|
[20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1
|
||||||
[23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2
|
[21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2
|
||||||
[24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2
|
[22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2
|
||||||
[25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2
|
[23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2
|
||||||
[26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2
|
[24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2
|
||||||
[27] (signed byte) main::v#1 ← - (signed byte) main::v#2
|
[25] (signed byte) main::v#1 ← - (signed byte) main::v#2
|
||||||
[28] (byte) main::i#1 ← ++ (byte) main::i#2
|
[26] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
to:main::@1
|
to:main::@1
|
||||||
|
@ -295,14 +295,19 @@ Eliminating unused constant (const byte) SIZEOF_STRUCT_ENTITY
|
|||||||
Successful SSA optimization PassNEliminateUnusedVars
|
Successful SSA optimization PassNEliminateUnusedVars
|
||||||
Alias main::$25 = main::$23 main::$27
|
Alias main::$25 = main::$23 main::$27
|
||||||
Successful SSA optimization Pass2AliasElimination
|
Successful SSA optimization Pass2AliasElimination
|
||||||
|
Identified duplicate assignment right side [21] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2
|
||||||
|
Identified duplicate assignment right side [26] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2
|
||||||
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||||
|
Alias main::$16 = main::$13 main::$18
|
||||||
|
Successful SSA optimization Pass2AliasElimination
|
||||||
Adding NOP phi() at start of main::@3
|
Adding NOP phi() at start of main::@3
|
||||||
CALL GRAPH
|
CALL GRAPH
|
||||||
|
|
||||||
Created 4 initial phi equivalence classes
|
Created 4 initial phi equivalence classes
|
||||||
Coalesced [23] main::i1#6 ← main::i1#1
|
Coalesced [21] main::i1#6 ← main::i1#1
|
||||||
Coalesced [24] main::line#6 ← main::line#1
|
Coalesced [22] main::line#6 ← main::line#1
|
||||||
Coalesced [32] main::i#4 ← main::i#1
|
Coalesced [30] main::i#4 ← main::i#1
|
||||||
Coalesced [33] main::v#4 ← main::v#1
|
Coalesced [31] main::v#4 ← main::v#1
|
||||||
Coalesced down to 4 phi equivalence classes
|
Coalesced down to 4 phi equivalence classes
|
||||||
Culled Empty Block (label) main::@3
|
Culled Empty Block (label) main::@3
|
||||||
Renumbering block main::@4 to main::@3
|
Renumbering block main::@4 to main::@3
|
||||||
@ -341,34 +346,32 @@ main::@7: scope:[main] from main::@5
|
|||||||
to:main::@3
|
to:main::@3
|
||||||
main::@6: scope:[main] from main::@5
|
main::@6: scope:[main] from main::@5
|
||||||
[8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1
|
[8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1
|
||||||
[9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2
|
[9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2
|
||||||
[10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' '
|
[10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' '
|
||||||
[11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13)
|
[11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16)
|
||||||
[12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9
|
[12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9
|
||||||
to:main::@10
|
to:main::@10
|
||||||
main::@10: scope:[main] from main::@6
|
main::@10: scope:[main] from main::@6
|
||||||
[13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8
|
[13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8
|
||||||
to:main::@9
|
to:main::@9
|
||||||
main::@9: scope:[main] from main::@10 main::@6
|
main::@9: scope:[main] from main::@10 main::@6
|
||||||
[14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2
|
[14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16)
|
||||||
[15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18)
|
[15] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) ← (signed byte~) main::$8
|
||||||
[16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8
|
[16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16)
|
||||||
[17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18)
|
|
||||||
to:main::@8
|
to:main::@8
|
||||||
main::@8: scope:[main] from main::@10 main::@9
|
main::@8: scope:[main] from main::@10 main::@9
|
||||||
[18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2
|
[17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16)
|
||||||
[19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16)
|
[18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28
|
||||||
[20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28
|
[19] (byte) main::i1#1 ← ++ (byte) main::i1#2
|
||||||
[21] (byte) main::i1#1 ← ++ (byte) main::i1#2
|
|
||||||
to:main::@5
|
to:main::@5
|
||||||
main::@2: scope:[main] from main::@1
|
main::@2: scope:[main] from main::@1
|
||||||
[22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1
|
[20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1
|
||||||
[23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2
|
[21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2
|
||||||
[24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2
|
[22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2
|
||||||
[25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2
|
[23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2
|
||||||
[26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2
|
[24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2
|
||||||
[27] (signed byte) main::v#1 ← - (signed byte) main::v#2
|
[25] (signed byte) main::v#1 ← - (signed byte) main::v#2
|
||||||
[28] (byte) main::i#1 ← ++ (byte) main::i#2
|
[26] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
to:main::@1
|
to:main::@1
|
||||||
|
|
||||||
|
|
||||||
@ -378,21 +381,19 @@ VARIABLE REGISTER WEIGHTS
|
|||||||
(signed byte) Entity::x_vel
|
(signed byte) Entity::x_vel
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$10 14.666666666666666
|
(byte~) main::$10 14.666666666666666
|
||||||
(byte~) main::$13 176.75
|
(byte~) main::$16 176.75
|
||||||
(byte~) main::$16 303.0
|
|
||||||
(byte~) main::$18 201.99999999999997
|
|
||||||
(byte~) main::$21 22.0
|
(byte~) main::$21 22.0
|
||||||
(byte~) main::$25 40.4
|
(byte~) main::$25 202.0
|
||||||
(signed byte~) main::$8 202.0
|
(signed byte~) main::$8 202.0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#1 22.0
|
(byte) main::i#1 22.0
|
||||||
(byte) main::i#2 8.25
|
(byte) main::i#2 8.25
|
||||||
(byte) main::i1
|
(byte) main::i1
|
||||||
(byte) main::i1#1 202.0
|
(byte) main::i1#1 202.0
|
||||||
(byte) main::i1#2 47.13333333333333
|
(byte) main::i1#2 38.84615384615385
|
||||||
(byte*) main::line
|
(byte*) main::line
|
||||||
(byte*) main::line#1 101.0
|
(byte*) main::line#1 101.0
|
||||||
(byte*) main::line#2 28.857142857142858
|
(byte*) main::line#2 33.666666666666664
|
||||||
(signed byte) main::v
|
(signed byte) main::v
|
||||||
(signed byte) main::v#1 11.0
|
(signed byte) main::v#1 11.0
|
||||||
(signed byte) main::v#2 4.714285714285714
|
(signed byte) main::v#2 4.714285714285714
|
||||||
@ -403,10 +404,8 @@ Initial phi equivalence classes
|
|||||||
[ main::i1#2 main::i1#1 ]
|
[ main::i1#2 main::i1#1 ]
|
||||||
[ main::line#2 main::line#1 ]
|
[ main::line#2 main::line#1 ]
|
||||||
Added variable main::$25 to live range equivalence class [ main::$25 ]
|
Added variable main::$25 to live range equivalence class [ main::$25 ]
|
||||||
Added variable main::$13 to live range equivalence class [ main::$13 ]
|
|
||||||
Added variable main::$18 to live range equivalence class [ main::$18 ]
|
|
||||||
Added variable main::$8 to live range equivalence class [ main::$8 ]
|
|
||||||
Added variable main::$16 to live range equivalence class [ main::$16 ]
|
Added variable main::$16 to live range equivalence class [ main::$16 ]
|
||||||
|
Added variable main::$8 to live range equivalence class [ main::$8 ]
|
||||||
Added variable main::$21 to live range equivalence class [ main::$21 ]
|
Added variable main::$21 to live range equivalence class [ main::$21 ]
|
||||||
Added variable main::$10 to live range equivalence class [ main::$10 ]
|
Added variable main::$10 to live range equivalence class [ main::$10 ]
|
||||||
Complete equivalence classes
|
Complete equivalence classes
|
||||||
@ -415,10 +414,8 @@ Complete equivalence classes
|
|||||||
[ main::i1#2 main::i1#1 ]
|
[ main::i1#2 main::i1#1 ]
|
||||||
[ main::line#2 main::line#1 ]
|
[ main::line#2 main::line#1 ]
|
||||||
[ main::$25 ]
|
[ main::$25 ]
|
||||||
[ main::$13 ]
|
|
||||||
[ main::$18 ]
|
|
||||||
[ main::$8 ]
|
|
||||||
[ main::$16 ]
|
[ main::$16 ]
|
||||||
|
[ main::$8 ]
|
||||||
[ main::$21 ]
|
[ main::$21 ]
|
||||||
[ main::$10 ]
|
[ main::$10 ]
|
||||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||||
@ -426,12 +423,10 @@ Allocated zp[1]:3 [ main::v#2 main::v#1 ]
|
|||||||
Allocated zp[1]:4 [ main::i1#2 main::i1#1 ]
|
Allocated zp[1]:4 [ main::i1#2 main::i1#1 ]
|
||||||
Allocated zp[2]:5 [ main::line#2 main::line#1 ]
|
Allocated zp[2]:5 [ main::line#2 main::line#1 ]
|
||||||
Allocated zp[1]:7 [ main::$25 ]
|
Allocated zp[1]:7 [ main::$25 ]
|
||||||
Allocated zp[1]:8 [ main::$13 ]
|
Allocated zp[1]:8 [ main::$16 ]
|
||||||
Allocated zp[1]:9 [ main::$18 ]
|
Allocated zp[1]:9 [ main::$8 ]
|
||||||
Allocated zp[1]:10 [ main::$8 ]
|
Allocated zp[1]:10 [ main::$21 ]
|
||||||
Allocated zp[1]:11 [ main::$16 ]
|
Allocated zp[1]:11 [ main::$10 ]
|
||||||
Allocated zp[1]:12 [ main::$21 ]
|
|
||||||
Allocated zp[1]:13 [ main::$10 ]
|
|
||||||
|
|
||||||
INITIAL ASM
|
INITIAL ASM
|
||||||
Target platform is c64basic / MOS6502X
|
Target platform is c64basic / MOS6502X
|
||||||
@ -449,18 +444,16 @@ Target platform is c64basic / MOS6502X
|
|||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label __8 = $a
|
.label __8 = 9
|
||||||
.label __10 = $d
|
.label __10 = $b
|
||||||
.label __13 = 8
|
.label __16 = 8
|
||||||
.label __16 = $b
|
|
||||||
.label __18 = 9
|
|
||||||
// Initialize velocities
|
// Initialize velocities
|
||||||
.label v = 3
|
.label v = 3
|
||||||
.label i = 2
|
.label i = 2
|
||||||
// Move the entities
|
// Move the entities
|
||||||
.label line = 5
|
.label line = 5
|
||||||
.label i1 = 4
|
.label i1 = 4
|
||||||
.label __21 = $c
|
.label __21 = $a
|
||||||
.label __25 = 7
|
.label __25 = 7
|
||||||
// asm { sei }
|
// asm { sei }
|
||||||
sei
|
sei
|
||||||
@ -523,34 +516,34 @@ main: {
|
|||||||
lda.z i1
|
lda.z i1
|
||||||
asl
|
asl
|
||||||
sta.z __25
|
sta.z __25
|
||||||
// [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3
|
// [9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3
|
||||||
lda.z __25
|
lda.z __25
|
||||||
clc
|
clc
|
||||||
adc.z i1
|
adc.z i1
|
||||||
sta.z __13
|
sta.z __16
|
||||||
// [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' -- pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=vbuc2
|
// [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' ' -- pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=vbuc2
|
||||||
// Delete old symbol
|
// Delete old symbol
|
||||||
lda #' '
|
lda #' '
|
||||||
ldx.z __13
|
ldx.z __16
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
// [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) -- pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1
|
// [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1
|
||||||
// Move by velocity
|
// Move by velocity
|
||||||
ldy.z __13
|
ldy.z __16
|
||||||
clc
|
clc
|
||||||
lda entities,y
|
lda entities,y
|
||||||
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
sta entities,y
|
sta entities,y
|
||||||
// [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 -- pbsc1_derefidx_vbuz1_lt_0_then_la1
|
// [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9 -- pbsc1_derefidx_vbuz1_lt_0_then_la1
|
||||||
ldy.z __13
|
ldy.z __16
|
||||||
lda entities,y
|
lda entities,y
|
||||||
cmp #0
|
cmp #0
|
||||||
bmi __b9
|
bmi __b9
|
||||||
jmp __b10
|
jmp __b10
|
||||||
// main::@10
|
// main::@10
|
||||||
__b10:
|
__b10:
|
||||||
// [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 -- pbsc1_derefidx_vbuz1_lt_vbsc2_then_la1
|
// [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8 -- pbsc1_derefidx_vbuz1_lt_vbsc2_then_la1
|
||||||
ldy.z __13
|
ldy.z __16
|
||||||
lda entities,y
|
lda entities,y
|
||||||
sec
|
sec
|
||||||
sbc #$27+1
|
sbc #$27+1
|
||||||
@ -561,24 +554,19 @@ main: {
|
|||||||
jmp __b9
|
jmp __b9
|
||||||
// main::@9
|
// main::@9
|
||||||
__b9:
|
__b9:
|
||||||
// [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3
|
// [14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- vbsz1=_neg_pbsc1_derefidx_vbuz2
|
||||||
lda.z __25
|
ldy.z __16
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
sta.z __18
|
|
||||||
// [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsz1=_neg_pbsc1_derefidx_vbuz2
|
|
||||||
ldy.z __18
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta.z __8
|
sta.z __8
|
||||||
// [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuz1=vbsz2
|
// [15] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuz1=vbsz2
|
||||||
lda.z __8
|
lda.z __8
|
||||||
ldy.z __18
|
ldy.z __16
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
// [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1
|
// [16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- pbsc1_derefidx_vbuz1=pbsc1_derefidx_vbuz1_plus_pbsc2_derefidx_vbuz1
|
||||||
ldy.z __18
|
ldy.z __16
|
||||||
clc
|
clc
|
||||||
lda entities,y
|
lda entities,y
|
||||||
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
@ -586,18 +574,13 @@ main: {
|
|||||||
jmp __b8
|
jmp __b8
|
||||||
// main::@8
|
// main::@8
|
||||||
__b8:
|
__b8:
|
||||||
// [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuz1=vbuz2_plus_vbuz3
|
// [17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=pbuc2_derefidx_vbuz2
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
sta.z __16
|
|
||||||
// [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuz2)=pbuc2_derefidx_vbuz2
|
|
||||||
// Draw symbol
|
// Draw symbol
|
||||||
ldx.z __16
|
ldx.z __16
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
// [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
// [18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
// Next line
|
// Next line
|
||||||
lda #$28
|
lda #$28
|
||||||
clc
|
clc
|
||||||
@ -606,7 +589,7 @@ main: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z line+1
|
inc.z line+1
|
||||||
!:
|
!:
|
||||||
// [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1
|
// [19] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z i1
|
inc.z i1
|
||||||
// [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
|
// [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
|
||||||
__b5_from___b8:
|
__b5_from___b8:
|
||||||
@ -615,34 +598,34 @@ main: {
|
|||||||
jmp __b5
|
jmp __b5
|
||||||
// main::@2
|
// main::@2
|
||||||
__b2:
|
__b2:
|
||||||
// [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
// [20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
||||||
lda.z i
|
lda.z i
|
||||||
asl
|
asl
|
||||||
sta.z __21
|
sta.z __21
|
||||||
// [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
// [21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||||||
lda.z __21
|
lda.z __21
|
||||||
clc
|
clc
|
||||||
adc.z i
|
adc.z i
|
||||||
sta.z __10
|
sta.z __10
|
||||||
// [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuz1=vbsz2
|
// [22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuz1=vbsz2
|
||||||
lda.z i
|
lda.z i
|
||||||
ldy.z __10
|
ldy.z __10
|
||||||
sta entities,y
|
sta entities,y
|
||||||
// [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuz1=vbsz2
|
// [23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuz1=vbsz2
|
||||||
lda.z v
|
lda.z v
|
||||||
ldy.z __10
|
ldy.z __10
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
// [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz2
|
// [24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuz1=vbuz2
|
||||||
lda.z i
|
lda.z i
|
||||||
ldy.z __10
|
ldy.z __10
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y
|
sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y
|
||||||
// [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1
|
// [25] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1
|
||||||
lda.z v
|
lda.z v
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta.z v
|
sta.z v
|
||||||
// [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
// [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z i
|
inc.z i
|
||||||
// [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
// [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||||
__b1_from___b2:
|
__b1_from___b2:
|
||||||
@ -659,92 +642,78 @@ Statement [4] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { }
|
|||||||
Statement [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a
|
Statement [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
Statement [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
Statement [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i1#2 main::i1#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:4 [ main::i1#2 main::i1#1 ]
|
||||||
Statement [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a
|
Statement [9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:7 [ main::$25 ]
|
Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a reg byte y
|
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i1#2 main::i1#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::i1#2 main::i1#1 ]
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:7 [ main::$25 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$16 ]
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:8 [ main::$13 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::$16 ]
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:8 [ main::$13 ]
|
Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a
|
Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a
|
Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
Statement [14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) [ main::i1#2 main::line#2 main::$16 main::$8 ] ( [ main::i1#2 main::line#2 main::$16 main::$8 ] { } ) always clobbers reg byte a
|
||||||
Statement [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$18 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 ] { } ) always clobbers reg byte a
|
Statement [16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] { } ) always clobbers reg byte a
|
Statement [17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:9 [ main::$18 ]
|
Statement [18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a
|
||||||
Statement [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
Statement [20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a
|
||||||
Statement [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
|
||||||
Statement [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y
|
|
||||||
Statement [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a
|
|
||||||
Statement [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a
|
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::v#2 main::v#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:3 [ main::v#2 main::v#1 ]
|
||||||
Statement [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
Statement [21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
Statement [22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:13 [ main::$10 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:11 [ main::$10 ]
|
||||||
Statement [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
Statement [23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a
|
Statement [24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a
|
Statement [25] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a
|
||||||
Statement [3] if(*((const nomodify byte*) VIC_RASTER)!=(byte) $ff) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
|
Statement [3] if(*((const nomodify byte*) VIC_RASTER)!=(byte) $ff) goto main::@3 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
Statement [4] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
Statement [4] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) 0 [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
Statement [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a
|
Statement [7] *((const nomodify byte*) VIC_BG_COLOR) ← (byte) $f [ ] ( [ ] { } ) always clobbers reg byte a
|
||||||
Statement [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
Statement [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
||||||
Statement [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a
|
Statement [9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a reg byte y
|
Statement [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' ' [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a
|
Statement [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$25 main::$13 ] ( [ main::i1#2 main::line#2 main::$25 main::$13 ] { } ) always clobbers reg byte a
|
Statement [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
Statement [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$25 main::$18 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 ] { } ) always clobbers reg byte a
|
Statement [14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) [ main::i1#2 main::line#2 main::$16 main::$8 ] ( [ main::i1#2 main::line#2 main::$16 main::$8 ] { } ) always clobbers reg byte a
|
||||||
Statement [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] ( [ main::i1#2 main::line#2 main::$25 main::$18 main::$8 ] { } ) always clobbers reg byte a
|
Statement [16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
||||||
Statement [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) [ main::i1#2 main::line#2 main::$25 ] ( [ main::i1#2 main::line#2 main::$25 ] { } ) always clobbers reg byte a
|
Statement [17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Statement [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 [ main::i1#2 main::line#2 main::$16 ] ( [ main::i1#2 main::line#2 main::$16 ] { } ) always clobbers reg byte a
|
Statement [18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a
|
||||||
Statement [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) [ main::i1#2 main::line#2 ] ( [ main::i1#2 main::line#2 ] { } ) always clobbers reg byte a reg byte y
|
Statement [20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a
|
||||||
Statement [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 [ main::i1#2 main::line#1 ] ( [ main::i1#2 main::line#1 ] { } ) always clobbers reg byte a
|
Statement [21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::v#2 main::$21 ] ( [ main::i#2 main::v#2 main::$21 ] { } ) always clobbers reg byte a
|
Statement [22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
Statement [23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
||||||
Statement [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
Statement [24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 [ main::i#2 main::v#2 main::$10 ] ( [ main::i#2 main::v#2 main::$10 ] { } ) always clobbers reg byte a
|
Statement [25] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a
|
||||||
Statement [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 [ main::i#2 main::v#2 ] ( [ main::i#2 main::v#2 ] { } ) always clobbers reg byte a
|
|
||||||
Statement [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 [ main::i#2 main::v#1 ] ( [ main::i#2 main::v#1 ] { } ) always clobbers reg byte a
|
|
||||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:3 [ main::v#2 main::v#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
Potential registers zp[1]:3 [ main::v#2 main::v#1 ] : zp[1]:3 , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:4 [ main::i1#2 main::i1#1 ] : zp[1]:4 , reg byte x ,
|
Potential registers zp[1]:4 [ main::i1#2 main::i1#1 ] : zp[1]:4 , reg byte x ,
|
||||||
Potential registers zp[2]:5 [ main::line#2 main::line#1 ] : zp[2]:5 ,
|
Potential registers zp[2]:5 [ main::line#2 main::line#1 ] : zp[2]:5 ,
|
||||||
Potential registers zp[1]:7 [ main::$25 ] : zp[1]:7 , reg byte x ,
|
Potential registers zp[1]:7 [ main::$25 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:8 [ main::$13 ] : zp[1]:8 , reg byte x ,
|
Potential registers zp[1]:8 [ main::$16 ] : zp[1]:8 , reg byte x ,
|
||||||
Potential registers zp[1]:9 [ main::$18 ] : zp[1]:9 , reg byte x , reg byte y ,
|
Potential registers zp[1]:9 [ main::$8 ] : zp[1]:9 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:10 [ main::$8 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp[1]:10 [ main::$21 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:11 [ main::$16 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp[1]:11 [ main::$10 ] : zp[1]:11 , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:12 [ main::$21 ] : zp[1]:12 , reg byte a , reg byte x , reg byte y ,
|
|
||||||
Potential registers zp[1]:13 [ main::$10 ] : zp[1]:13 , reg byte x , reg byte y ,
|
|
||||||
|
|
||||||
REGISTER UPLIFT SCOPES
|
REGISTER UPLIFT SCOPES
|
||||||
Uplift Scope [main] 303: zp[1]:11 [ main::$16 ] 249.13: zp[1]:4 [ main::i1#2 main::i1#1 ] 202: zp[1]:10 [ main::$8 ] 202: zp[1]:9 [ main::$18 ] 176.75: zp[1]:8 [ main::$13 ] 129.86: zp[2]:5 [ main::line#2 main::line#1 ] 40.4: zp[1]:7 [ main::$25 ] 30.25: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:12 [ main::$21 ] 15.71: zp[1]:3 [ main::v#2 main::v#1 ] 14.67: zp[1]:13 [ main::$10 ]
|
Uplift Scope [main] 240.85: zp[1]:4 [ main::i1#2 main::i1#1 ] 202: zp[1]:7 [ main::$25 ] 202: zp[1]:9 [ main::$8 ] 176.75: zp[1]:8 [ main::$16 ] 134.67: zp[2]:5 [ main::line#2 main::line#1 ] 30.25: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:10 [ main::$21 ] 15.71: zp[1]:3 [ main::v#2 main::v#1 ] 14.67: zp[1]:11 [ main::$10 ]
|
||||||
Uplift Scope [Entity]
|
Uplift Scope [Entity]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 23607 combination reg byte a [ main::$16 ] zp[1]:4 [ main::i1#2 main::i1#1 ] reg byte a [ main::$8 ] reg byte x [ main::$18 ] zp[1]:8 [ main::$13 ] zp[2]:5 [ main::line#2 main::line#1 ] zp[1]:7 [ main::$25 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:12 [ main::$21 ] zp[1]:3 [ main::v#2 main::v#1 ] zp[1]:13 [ main::$10 ]
|
Uplifting [main] best 19707 combination zp[1]:4 [ main::i1#2 main::i1#1 ] reg byte a [ main::$25 ] reg byte a [ main::$8 ] reg byte x [ main::$16 ] zp[2]:5 [ main::line#2 main::line#1 ] zp[1]:2 [ main::i#2 main::i#1 ] zp[1]:10 [ main::$21 ] zp[1]:3 [ main::v#2 main::v#1 ] zp[1]:11 [ main::$10 ]
|
||||||
Limited combination testing to 100 combinations of 41472 possible.
|
Limited combination testing to 100 combinations of 6912 possible.
|
||||||
Uplifting [Entity] best 23607 combination
|
Uplifting [Entity] best 19707 combination
|
||||||
Uplifting [] best 23607 combination
|
Uplifting [] best 19707 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:4 [ main::i1#2 main::i1#1 ]
|
Attempting to uplift remaining variables inzp[1]:4 [ main::i1#2 main::i1#1 ]
|
||||||
Uplifting [main] best 23607 combination zp[1]:4 [ main::i1#2 main::i1#1 ]
|
Uplifting [main] best 19707 combination zp[1]:4 [ main::i1#2 main::i1#1 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:8 [ main::$13 ]
|
|
||||||
Uplifting [main] best 22307 combination reg byte x [ main::$13 ]
|
|
||||||
Attempting to uplift remaining variables inzp[1]:7 [ main::$25 ]
|
|
||||||
Uplifting [main] best 22307 combination zp[1]:7 [ main::$25 ]
|
|
||||||
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
|
Attempting to uplift remaining variables inzp[1]:2 [ main::i#2 main::i#1 ]
|
||||||
Uplifting [main] best 22177 combination reg byte x [ main::i#2 main::i#1 ]
|
Uplifting [main] best 19577 combination reg byte x [ main::i#2 main::i#1 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:12 [ main::$21 ]
|
Attempting to uplift remaining variables inzp[1]:10 [ main::$21 ]
|
||||||
Uplifting [main] best 22157 combination reg byte a [ main::$21 ]
|
Uplifting [main] best 19557 combination reg byte a [ main::$21 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:3 [ main::v#2 main::v#1 ]
|
Attempting to uplift remaining variables inzp[1]:3 [ main::v#2 main::v#1 ]
|
||||||
Uplifting [main] best 22157 combination zp[1]:3 [ main::v#2 main::v#1 ]
|
Uplifting [main] best 19557 combination zp[1]:3 [ main::v#2 main::v#1 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:13 [ main::$10 ]
|
Attempting to uplift remaining variables inzp[1]:11 [ main::$10 ]
|
||||||
Uplifting [main] best 22057 combination reg byte y [ main::$10 ]
|
Uplifting [main] best 19457 combination reg byte y [ main::$10 ]
|
||||||
Allocated (was zp[1]:3) zp[1]:2 [ main::v#2 main::v#1 ]
|
Allocated (was zp[1]:3) zp[1]:2 [ main::v#2 main::v#1 ]
|
||||||
Allocated (was zp[1]:4) zp[1]:3 [ main::i1#2 main::i1#1 ]
|
Allocated (was zp[1]:4) zp[1]:3 [ main::i1#2 main::i1#1 ]
|
||||||
Allocated (was zp[2]:5) zp[2]:4 [ main::line#2 main::line#1 ]
|
Allocated (was zp[2]:5) zp[2]:4 [ main::line#2 main::line#1 ]
|
||||||
Allocated (was zp[1]:7) zp[1]:6 [ main::$25 ]
|
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
// File Comments
|
// File Comments
|
||||||
@ -766,7 +735,6 @@ main: {
|
|||||||
// Move the entities
|
// Move the entities
|
||||||
.label line = 4
|
.label line = 4
|
||||||
.label i1 = 3
|
.label i1 = 3
|
||||||
.label __25 = 6
|
|
||||||
// asm { sei }
|
// asm { sei }
|
||||||
sei
|
sei
|
||||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||||
@ -822,34 +790,32 @@ main: {
|
|||||||
jmp __b3
|
jmp __b3
|
||||||
// main::@6
|
// main::@6
|
||||||
__b6:
|
__b6:
|
||||||
// [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
// [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
||||||
lda.z i1
|
lda.z i1
|
||||||
asl
|
asl
|
||||||
sta.z __25
|
// [9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuaa_plus_vbuz1
|
||||||
// [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2
|
|
||||||
lda.z __25
|
|
||||||
clc
|
clc
|
||||||
adc.z i1
|
adc.z i1
|
||||||
tax
|
tax
|
||||||
// [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' -- pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=vbuc2
|
// [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' ' -- pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=vbuc2
|
||||||
// Delete old symbol
|
// Delete old symbol
|
||||||
lda #' '
|
lda #' '
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
// [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
// [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
||||||
// Move by velocity
|
// Move by velocity
|
||||||
clc
|
clc
|
||||||
lda entities,x
|
lda entities,x
|
||||||
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
sta entities,x
|
sta entities,x
|
||||||
// [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 -- pbsc1_derefidx_vbuxx_lt_0_then_la1
|
// [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9 -- pbsc1_derefidx_vbuxx_lt_0_then_la1
|
||||||
lda entities,x
|
lda entities,x
|
||||||
cmp #0
|
cmp #0
|
||||||
bmi __b9
|
bmi __b9
|
||||||
jmp __b10
|
jmp __b10
|
||||||
// main::@10
|
// main::@10
|
||||||
__b10:
|
__b10:
|
||||||
// [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 -- pbsc1_derefidx_vbuxx_lt_vbsc2_then_la1
|
// [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8 -- pbsc1_derefidx_vbuxx_lt_vbsc2_then_la1
|
||||||
lda entities,x
|
lda entities,x
|
||||||
sec
|
sec
|
||||||
sbc #$27+1
|
sbc #$27+1
|
||||||
@ -860,19 +826,14 @@ main: {
|
|||||||
jmp __b9
|
jmp __b9
|
||||||
// main::@9
|
// main::@9
|
||||||
__b9:
|
__b9:
|
||||||
// [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2
|
// [14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- vbsaa=_neg_pbsc1_derefidx_vbuxx
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
tax
|
|
||||||
// [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsaa=_neg_pbsc1_derefidx_vbuxx
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
// [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa
|
// [15] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
// [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
// [16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
||||||
clc
|
clc
|
||||||
lda entities,x
|
lda entities,x
|
||||||
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
@ -880,17 +841,12 @@ main: {
|
|||||||
jmp __b8
|
jmp __b8
|
||||||
// main::@8
|
// main::@8
|
||||||
__b8:
|
__b8:
|
||||||
// [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuaa=vbuz1_plus_vbuz2
|
// [17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=pbuc2_derefidx_vbuxx
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
// [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa
|
|
||||||
// Draw symbol
|
// Draw symbol
|
||||||
tax
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
// [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
// [18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
// Next line
|
// Next line
|
||||||
lda #$28
|
lda #$28
|
||||||
clc
|
clc
|
||||||
@ -899,7 +855,7 @@ main: {
|
|||||||
bcc !+
|
bcc !+
|
||||||
inc.z line+1
|
inc.z line+1
|
||||||
!:
|
!:
|
||||||
// [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1
|
// [19] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z i1
|
inc.z i1
|
||||||
// [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
|
// [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
|
||||||
__b5_from___b8:
|
__b5_from___b8:
|
||||||
@ -908,30 +864,30 @@ main: {
|
|||||||
jmp __b5
|
jmp __b5
|
||||||
// main::@2
|
// main::@2
|
||||||
__b2:
|
__b2:
|
||||||
// [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1
|
// [20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
// [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx
|
// [21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z $ff
|
adc.z $ff
|
||||||
tay
|
tay
|
||||||
// [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx
|
// [22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx
|
||||||
txa
|
txa
|
||||||
sta entities,y
|
sta entities,y
|
||||||
// [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1
|
// [23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1
|
||||||
lda.z v
|
lda.z v
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
// [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx
|
// [24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx
|
||||||
txa
|
txa
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y
|
sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y
|
||||||
// [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1
|
// [25] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1
|
||||||
lda.z v
|
lda.z v
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta.z v
|
sta.z v
|
||||||
// [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
// [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
// [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||||
__b1_from___b2:
|
__b1_from___b2:
|
||||||
@ -952,8 +908,6 @@ Removing instruction jmp __b10
|
|||||||
Removing instruction jmp __b9
|
Removing instruction jmp __b9
|
||||||
Removing instruction jmp __b8
|
Removing instruction jmp __b8
|
||||||
Succesful ASM optimization Pass5NextJumpElimination
|
Succesful ASM optimization Pass5NextJumpElimination
|
||||||
Removing instruction lda.z __25
|
|
||||||
Succesful ASM optimization Pass5UnnecesaryLoadElimination
|
|
||||||
Removing instruction __b1_from_main:
|
Removing instruction __b1_from_main:
|
||||||
Removing instruction __b4:
|
Removing instruction __b4:
|
||||||
Removing instruction __b5_from___b4:
|
Removing instruction __b5_from___b4:
|
||||||
@ -962,7 +916,6 @@ Removing instruction __b10:
|
|||||||
Removing instruction __b5_from___b8:
|
Removing instruction __b5_from___b8:
|
||||||
Removing instruction __b1_from___b2:
|
Removing instruction __b1_from___b2:
|
||||||
Succesful ASM optimization Pass5UnusedLabelElimination
|
Succesful ASM optimization Pass5UnusedLabelElimination
|
||||||
Fixing long branch [22] bcc __b2 to bcs
|
|
||||||
|
|
||||||
FINAL SYMBOL TABLE
|
FINAL SYMBOL TABLE
|
||||||
(byte) Entity::symbol
|
(byte) Entity::symbol
|
||||||
@ -976,11 +929,9 @@ FINAL SYMBOL TABLE
|
|||||||
(const struct Entity*) entities[(number) $19] = { fill( $19, 0) }
|
(const struct Entity*) entities[(number) $19] = { fill( $19, 0) }
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$10 reg byte y 14.666666666666666
|
(byte~) main::$10 reg byte y 14.666666666666666
|
||||||
(byte~) main::$13 reg byte x 176.75
|
(byte~) main::$16 reg byte x 176.75
|
||||||
(byte~) main::$16 reg byte a 303.0
|
|
||||||
(byte~) main::$18 reg byte x 201.99999999999997
|
|
||||||
(byte~) main::$21 reg byte a 22.0
|
(byte~) main::$21 reg byte a 22.0
|
||||||
(byte~) main::$25 zp[1]:6 40.4
|
(byte~) main::$25 reg byte a 202.0
|
||||||
(signed byte~) main::$8 reg byte a 202.0
|
(signed byte~) main::$8 reg byte a 202.0
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@10
|
(label) main::@10
|
||||||
@ -997,10 +948,10 @@ FINAL SYMBOL TABLE
|
|||||||
(byte) main::i#2 reg byte x 8.25
|
(byte) main::i#2 reg byte x 8.25
|
||||||
(byte) main::i1
|
(byte) main::i1
|
||||||
(byte) main::i1#1 i1 zp[1]:3 202.0
|
(byte) main::i1#1 i1 zp[1]:3 202.0
|
||||||
(byte) main::i1#2 i1 zp[1]:3 47.13333333333333
|
(byte) main::i1#2 i1 zp[1]:3 38.84615384615385
|
||||||
(byte*) main::line
|
(byte*) main::line
|
||||||
(byte*) main::line#1 line zp[2]:4 101.0
|
(byte*) main::line#1 line zp[2]:4 101.0
|
||||||
(byte*) main::line#2 line zp[2]:4 28.857142857142858
|
(byte*) main::line#2 line zp[2]:4 33.666666666666664
|
||||||
(signed byte) main::v
|
(signed byte) main::v
|
||||||
(signed byte) main::v#1 v zp[1]:2 11.0
|
(signed byte) main::v#1 v zp[1]:2 11.0
|
||||||
(signed byte) main::v#2 v zp[1]:2 4.714285714285714
|
(signed byte) main::v#2 v zp[1]:2 4.714285714285714
|
||||||
@ -1009,17 +960,15 @@ reg byte x [ main::i#2 main::i#1 ]
|
|||||||
zp[1]:2 [ main::v#2 main::v#1 ]
|
zp[1]:2 [ main::v#2 main::v#1 ]
|
||||||
zp[1]:3 [ main::i1#2 main::i1#1 ]
|
zp[1]:3 [ main::i1#2 main::i1#1 ]
|
||||||
zp[2]:4 [ main::line#2 main::line#1 ]
|
zp[2]:4 [ main::line#2 main::line#1 ]
|
||||||
zp[1]:6 [ main::$25 ]
|
reg byte a [ main::$25 ]
|
||||||
reg byte x [ main::$13 ]
|
reg byte x [ main::$16 ]
|
||||||
reg byte x [ main::$18 ]
|
|
||||||
reg byte a [ main::$8 ]
|
reg byte a [ main::$8 ]
|
||||||
reg byte a [ main::$16 ]
|
|
||||||
reg byte a [ main::$21 ]
|
reg byte a [ main::$21 ]
|
||||||
reg byte y [ main::$10 ]
|
reg byte y [ main::$10 ]
|
||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 19927
|
Score: 17597
|
||||||
|
|
||||||
// File Comments
|
// File Comments
|
||||||
// Test that the multiplication of a idx*sizeof(element) is reused inside loops
|
// Test that the multiplication of a idx*sizeof(element) is reused inside loops
|
||||||
@ -1040,7 +989,6 @@ main: {
|
|||||||
// Move the entities
|
// Move the entities
|
||||||
.label line = 4
|
.label line = 4
|
||||||
.label i1 = 3
|
.label i1 = 3
|
||||||
.label __25 = 6
|
|
||||||
// asm
|
// asm
|
||||||
// asm { sei }
|
// asm { sei }
|
||||||
sei
|
sei
|
||||||
@ -1055,9 +1003,7 @@ main: {
|
|||||||
// for(char i=0;i<NUM_ENTITIES;i++)
|
// for(char i=0;i<NUM_ENTITIES;i++)
|
||||||
// [2] if((byte) main::i#2<(byte) $19) goto main::@2 -- vbuxx_lt_vbuc1_then_la1
|
// [2] if((byte) main::i#2<(byte) $19) goto main::@2 -- vbuxx_lt_vbuc1_then_la1
|
||||||
cpx #$19
|
cpx #$19
|
||||||
bcs !__b2+
|
bcc __b2
|
||||||
jmp __b2
|
|
||||||
!__b2:
|
|
||||||
// Wait for raster refresh
|
// Wait for raster refresh
|
||||||
// main::@3
|
// main::@3
|
||||||
__b3:
|
__b3:
|
||||||
@ -1096,33 +1042,32 @@ main: {
|
|||||||
// main::@6
|
// main::@6
|
||||||
__b6:
|
__b6:
|
||||||
// line[entities[i].x_pos] = ' '
|
// line[entities[i].x_pos] = ' '
|
||||||
// [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuz1=vbuz2_rol_1
|
// [8] (byte~) main::$25 ← (byte) main::i1#2 << (byte) 1 -- vbuaa=vbuz1_rol_1
|
||||||
lda.z i1
|
lda.z i1
|
||||||
asl
|
asl
|
||||||
sta.z __25
|
// [9] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuaa_plus_vbuz1
|
||||||
// [9] (byte~) main::$13 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2
|
|
||||||
clc
|
clc
|
||||||
adc.z i1
|
adc.z i1
|
||||||
tax
|
tax
|
||||||
// [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$13)) ← (byte) ' ' -- pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=vbuc2
|
// [10] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← (byte) ' ' -- pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=vbuc2
|
||||||
// Delete old symbol
|
// Delete old symbol
|
||||||
lda #' '
|
lda #' '
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
// entities[i].x_pos += entities[i].x_vel
|
// entities[i].x_pos += entities[i].x_vel
|
||||||
// [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$13) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$13) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
// [11] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
||||||
// Move by velocity
|
// Move by velocity
|
||||||
clc
|
clc
|
||||||
lda entities,x
|
lda entities,x
|
||||||
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
sta entities,x
|
sta entities,x
|
||||||
// if(entities[i].x_pos<0 || entities[i].x_pos>39)
|
// if(entities[i].x_pos<0 || entities[i].x_pos>39)
|
||||||
// [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) 0) goto main::@9 -- pbsc1_derefidx_vbuxx_lt_0_then_la1
|
// [12] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) 0) goto main::@9 -- pbsc1_derefidx_vbuxx_lt_0_then_la1
|
||||||
lda entities,x
|
lda entities,x
|
||||||
cmp #0
|
cmp #0
|
||||||
bmi __b9
|
bmi __b9
|
||||||
// main::@10
|
// main::@10
|
||||||
// [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$13)<(signed byte) $27+(signed byte) 1) goto main::@8 -- pbsc1_derefidx_vbuxx_lt_vbsc2_then_la1
|
// [13] if(*((signed byte*)(const struct Entity*) entities + (byte~) main::$16)<(signed byte) $27+(signed byte) 1) goto main::@8 -- pbsc1_derefidx_vbuxx_lt_vbsc2_then_la1
|
||||||
lda entities,x
|
lda entities,x
|
||||||
sec
|
sec
|
||||||
sbc #$27+1
|
sbc #$27+1
|
||||||
@ -1133,21 +1078,16 @@ main: {
|
|||||||
// main::@9
|
// main::@9
|
||||||
__b9:
|
__b9:
|
||||||
// -entities[i].x_vel
|
// -entities[i].x_vel
|
||||||
// [14] (byte~) main::$18 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuxx=vbuz1_plus_vbuz2
|
// [14] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- vbsaa=_neg_pbsc1_derefidx_vbuxx
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
tax
|
|
||||||
// [15] (signed byte~) main::$8 ← - *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- vbsaa=_neg_pbsc1_derefidx_vbuxx
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
lda entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
// entities[i].x_vel = -entities[i].x_vel
|
// entities[i].x_vel = -entities[i].x_vel
|
||||||
// [16] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa
|
// [15] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) ← (signed byte~) main::$8 -- pbsc1_derefidx_vbuxx=vbsaa
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
// entities[i].x_pos += entities[i].x_vel
|
// entities[i].x_pos += entities[i].x_vel
|
||||||
// [17] *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$18) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$18) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
// [16] *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) ← *((signed byte*)(const struct Entity*) entities + (byte~) main::$16) + *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$16) -- pbsc1_derefidx_vbuxx=pbsc1_derefidx_vbuxx_plus_pbsc2_derefidx_vbuxx
|
||||||
clc
|
clc
|
||||||
lda entities,x
|
lda entities,x
|
||||||
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
adc entities+OFFSET_STRUCT_ENTITY_X_VEL,x
|
||||||
@ -1155,18 +1095,13 @@ main: {
|
|||||||
// main::@8
|
// main::@8
|
||||||
__b8:
|
__b8:
|
||||||
// line[entities[i].x_pos] = entities[i].symbol
|
// line[entities[i].x_pos] = entities[i].symbol
|
||||||
// [18] (byte~) main::$16 ← (byte~) main::$25 + (byte) main::i1#2 -- vbuaa=vbuz1_plus_vbuz2
|
// [17] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuxx)=pbuc2_derefidx_vbuxx
|
||||||
lda.z __25
|
|
||||||
clc
|
|
||||||
adc.z i1
|
|
||||||
// [19] *((byte*) main::line#2 + *((signed byte*)(const struct Entity*) entities + (byte~) main::$16)) ← *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$16) -- pbuz1_derefidx_(pbsc1_derefidx_vbuaa)=pbuc2_derefidx_vbuaa
|
|
||||||
// Draw symbol
|
// Draw symbol
|
||||||
tax
|
|
||||||
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
lda entities+OFFSET_STRUCT_ENTITY_SYMBOL,x
|
||||||
ldy entities,x
|
ldy entities,x
|
||||||
sta (line),y
|
sta (line),y
|
||||||
// line +=40
|
// line +=40
|
||||||
// [20] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
// [18] (byte*) main::line#1 ← (byte*) main::line#2 + (byte) $28 -- pbuz1=pbuz1_plus_vbuc1
|
||||||
// Next line
|
// Next line
|
||||||
lda #$28
|
lda #$28
|
||||||
clc
|
clc
|
||||||
@ -1176,7 +1111,7 @@ main: {
|
|||||||
inc.z line+1
|
inc.z line+1
|
||||||
!:
|
!:
|
||||||
// for(char i=0;i<NUM_ENTITIES;i++)
|
// for(char i=0;i<NUM_ENTITIES;i++)
|
||||||
// [21] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1
|
// [19] (byte) main::i1#1 ← ++ (byte) main::i1#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z i1
|
inc.z i1
|
||||||
// [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
|
// [5] phi from main::@8 to main::@5 [phi:main::@8->main::@5]
|
||||||
// [5] phi (byte*) main::line#2 = (byte*) main::line#1 [phi:main::@8->main::@5#0] -- register_copy
|
// [5] phi (byte*) main::line#2 = (byte*) main::line#1 [phi:main::@8->main::@5#0] -- register_copy
|
||||||
@ -1185,34 +1120,34 @@ main: {
|
|||||||
// main::@2
|
// main::@2
|
||||||
__b2:
|
__b2:
|
||||||
// entities[i].x_pos = (signed char)i
|
// entities[i].x_pos = (signed char)i
|
||||||
// [22] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1
|
// [20] (byte~) main::$21 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
// [23] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx
|
// [21] (byte~) main::$10 ← (byte~) main::$21 + (byte) main::i#2 -- vbuyy=vbuaa_plus_vbuxx
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z $ff
|
adc.z $ff
|
||||||
tay
|
tay
|
||||||
// [24] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx
|
// [22] *((signed byte*)(const struct Entity*) entities + (byte~) main::$10) ← (signed byte)(byte) main::i#2 -- pbsc1_derefidx_vbuyy=vbsxx
|
||||||
txa
|
txa
|
||||||
sta entities,y
|
sta entities,y
|
||||||
// entities[i].x_vel = v
|
// entities[i].x_vel = v
|
||||||
// [25] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1
|
// [23] *((signed byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_X_VEL + (byte~) main::$10) ← (signed byte) main::v#2 -- pbsc1_derefidx_vbuyy=vbsz1
|
||||||
lda.z v
|
lda.z v
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
sta entities+OFFSET_STRUCT_ENTITY_X_VEL,y
|
||||||
// entities[i].symbol = i
|
// entities[i].symbol = i
|
||||||
// [26] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx
|
// [24] *((byte*)(const struct Entity*) entities+(const byte) OFFSET_STRUCT_ENTITY_SYMBOL + (byte~) main::$10) ← (byte) main::i#2 -- pbuc1_derefidx_vbuyy=vbuxx
|
||||||
txa
|
txa
|
||||||
sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y
|
sta entities+OFFSET_STRUCT_ENTITY_SYMBOL,y
|
||||||
// v = -v
|
// v = -v
|
||||||
// [27] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1
|
// [25] (signed byte) main::v#1 ← - (signed byte) main::v#2 -- vbsz1=_neg_vbsz1
|
||||||
lda.z v
|
lda.z v
|
||||||
eor #$ff
|
eor #$ff
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
sta.z v
|
sta.z v
|
||||||
// for(char i=0;i<NUM_ENTITIES;i++)
|
// for(char i=0;i<NUM_ENTITIES;i++)
|
||||||
// [28] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
// [26] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
// [1] phi from main::@2 to main::@1 [phi:main::@2->main::@1]
|
||||||
// [1] phi (signed byte) main::v#2 = (signed byte) main::v#1 [phi:main::@2->main::@1#0] -- register_copy
|
// [1] phi (signed byte) main::v#2 = (signed byte) main::v#1 [phi:main::@2->main::@1#0] -- register_copy
|
||||||
|
@ -9,11 +9,9 @@
|
|||||||
(const struct Entity*) entities[(number) $19] = { fill( $19, 0) }
|
(const struct Entity*) entities[(number) $19] = { fill( $19, 0) }
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$10 reg byte y 14.666666666666666
|
(byte~) main::$10 reg byte y 14.666666666666666
|
||||||
(byte~) main::$13 reg byte x 176.75
|
(byte~) main::$16 reg byte x 176.75
|
||||||
(byte~) main::$16 reg byte a 303.0
|
|
||||||
(byte~) main::$18 reg byte x 201.99999999999997
|
|
||||||
(byte~) main::$21 reg byte a 22.0
|
(byte~) main::$21 reg byte a 22.0
|
||||||
(byte~) main::$25 zp[1]:6 40.4
|
(byte~) main::$25 reg byte a 202.0
|
||||||
(signed byte~) main::$8 reg byte a 202.0
|
(signed byte~) main::$8 reg byte a 202.0
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@10
|
(label) main::@10
|
||||||
@ -30,10 +28,10 @@
|
|||||||
(byte) main::i#2 reg byte x 8.25
|
(byte) main::i#2 reg byte x 8.25
|
||||||
(byte) main::i1
|
(byte) main::i1
|
||||||
(byte) main::i1#1 i1 zp[1]:3 202.0
|
(byte) main::i1#1 i1 zp[1]:3 202.0
|
||||||
(byte) main::i1#2 i1 zp[1]:3 47.13333333333333
|
(byte) main::i1#2 i1 zp[1]:3 38.84615384615385
|
||||||
(byte*) main::line
|
(byte*) main::line
|
||||||
(byte*) main::line#1 line zp[2]:4 101.0
|
(byte*) main::line#1 line zp[2]:4 101.0
|
||||||
(byte*) main::line#2 line zp[2]:4 28.857142857142858
|
(byte*) main::line#2 line zp[2]:4 33.666666666666664
|
||||||
(signed byte) main::v
|
(signed byte) main::v
|
||||||
(signed byte) main::v#1 v zp[1]:2 11.0
|
(signed byte) main::v#1 v zp[1]:2 11.0
|
||||||
(signed byte) main::v#2 v zp[1]:2 4.714285714285714
|
(signed byte) main::v#2 v zp[1]:2 4.714285714285714
|
||||||
@ -42,10 +40,8 @@ reg byte x [ main::i#2 main::i#1 ]
|
|||||||
zp[1]:2 [ main::v#2 main::v#1 ]
|
zp[1]:2 [ main::v#2 main::v#1 ]
|
||||||
zp[1]:3 [ main::i1#2 main::i1#1 ]
|
zp[1]:3 [ main::i1#2 main::i1#1 ]
|
||||||
zp[2]:4 [ main::line#2 main::line#1 ]
|
zp[2]:4 [ main::line#2 main::line#1 ]
|
||||||
zp[1]:6 [ main::$25 ]
|
reg byte a [ main::$25 ]
|
||||||
reg byte x [ main::$13 ]
|
reg byte x [ main::$16 ]
|
||||||
reg byte x [ main::$18 ]
|
|
||||||
reg byte a [ main::$8 ]
|
reg byte a [ main::$8 ]
|
||||||
reg byte a [ main::$16 ]
|
|
||||||
reg byte a [ main::$21 ]
|
reg byte a [ main::$21 ]
|
||||||
reg byte y [ main::$10 ]
|
reg byte y [ main::$10 ]
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
.pc = $80d "Program"
|
.pc = $80d "Program"
|
||||||
main: {
|
main: {
|
||||||
.label SCREEN = $400
|
.label SCREEN = $400
|
||||||
.label __16 = 2
|
.label __21 = 2
|
||||||
.label __18 = 3
|
.label __46 = 3
|
||||||
ldx #0
|
ldx #0
|
||||||
__b1:
|
__b1:
|
||||||
// (SCREEN+0*40)[i] = i*1
|
// (SCREEN+0*40)[i] = i*1
|
||||||
@ -14,43 +14,39 @@ main: {
|
|||||||
// i*2
|
// i*2
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
sta.z __16
|
|
||||||
// (SCREEN+1*40)[i] = i*2
|
// (SCREEN+1*40)[i] = i*2
|
||||||
sta SCREEN+1*$28,x
|
sta SCREEN+1*$28,x
|
||||||
// i*3
|
// i*3
|
||||||
txa
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z __16
|
adc.z $ff
|
||||||
|
sta.z __21
|
||||||
// (SCREEN+2*40)[i] = i*3
|
// (SCREEN+2*40)[i] = i*3
|
||||||
sta SCREEN+2*$28,x
|
sta SCREEN+2*$28,x
|
||||||
// i*4
|
// i*4
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
sta.z __18
|
|
||||||
// (SCREEN+3*40)[i] = i*4
|
// (SCREEN+3*40)[i] = i*4
|
||||||
sta SCREEN+3*$28,x
|
sta SCREEN+3*$28,x
|
||||||
// i*5
|
// i*5
|
||||||
txa
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z __18
|
adc.z $ff
|
||||||
|
tay
|
||||||
// (SCREEN+4*40)[i] = i*5
|
// (SCREEN+4*40)[i] = i*5
|
||||||
|
tya
|
||||||
sta SCREEN+4*$28,x
|
sta SCREEN+4*$28,x
|
||||||
// i*6
|
// i*6
|
||||||
txa
|
lda.z __21
|
||||||
clc
|
|
||||||
adc.z __16
|
|
||||||
asl
|
asl
|
||||||
// (SCREEN+5*40)[i] = i*6
|
// (SCREEN+5*40)[i] = i*6
|
||||||
sta SCREEN+5*$28,x
|
sta SCREEN+5*$28,x
|
||||||
// i*7
|
// i*7
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z __16
|
|
||||||
asl
|
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z $ff
|
adc.z $ff
|
||||||
|
sta.z __46
|
||||||
// (SCREEN+6*40)[i] = i*7
|
// (SCREEN+6*40)[i] = i*7
|
||||||
sta SCREEN+6*$28,x
|
sta SCREEN+6*$28,x
|
||||||
// i*8
|
// i*8
|
||||||
@ -67,61 +63,34 @@ main: {
|
|||||||
// (SCREEN+8*40)[i] = i*9
|
// (SCREEN+8*40)[i] = i*9
|
||||||
sta SCREEN+8*$28,x
|
sta SCREEN+8*$28,x
|
||||||
// i*10
|
// i*10
|
||||||
txa
|
tya
|
||||||
clc
|
|
||||||
adc.z __18
|
|
||||||
asl
|
asl
|
||||||
// (SCREEN+9*40)[i] = i*10
|
// (SCREEN+9*40)[i] = i*10
|
||||||
sta SCREEN+9*$28,x
|
sta SCREEN+9*$28,x
|
||||||
// i*11
|
// i*11
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z __18
|
|
||||||
asl
|
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z $ff
|
adc.z $ff
|
||||||
// (SCREEN+10*40)[i] = i*11
|
// (SCREEN+10*40)[i] = i*11
|
||||||
sta SCREEN+$a*$28,x
|
sta SCREEN+$a*$28,x
|
||||||
// i*12
|
// i*12
|
||||||
txa
|
lda.z __21
|
||||||
clc
|
|
||||||
adc.z __16
|
|
||||||
asl
|
asl
|
||||||
asl
|
asl
|
||||||
// (SCREEN+11*40)[i] = i*12
|
// (SCREEN+11*40)[i] = i*12
|
||||||
sta SCREEN+$b*$28,x
|
sta SCREEN+$b*$28,x
|
||||||
// i*13
|
// i*13
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z __16
|
|
||||||
asl
|
|
||||||
asl
|
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z $ff
|
adc.z $ff
|
||||||
// (SCREEN+12*40)[i] = i*13
|
// (SCREEN+12*40)[i] = i*13
|
||||||
sta SCREEN+$c*$28,x
|
sta SCREEN+$c*$28,x
|
||||||
// i*14
|
// i*14
|
||||||
txa
|
lda.z __46
|
||||||
clc
|
|
||||||
adc.z __16
|
|
||||||
asl
|
|
||||||
stx.z $ff
|
|
||||||
clc
|
|
||||||
adc.z $ff
|
|
||||||
asl
|
asl
|
||||||
// (SCREEN+13*40)[i] = i*14
|
// (SCREEN+13*40)[i] = i*14
|
||||||
sta SCREEN+$d*$28,x
|
sta SCREEN+$d*$28,x
|
||||||
// i*15
|
// i*15
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z __16
|
|
||||||
asl
|
|
||||||
stx.z $ff
|
|
||||||
clc
|
|
||||||
adc.z $ff
|
|
||||||
asl
|
|
||||||
stx.z $ff
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z $ff
|
adc.z $ff
|
||||||
@ -130,9 +99,7 @@ main: {
|
|||||||
// for(byte i: 0..17)
|
// for(byte i: 0..17)
|
||||||
inx
|
inx
|
||||||
cpx #$12
|
cpx #$12
|
||||||
beq !__b1+
|
bne __b1
|
||||||
jmp __b1
|
|
||||||
!__b1:
|
|
||||||
// }
|
// }
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
|
@ -8,51 +8,35 @@ main::@1: scope:[main] from main main::@1
|
|||||||
[2] *((const nomodify byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2
|
[2] *((const nomodify byte*) main::SCREEN + (byte) main::i#2) ← (byte) main::i#2
|
||||||
[3] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1
|
[3] (byte~) main::$16 ← (byte) main::i#2 << (byte) 1
|
||||||
[4] *((const nomodify byte*) main::SCREEN+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte~) main::$16
|
[4] *((const nomodify byte*) main::SCREEN+(byte)(number) 1*(number) $28 + (byte) main::i#2) ← (byte~) main::$16
|
||||||
[5] (byte~) main::$2 ← (byte~) main::$16 + (byte) main::i#2
|
[5] (byte~) main::$21 ← (byte~) main::$16 + (byte) main::i#2
|
||||||
[6] *((const nomodify byte*) main::SCREEN+(byte)(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$2
|
[6] *((const nomodify byte*) main::SCREEN+(byte)(number) 2*(number) $28 + (byte) main::i#2) ← (byte~) main::$21
|
||||||
[7] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2
|
[7] (byte~) main::$18 ← (byte) main::i#2 << (byte) 2
|
||||||
[8] *((const nomodify byte*) main::SCREEN+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte~) main::$18
|
[8] *((const nomodify byte*) main::SCREEN+(byte)(number) 3*(number) $28 + (byte) main::i#2) ← (byte~) main::$18
|
||||||
[9] (byte~) main::$4 ← (byte~) main::$18 + (byte) main::i#2
|
[9] (byte~) main::$30 ← (byte~) main::$18 + (byte) main::i#2
|
||||||
[10] *((const nomodify byte*) main::SCREEN+(byte)(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$4
|
[10] *((const nomodify byte*) main::SCREEN+(byte)(number) 4*(number) $28 + (byte) main::i#2) ← (byte~) main::$30
|
||||||
[11] (byte~) main::$21 ← (byte~) main::$16 + (byte) main::i#2
|
[11] (byte~) main::$25 ← (byte~) main::$21 << (byte) 1
|
||||||
[12] (byte~) main::$5 ← (byte~) main::$21 << (byte) 1
|
[12] *((const nomodify byte*) main::SCREEN+(byte)(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$25
|
||||||
[13] *((const nomodify byte*) main::SCREEN+(byte)(number) 5*(number) $28 + (byte) main::i#2) ← (byte~) main::$5
|
[13] (byte~) main::$46 ← (byte~) main::$25 + (byte) main::i#2
|
||||||
[14] (byte~) main::$24 ← (byte~) main::$16 + (byte) main::i#2
|
[14] *((const nomodify byte*) main::SCREEN+(byte)(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$46
|
||||||
[15] (byte~) main::$25 ← (byte~) main::$24 << (byte) 1
|
[15] (byte~) main::$27 ← (byte) main::i#2 << (byte) 3
|
||||||
[16] (byte~) main::$6 ← (byte~) main::$25 + (byte) main::i#2
|
[16] *((const nomodify byte*) main::SCREEN+(word)(number) 7*(number) $28 + (byte) main::i#2) ← (byte~) main::$27
|
||||||
[17] *((const nomodify byte*) main::SCREEN+(byte)(number) 6*(number) $28 + (byte) main::i#2) ← (byte~) main::$6
|
[17] (byte~) main::$8 ← (byte~) main::$27 + (byte) main::i#2
|
||||||
[18] (byte~) main::$27 ← (byte) main::i#2 << (byte) 3
|
[18] *((const nomodify byte*) main::SCREEN+(word)(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$8
|
||||||
[19] *((const nomodify byte*) main::SCREEN+(word)(number) 7*(number) $28 + (byte) main::i#2) ← (byte~) main::$27
|
[19] (byte~) main::$34 ← (byte~) main::$30 << (byte) 1
|
||||||
[20] (byte~) main::$8 ← (byte~) main::$27 + (byte) main::i#2
|
[20] *((const nomodify byte*) main::SCREEN+(word)(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$34
|
||||||
[21] *((const nomodify byte*) main::SCREEN+(word)(number) 8*(number) $28 + (byte) main::i#2) ← (byte~) main::$8
|
[21] (byte~) main::$10 ← (byte~) main::$34 + (byte) main::i#2
|
||||||
[22] (byte~) main::$30 ← (byte~) main::$18 + (byte) main::i#2
|
[22] *((const nomodify byte*) main::SCREEN+(word)(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$10
|
||||||
[23] (byte~) main::$9 ← (byte~) main::$30 << (byte) 1
|
[23] (byte~) main::$41 ← (byte~) main::$21 << (byte) 2
|
||||||
[24] *((const nomodify byte*) main::SCREEN+(word)(number) 9*(number) $28 + (byte) main::i#2) ← (byte~) main::$9
|
[24] *((const nomodify byte*) main::SCREEN+(word)(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$41
|
||||||
[25] (byte~) main::$33 ← (byte~) main::$18 + (byte) main::i#2
|
[25] (byte~) main::$12 ← (byte~) main::$41 + (byte) main::i#2
|
||||||
[26] (byte~) main::$34 ← (byte~) main::$33 << (byte) 1
|
[26] *((const nomodify byte*) main::SCREEN+(word)(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$12
|
||||||
[27] (byte~) main::$10 ← (byte~) main::$34 + (byte) main::i#2
|
[27] (byte~) main::$52 ← (byte~) main::$46 << (byte) 1
|
||||||
[28] *((const nomodify byte*) main::SCREEN+(word)(number) $a*(number) $28 + (byte) main::i#2) ← (byte~) main::$10
|
[28] *((const nomodify byte*) main::SCREEN+(word)(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$52
|
||||||
[29] (byte~) main::$37 ← (byte~) main::$16 + (byte) main::i#2
|
[29] (byte~) main::$14 ← (byte~) main::$52 + (byte) main::i#2
|
||||||
[30] (byte~) main::$11 ← (byte~) main::$37 << (byte) 2
|
[30] *((const nomodify byte*) main::SCREEN+(word)(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$14
|
||||||
[31] *((const nomodify byte*) main::SCREEN+(word)(number) $b*(number) $28 + (byte) main::i#2) ← (byte~) main::$11
|
[31] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
[32] (byte~) main::$40 ← (byte~) main::$16 + (byte) main::i#2
|
[32] if((byte) main::i#1!=(byte) $12) goto main::@1
|
||||||
[33] (byte~) main::$41 ← (byte~) main::$40 << (byte) 2
|
|
||||||
[34] (byte~) main::$12 ← (byte~) main::$41 + (byte) main::i#2
|
|
||||||
[35] *((const nomodify byte*) main::SCREEN+(word)(number) $c*(number) $28 + (byte) main::i#2) ← (byte~) main::$12
|
|
||||||
[36] (byte~) main::$44 ← (byte~) main::$16 + (byte) main::i#2
|
|
||||||
[37] (byte~) main::$45 ← (byte~) main::$44 << (byte) 1
|
|
||||||
[38] (byte~) main::$46 ← (byte~) main::$45 + (byte) main::i#2
|
|
||||||
[39] (byte~) main::$13 ← (byte~) main::$46 << (byte) 1
|
|
||||||
[40] *((const nomodify byte*) main::SCREEN+(word)(number) $d*(number) $28 + (byte) main::i#2) ← (byte~) main::$13
|
|
||||||
[41] (byte~) main::$49 ← (byte~) main::$16 + (byte) main::i#2
|
|
||||||
[42] (byte~) main::$50 ← (byte~) main::$49 << (byte) 1
|
|
||||||
[43] (byte~) main::$51 ← (byte~) main::$50 + (byte) main::i#2
|
|
||||||
[44] (byte~) main::$52 ← (byte~) main::$51 << (byte) 1
|
|
||||||
[45] (byte~) main::$14 ← (byte~) main::$52 + (byte) main::i#2
|
|
||||||
[46] *((const nomodify byte*) main::SCREEN+(word)(number) $e*(number) $28 + (byte) main::i#2) ← (byte~) main::$14
|
|
||||||
[47] (byte) main::i#1 ← ++ (byte) main::i#2
|
|
||||||
[48] if((byte) main::i#1!=(byte) $12) goto main::@1
|
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@1
|
main::@return: scope:[main] from main::@1
|
||||||
[49] return
|
[33] return
|
||||||
to:@return
|
to:@return
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,69 +1,37 @@
|
|||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$10 reg byte a 22.0
|
(byte~) main::$10 reg byte a 22.0
|
||||||
(byte~) main::$11 reg byte a 22.0
|
|
||||||
(byte~) main::$12 reg byte a 22.0
|
(byte~) main::$12 reg byte a 22.0
|
||||||
(byte~) main::$13 reg byte a 22.0
|
|
||||||
(byte~) main::$14 reg byte a 22.0
|
(byte~) main::$14 reg byte a 22.0
|
||||||
(byte~) main::$16 zp[1]:2 2.605263157894737
|
(byte~) main::$16 reg byte a 16.5
|
||||||
(byte~) main::$18 zp[1]:3 3.055555555555556
|
(byte~) main::$18 reg byte a 16.5
|
||||||
(byte~) main::$2 reg byte a 22.0
|
(byte~) main::$21 zp[1]:2 2.4444444444444446
|
||||||
(byte~) main::$21 reg byte a 22.0
|
(byte~) main::$25 reg byte a 16.5
|
||||||
(byte~) main::$24 reg byte a 22.0
|
|
||||||
(byte~) main::$25 reg byte a 22.0
|
|
||||||
(byte~) main::$27 reg byte a 16.5
|
(byte~) main::$27 reg byte a 16.5
|
||||||
(byte~) main::$30 reg byte a 22.0
|
(byte~) main::$30 reg byte y 3.3000000000000003
|
||||||
(byte~) main::$33 reg byte a 22.0
|
(byte~) main::$34 reg byte a 16.5
|
||||||
(byte~) main::$34 reg byte a 22.0
|
(byte~) main::$41 reg byte a 16.5
|
||||||
(byte~) main::$37 reg byte a 22.0
|
(byte~) main::$46 zp[1]:3 2.357142857142857
|
||||||
(byte~) main::$4 reg byte a 22.0
|
(byte~) main::$52 reg byte a 16.5
|
||||||
(byte~) main::$40 reg byte a 22.0
|
|
||||||
(byte~) main::$41 reg byte a 22.0
|
|
||||||
(byte~) main::$44 reg byte a 22.0
|
|
||||||
(byte~) main::$45 reg byte a 22.0
|
|
||||||
(byte~) main::$46 reg byte a 22.0
|
|
||||||
(byte~) main::$49 reg byte a 22.0
|
|
||||||
(byte~) main::$5 reg byte a 22.0
|
|
||||||
(byte~) main::$50 reg byte a 22.0
|
|
||||||
(byte~) main::$51 reg byte a 22.0
|
|
||||||
(byte~) main::$52 reg byte a 22.0
|
|
||||||
(byte~) main::$6 reg byte a 22.0
|
|
||||||
(byte~) main::$8 reg byte a 22.0
|
(byte~) main::$8 reg byte a 22.0
|
||||||
(byte~) main::$9 reg byte a 22.0
|
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
(const nomodify byte*) main::SCREEN = (byte*) 1024
|
(const nomodify byte*) main::SCREEN = (byte*) 1024
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#1 reg byte x 16.5
|
(byte) main::i#1 reg byte x 16.5
|
||||||
(byte) main::i#2 reg byte x 9.086956521739129
|
(byte) main::i#2 reg byte x 10.266666666666666
|
||||||
|
|
||||||
reg byte x [ main::i#2 main::i#1 ]
|
reg byte x [ main::i#2 main::i#1 ]
|
||||||
zp[1]:2 [ main::$16 ]
|
reg byte a [ main::$16 ]
|
||||||
reg byte a [ main::$2 ]
|
zp[1]:2 [ main::$21 ]
|
||||||
zp[1]:3 [ main::$18 ]
|
reg byte a [ main::$18 ]
|
||||||
reg byte a [ main::$4 ]
|
reg byte y [ main::$30 ]
|
||||||
reg byte a [ main::$21 ]
|
|
||||||
reg byte a [ main::$5 ]
|
|
||||||
reg byte a [ main::$24 ]
|
|
||||||
reg byte a [ main::$25 ]
|
reg byte a [ main::$25 ]
|
||||||
reg byte a [ main::$6 ]
|
zp[1]:3 [ main::$46 ]
|
||||||
reg byte a [ main::$27 ]
|
reg byte a [ main::$27 ]
|
||||||
reg byte a [ main::$8 ]
|
reg byte a [ main::$8 ]
|
||||||
reg byte a [ main::$30 ]
|
|
||||||
reg byte a [ main::$9 ]
|
|
||||||
reg byte a [ main::$33 ]
|
|
||||||
reg byte a [ main::$34 ]
|
reg byte a [ main::$34 ]
|
||||||
reg byte a [ main::$10 ]
|
reg byte a [ main::$10 ]
|
||||||
reg byte a [ main::$37 ]
|
|
||||||
reg byte a [ main::$11 ]
|
|
||||||
reg byte a [ main::$40 ]
|
|
||||||
reg byte a [ main::$41 ]
|
reg byte a [ main::$41 ]
|
||||||
reg byte a [ main::$12 ]
|
reg byte a [ main::$12 ]
|
||||||
reg byte a [ main::$44 ]
|
|
||||||
reg byte a [ main::$45 ]
|
|
||||||
reg byte a [ main::$46 ]
|
|
||||||
reg byte a [ main::$13 ]
|
|
||||||
reg byte a [ main::$49 ]
|
|
||||||
reg byte a [ main::$50 ]
|
|
||||||
reg byte a [ main::$51 ]
|
|
||||||
reg byte a [ main::$52 ]
|
reg byte a [ main::$52 ]
|
||||||
reg byte a [ main::$14 ]
|
reg byte a [ main::$14 ]
|
||||||
|
@ -243,9 +243,6 @@ Identical Phi Values (byte*) screen#19 (byte*) screen#17
|
|||||||
Identical Phi Values (byte*) screen#10 (byte*) screen#1
|
Identical Phi Values (byte*) screen#10 (byte*) screen#1
|
||||||
Identical Phi Values (byte*) screen#12 (byte*) screen#10
|
Identical Phi Values (byte*) screen#12 (byte*) screen#10
|
||||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||||
Identified duplicate assignment right side [16] (byte~) printf_uint::$2 ← > (word) printf_uint::uvalue#0
|
|
||||||
Identified duplicate assignment right side [24] (byte~) printf_uint::$6 ← < (word) printf_uint::uvalue#0
|
|
||||||
Successful SSA optimization Pass2DuplicateRValueIdentification
|
|
||||||
Simple Condition (bool~) cputs::$0 [3] if((byte) 0!=*((byte*) cputs::str#3)) goto cputs::@2
|
Simple Condition (bool~) cputs::$0 [3] if((byte) 0!=*((byte*) cputs::str#3)) goto cputs::@2
|
||||||
Successful SSA optimization Pass2ConditionalJumpSimplification
|
Successful SSA optimization Pass2ConditionalJumpSimplification
|
||||||
Constant (const byte*) cputs::str#1 = main::str
|
Constant (const byte*) cputs::str#1 = main::str
|
||||||
@ -275,29 +272,31 @@ Removing unused procedure block __start::@1
|
|||||||
Removing unused procedure block __start::@2
|
Removing unused procedure block __start::@2
|
||||||
Removing unused procedure block __start::@return
|
Removing unused procedure block __start::@return
|
||||||
Successful SSA optimization PassNEliminateEmptyStart
|
Successful SSA optimization PassNEliminateEmptyStart
|
||||||
Alias printf_uint::$2 = printf_uint::$0
|
Constant right-side identified [7] (byte~) printf_uint::$0 ← > (const word) printf_uint::uvalue#0
|
||||||
Alias printf_uint::$6 = printf_uint::$4
|
Constant right-side identified [11] (byte~) printf_uint::$2 ← > (const word) printf_uint::uvalue#0
|
||||||
Successful SSA optimization Pass2AliasElimination
|
Constant right-side identified [15] (byte~) printf_uint::$4 ← < (const word) printf_uint::uvalue#0
|
||||||
Constant right-side identified [7] (byte~) printf_uint::$2 ← > (const word) printf_uint::uvalue#0
|
Constant right-side identified [19] (byte~) printf_uint::$6 ← < (const word) printf_uint::uvalue#0
|
||||||
Constant right-side identified [14] (byte~) printf_uint::$6 ← < (const word) printf_uint::uvalue#0
|
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
|
Constant (const byte) printf_uint::$0 = >printf_uint::uvalue#0
|
||||||
Constant (const byte) printf_uint::$2 = >printf_uint::uvalue#0
|
Constant (const byte) printf_uint::$2 = >printf_uint::uvalue#0
|
||||||
|
Constant (const byte) printf_uint::$4 = <printf_uint::uvalue#0
|
||||||
Constant (const byte) printf_uint::$6 = <printf_uint::uvalue#0
|
Constant (const byte) printf_uint::$6 = <printf_uint::uvalue#0
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
Constant right-side identified [7] (byte~) printf_uint::$1 ← (const byte) printf_uint::$2 >> (byte) 4
|
Constant right-side identified [7] (byte~) printf_uint::$1 ← (const byte) printf_uint::$0 >> (byte) 4
|
||||||
Constant right-side identified [10] (byte~) printf_uint::$3 ← (const byte) printf_uint::$2 & (byte) $f
|
Constant right-side identified [10] (byte~) printf_uint::$3 ← (const byte) printf_uint::$2 & (byte) $f
|
||||||
Constant right-side identified [13] (byte~) printf_uint::$5 ← (const byte) printf_uint::$6 >> (byte) 4
|
Constant right-side identified [13] (byte~) printf_uint::$5 ← (const byte) printf_uint::$4 >> (byte) 4
|
||||||
Constant right-side identified [16] (byte~) printf_uint::$7 ← (const byte) printf_uint::$6 & (byte) $f
|
Constant right-side identified [16] (byte~) printf_uint::$7 ← (const byte) printf_uint::$6 & (byte) $f
|
||||||
Successful SSA optimization Pass2ConstantRValueConsolidation
|
Successful SSA optimization Pass2ConstantRValueConsolidation
|
||||||
Constant (const byte) printf_uint::$1 = printf_uint::$2>>4
|
Constant (const byte) printf_uint::$1 = printf_uint::$0>>4
|
||||||
Constant (const byte) printf_uint::$3 = printf_uint::$2&$f
|
Constant (const byte) printf_uint::$3 = printf_uint::$2&$f
|
||||||
Constant (const byte) printf_uint::$5 = printf_uint::$6>>4
|
Constant (const byte) printf_uint::$5 = printf_uint::$4>>4
|
||||||
Constant (const byte) printf_uint::$7 = printf_uint::$6&$f
|
Constant (const byte) printf_uint::$7 = printf_uint::$6&$f
|
||||||
Successful SSA optimization Pass2ConstantIdentification
|
Successful SSA optimization Pass2ConstantIdentification
|
||||||
Simplifying constant evaluating to zero (const byte) printf_uint::$2>>(byte) 4 in
|
Simplifying constant evaluating to zero (const byte) printf_uint::$0>>(byte) 4 in
|
||||||
Successful SSA optimization PassNSimplifyConstantZero
|
Successful SSA optimization PassNSimplifyConstantZero
|
||||||
Simplifying expression containing zero printf_hextab in [8] *((byte*) screen#1) ← *((const to_nomodify byte*) printf_hextab + (const byte) printf_uint::$1)
|
Simplifying expression containing zero printf_hextab in [8] *((byte*) screen#1) ← *((const to_nomodify byte*) printf_hextab + (const byte) printf_uint::$1)
|
||||||
Successful SSA optimization PassNSimplifyExpressionWithZero
|
Successful SSA optimization PassNSimplifyExpressionWithZero
|
||||||
|
Eliminating unused constant (const byte) printf_uint::$0
|
||||||
Eliminating unused constant (const byte) printf_uint::$1
|
Eliminating unused constant (const byte) printf_uint::$1
|
||||||
Successful SSA optimization PassNEliminateUnusedVars
|
Successful SSA optimization PassNEliminateUnusedVars
|
||||||
Inlining constant with var siblings (const byte*) cputs::str#1
|
Inlining constant with var siblings (const byte*) cputs::str#1
|
||||||
@ -310,6 +309,7 @@ Constant inlined printf_uint::$3 = >(const word) main::pct&(byte) $f
|
|||||||
Constant inlined printf_uint::uvalue#0 = (const word) main::pct
|
Constant inlined printf_uint::uvalue#0 = (const word) main::pct
|
||||||
Constant inlined printf_uint::$2 = >(const word) main::pct
|
Constant inlined printf_uint::$2 = >(const word) main::pct
|
||||||
Constant inlined printf_uint::$5 = <(const word) main::pct>>(byte) 4
|
Constant inlined printf_uint::$5 = <(const word) main::pct>>(byte) 4
|
||||||
|
Constant inlined printf_uint::$4 = <(const word) main::pct
|
||||||
Constant inlined printf_uint::$7 = <(const word) main::pct&(byte) $f
|
Constant inlined printf_uint::$7 = <(const word) main::pct&(byte) $f
|
||||||
Constant inlined printf_uint::$6 = <(const word) main::pct
|
Constant inlined printf_uint::$6 = <(const word) main::pct
|
||||||
Successful SSA optimization Pass2ConstantInlining
|
Successful SSA optimization Pass2ConstantInlining
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
:BasicUpstart(main)
|
:BasicUpstart(main)
|
||||||
.pc = $80d "Program"
|
.pc = $80d "Program"
|
||||||
main: {
|
main: {
|
||||||
.label __3 = 4
|
.label __4 = 4
|
||||||
.label screen = 2
|
.label screen = 2
|
||||||
lda #<$400
|
lda #<$400
|
||||||
sta.z screen
|
sta.z screen
|
||||||
@ -14,14 +14,15 @@ main: {
|
|||||||
// i*2
|
// i*2
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
sta.z __3
|
|
||||||
// i*2+i
|
// i*2+i
|
||||||
txa
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z __3
|
adc.z $ff
|
||||||
|
sta.z __4
|
||||||
// i*2+i+3
|
// i*2+i+3
|
||||||
|
lda #3
|
||||||
clc
|
clc
|
||||||
adc #3
|
adc.z __4
|
||||||
// *screen++ = i*2+i+3
|
// *screen++ = i*2+i+3
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
@ -30,13 +31,10 @@ main: {
|
|||||||
bne !+
|
bne !+
|
||||||
inc.z screen+1
|
inc.z screen+1
|
||||||
!:
|
!:
|
||||||
// i*2+i
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z __3
|
|
||||||
// i*2+i+3
|
// i*2+i+3
|
||||||
|
lda #3
|
||||||
clc
|
clc
|
||||||
adc #3
|
adc.z __4
|
||||||
// *screen++ = i*2+i+3
|
// *screen++ = i*2+i+3
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
|
@ -7,17 +7,16 @@ main::@1: scope:[main] from main main::@1
|
|||||||
[1] (byte*) main::screen#3 ← phi( main/(byte*) 1024 main::@1/(byte*) main::screen#2 )
|
[1] (byte*) main::screen#3 ← phi( main/(byte*) 1024 main::@1/(byte*) main::screen#2 )
|
||||||
[1] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 )
|
[1] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 )
|
||||||
[2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1
|
[2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1
|
||||||
[3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2
|
[3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2
|
||||||
[4] (byte~) main::$2 ← (byte~) main::$1 + (byte) 3
|
[4] (byte~) main::$2 ← (byte~) main::$4 + (byte) 3
|
||||||
[5] *((byte*) main::screen#3) ← (byte~) main::$2
|
[5] *((byte*) main::screen#3) ← (byte~) main::$2
|
||||||
[6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3
|
[6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3
|
||||||
[7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2
|
[7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3
|
||||||
[8] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3
|
[8] *((byte*) main::screen#1) ← (byte~) main::$5
|
||||||
[9] *((byte*) main::screen#1) ← (byte~) main::$5
|
[9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1
|
||||||
[10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1
|
[10] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
[11] (byte) main::i#1 ← ++ (byte) main::i#2
|
[11] if((byte) main::i#1!=(byte) 3) goto main::@1
|
||||||
[12] if((byte) main::i#1!=(byte) 3) goto main::@1
|
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@1
|
main::@return: scope:[main] from main::@1
|
||||||
[13] return
|
[12] return
|
||||||
to:@return
|
to:@return
|
||||||
|
@ -111,6 +111,10 @@ Finalized unsigned number type (byte) 3
|
|||||||
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
Successful SSA optimization PassNFinalizeNumberTypeConversions
|
||||||
Alias main::$3 = main::$0
|
Alias main::$3 = main::$0
|
||||||
Successful SSA optimization Pass2AliasElimination
|
Successful SSA optimization Pass2AliasElimination
|
||||||
|
Identified duplicate assignment right side [7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2
|
||||||
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||||
|
Alias main::$4 = main::$1
|
||||||
|
Successful SSA optimization Pass2AliasElimination
|
||||||
Rewriting multiplication to use shift [1] (byte~) main::$3 ← (byte) main::i#2 * (byte) 2
|
Rewriting multiplication to use shift [1] (byte~) main::$3 ← (byte) main::i#2 * (byte) 2
|
||||||
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
Successful SSA optimization Pass2MultiplyToShiftRewriting
|
||||||
Inlining constant with var siblings (const byte*) main::screen#0
|
Inlining constant with var siblings (const byte*) main::screen#0
|
||||||
@ -123,8 +127,8 @@ Adding NOP phi() at start of main
|
|||||||
CALL GRAPH
|
CALL GRAPH
|
||||||
|
|
||||||
Created 2 initial phi equivalence classes
|
Created 2 initial phi equivalence classes
|
||||||
Coalesced [14] main::i#3 ← main::i#1
|
Coalesced [13] main::i#3 ← main::i#1
|
||||||
Coalesced [15] main::screen#4 ← main::screen#2
|
Coalesced [14] main::screen#4 ← main::screen#2
|
||||||
Coalesced down to 2 phi equivalence classes
|
Coalesced down to 2 phi equivalence classes
|
||||||
Culled Empty Block (label) main::@2
|
Culled Empty Block (label) main::@2
|
||||||
Adding NOP phi() at start of main
|
Adding NOP phi() at start of main
|
||||||
@ -139,34 +143,32 @@ main::@1: scope:[main] from main main::@1
|
|||||||
[1] (byte*) main::screen#3 ← phi( main/(byte*) 1024 main::@1/(byte*) main::screen#2 )
|
[1] (byte*) main::screen#3 ← phi( main/(byte*) 1024 main::@1/(byte*) main::screen#2 )
|
||||||
[1] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 )
|
[1] (byte) main::i#2 ← phi( main/(byte) 0 main::@1/(byte) main::i#1 )
|
||||||
[2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1
|
[2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1
|
||||||
[3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2
|
[3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2
|
||||||
[4] (byte~) main::$2 ← (byte~) main::$1 + (byte) 3
|
[4] (byte~) main::$2 ← (byte~) main::$4 + (byte) 3
|
||||||
[5] *((byte*) main::screen#3) ← (byte~) main::$2
|
[5] *((byte*) main::screen#3) ← (byte~) main::$2
|
||||||
[6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3
|
[6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3
|
||||||
[7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2
|
[7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3
|
||||||
[8] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3
|
[8] *((byte*) main::screen#1) ← (byte~) main::$5
|
||||||
[9] *((byte*) main::screen#1) ← (byte~) main::$5
|
[9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1
|
||||||
[10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1
|
[10] (byte) main::i#1 ← ++ (byte) main::i#2
|
||||||
[11] (byte) main::i#1 ← ++ (byte) main::i#2
|
[11] if((byte) main::i#1!=(byte) 3) goto main::@1
|
||||||
[12] if((byte) main::i#1!=(byte) 3) goto main::@1
|
|
||||||
to:main::@return
|
to:main::@return
|
||||||
main::@return: scope:[main] from main::@1
|
main::@return: scope:[main] from main::@1
|
||||||
[13] return
|
[12] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
|
|
||||||
VARIABLE REGISTER WEIGHTS
|
VARIABLE REGISTER WEIGHTS
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$1 22.0
|
|
||||||
(byte~) main::$2 22.0
|
(byte~) main::$2 22.0
|
||||||
(byte~) main::$3 6.6000000000000005
|
(byte~) main::$3 22.0
|
||||||
(byte~) main::$4 22.0
|
(byte~) main::$4 8.25
|
||||||
(byte~) main::$5 22.0
|
(byte~) main::$5 22.0
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#1 16.5
|
(byte) main::i#1 16.5
|
||||||
(byte) main::i#2 5.5
|
(byte) main::i#2 4.888888888888889
|
||||||
(byte*) main::screen
|
(byte*) main::screen
|
||||||
(byte*) main::screen#1 8.25
|
(byte*) main::screen#1 11.0
|
||||||
(byte*) main::screen#2 7.333333333333333
|
(byte*) main::screen#2 7.333333333333333
|
||||||
(byte*) main::screen#3 6.6000000000000005
|
(byte*) main::screen#3 6.6000000000000005
|
||||||
|
|
||||||
@ -174,28 +176,25 @@ Initial phi equivalence classes
|
|||||||
[ main::i#2 main::i#1 ]
|
[ main::i#2 main::i#1 ]
|
||||||
[ main::screen#3 main::screen#2 ]
|
[ main::screen#3 main::screen#2 ]
|
||||||
Added variable main::$3 to live range equivalence class [ main::$3 ]
|
Added variable main::$3 to live range equivalence class [ main::$3 ]
|
||||||
Added variable main::$1 to live range equivalence class [ main::$1 ]
|
Added variable main::$4 to live range equivalence class [ main::$4 ]
|
||||||
Added variable main::$2 to live range equivalence class [ main::$2 ]
|
Added variable main::$2 to live range equivalence class [ main::$2 ]
|
||||||
Added variable main::screen#1 to live range equivalence class [ main::screen#1 ]
|
Added variable main::screen#1 to live range equivalence class [ main::screen#1 ]
|
||||||
Added variable main::$4 to live range equivalence class [ main::$4 ]
|
|
||||||
Added variable main::$5 to live range equivalence class [ main::$5 ]
|
Added variable main::$5 to live range equivalence class [ main::$5 ]
|
||||||
Complete equivalence classes
|
Complete equivalence classes
|
||||||
[ main::i#2 main::i#1 ]
|
[ main::i#2 main::i#1 ]
|
||||||
[ main::screen#3 main::screen#2 ]
|
[ main::screen#3 main::screen#2 ]
|
||||||
[ main::$3 ]
|
[ main::$3 ]
|
||||||
[ main::$1 ]
|
[ main::$4 ]
|
||||||
[ main::$2 ]
|
[ main::$2 ]
|
||||||
[ main::screen#1 ]
|
[ main::screen#1 ]
|
||||||
[ main::$4 ]
|
|
||||||
[ main::$5 ]
|
[ main::$5 ]
|
||||||
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
Allocated zp[1]:2 [ main::i#2 main::i#1 ]
|
||||||
Allocated zp[2]:3 [ main::screen#3 main::screen#2 ]
|
Allocated zp[2]:3 [ main::screen#3 main::screen#2 ]
|
||||||
Allocated zp[1]:5 [ main::$3 ]
|
Allocated zp[1]:5 [ main::$3 ]
|
||||||
Allocated zp[1]:6 [ main::$1 ]
|
Allocated zp[1]:6 [ main::$4 ]
|
||||||
Allocated zp[1]:7 [ main::$2 ]
|
Allocated zp[1]:7 [ main::$2 ]
|
||||||
Allocated zp[2]:8 [ main::screen#1 ]
|
Allocated zp[2]:8 [ main::screen#1 ]
|
||||||
Allocated zp[1]:10 [ main::$4 ]
|
Allocated zp[1]:10 [ main::$5 ]
|
||||||
Allocated zp[1]:11 [ main::$5 ]
|
|
||||||
|
|
||||||
INITIAL ASM
|
INITIAL ASM
|
||||||
Target platform is c64basic / MOS6502X
|
Target platform is c64basic / MOS6502X
|
||||||
@ -208,11 +207,10 @@ Target platform is c64basic / MOS6502X
|
|||||||
// Global Constants & labels
|
// Global Constants & labels
|
||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label __1 = 6
|
|
||||||
.label __2 = 7
|
.label __2 = 7
|
||||||
.label __3 = 5
|
.label __3 = 5
|
||||||
.label __4 = $a
|
.label __4 = 6
|
||||||
.label __5 = $b
|
.label __5 = $a
|
||||||
.label screen = 8
|
.label screen = 8
|
||||||
.label screen_1 = 3
|
.label screen_1 = 3
|
||||||
.label i = 2
|
.label i = 2
|
||||||
@ -238,13 +236,13 @@ main: {
|
|||||||
lda.z i
|
lda.z i
|
||||||
asl
|
asl
|
||||||
sta.z __3
|
sta.z __3
|
||||||
// [3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
// [3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
||||||
lda.z __3
|
lda.z __3
|
||||||
clc
|
clc
|
||||||
adc.z i
|
adc.z i
|
||||||
sta.z __1
|
sta.z __4
|
||||||
// [4] (byte~) main::$2 ← (byte~) main::$1 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1
|
// [4] (byte~) main::$2 ← (byte~) main::$4 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1
|
||||||
lax.z __1
|
lax.z __4
|
||||||
axs #-[3]
|
axs #-[3]
|
||||||
stx.z __2
|
stx.z __2
|
||||||
// [5] *((byte*) main::screen#3) ← (byte~) main::$2 -- _deref_pbuz1=vbuz2
|
// [5] *((byte*) main::screen#3) ← (byte~) main::$2 -- _deref_pbuz1=vbuz2
|
||||||
@ -259,20 +257,15 @@ main: {
|
|||||||
lda.z screen_1+1
|
lda.z screen_1+1
|
||||||
adc #0
|
adc #0
|
||||||
sta.z screen+1
|
sta.z screen+1
|
||||||
// [7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 -- vbuz1=vbuz2_plus_vbuz3
|
// [7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1
|
||||||
lda.z __3
|
|
||||||
clc
|
|
||||||
adc.z i
|
|
||||||
sta.z __4
|
|
||||||
// [8] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 -- vbuz1=vbuz2_plus_vbuc1
|
|
||||||
lax.z __4
|
lax.z __4
|
||||||
axs #-[3]
|
axs #-[3]
|
||||||
stx.z __5
|
stx.z __5
|
||||||
// [9] *((byte*) main::screen#1) ← (byte~) main::$5 -- _deref_pbuz1=vbuz2
|
// [8] *((byte*) main::screen#1) ← (byte~) main::$5 -- _deref_pbuz1=vbuz2
|
||||||
lda.z __5
|
lda.z __5
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
// [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz2
|
// [9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz2
|
||||||
lda.z screen
|
lda.z screen
|
||||||
clc
|
clc
|
||||||
adc #1
|
adc #1
|
||||||
@ -280,16 +273,16 @@ main: {
|
|||||||
lda.z screen+1
|
lda.z screen+1
|
||||||
adc #0
|
adc #0
|
||||||
sta.z screen_1+1
|
sta.z screen_1+1
|
||||||
// [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
// [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z i
|
inc.z i
|
||||||
// [12] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
// [11] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuz1_neq_vbuc1_then_la1
|
||||||
lda #3
|
lda #3
|
||||||
cmp.z i
|
cmp.z i
|
||||||
bne __b1_from___b1
|
bne __b1_from___b1
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// main::@return
|
// main::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [13] return
|
// [12] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -297,45 +290,43 @@ main: {
|
|||||||
REGISTER UPLIFT POTENTIAL REGISTERS
|
REGISTER UPLIFT POTENTIAL REGISTERS
|
||||||
Statement [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte a
|
Statement [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||||
Statement [3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ( [ main::i#2 main::screen#3 main::$3 main::$1 ] { } ) always clobbers reg byte a
|
Statement [3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$4 ] ( [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::$3 ]
|
Statement [5] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$4 ] ( [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte y
|
||||||
Statement [5] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$3 ] ( [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte y
|
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:2 [ main::i#2 main::i#1 ]
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::$3 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:6 [ main::$4 ]
|
||||||
Statement [6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$3 main::screen#1 ] ( [ main::i#2 main::$3 main::screen#1 ] { } ) always clobbers reg byte a
|
Statement [6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$4 main::screen#1 ] ( [ main::i#2 main::$4 main::screen#1 ] { } ) always clobbers reg byte a
|
||||||
Statement [7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#1 main::$4 ] ( [ main::i#2 main::screen#1 main::$4 ] { } ) always clobbers reg byte a
|
Removing always clobbered register reg byte a as potential for zp[1]:6 [ main::$4 ]
|
||||||
Statement [9] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y
|
Statement [7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 [ main::i#2 main::screen#1 main::$5 ] ( [ main::i#2 main::screen#1 main::$5 ] { } ) always clobbers reg byte a
|
||||||
Statement [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a
|
Statement [8] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y
|
||||||
|
Statement [9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte a
|
Statement [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 [ main::i#2 main::screen#3 main::$3 ] ( [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte a
|
||||||
Statement [3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$3 main::$1 ] ( [ main::i#2 main::screen#3 main::$3 main::$1 ] { } ) always clobbers reg byte a
|
Statement [3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#3 main::$4 ] ( [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte a
|
||||||
Statement [5] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$3 ] ( [ main::i#2 main::screen#3 main::$3 ] { } ) always clobbers reg byte y
|
Statement [4] (byte~) main::$2 ← (byte~) main::$4 + (byte) 3 [ main::i#2 main::screen#3 main::$4 main::$2 ] ( [ main::i#2 main::screen#3 main::$4 main::$2 ] { } ) always clobbers reg byte a
|
||||||
Statement [6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$3 main::screen#1 ] ( [ main::i#2 main::$3 main::screen#1 ] { } ) always clobbers reg byte a
|
Statement [5] *((byte*) main::screen#3) ← (byte~) main::$2 [ main::i#2 main::screen#3 main::$4 ] ( [ main::i#2 main::screen#3 main::$4 ] { } ) always clobbers reg byte y
|
||||||
Statement [7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 [ main::i#2 main::screen#1 main::$4 ] ( [ main::i#2 main::screen#1 main::$4 ] { } ) always clobbers reg byte a
|
Statement [6] (byte*) main::screen#1 ← ++ (byte*) main::screen#3 [ main::i#2 main::$4 main::screen#1 ] ( [ main::i#2 main::$4 main::screen#1 ] { } ) always clobbers reg byte a
|
||||||
Statement [9] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y
|
Statement [7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 [ main::i#2 main::screen#1 main::$5 ] ( [ main::i#2 main::screen#1 main::$5 ] { } ) always clobbers reg byte a
|
||||||
Statement [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a
|
Statement [8] *((byte*) main::screen#1) ← (byte~) main::$5 [ main::i#2 main::screen#1 ] ( [ main::i#2 main::screen#1 ] { } ) always clobbers reg byte y
|
||||||
|
Statement [9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 [ main::i#2 main::screen#2 ] ( [ main::i#2 main::screen#2 ] { } ) always clobbers reg byte a
|
||||||
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x ,
|
Potential registers zp[1]:2 [ main::i#2 main::i#1 ] : zp[1]:2 , reg byte x ,
|
||||||
Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 ,
|
Potential registers zp[2]:3 [ main::screen#3 main::screen#2 ] : zp[2]:3 ,
|
||||||
Potential registers zp[1]:5 [ main::$3 ] : zp[1]:5 , reg byte x ,
|
Potential registers zp[1]:5 [ main::$3 ] : zp[1]:5 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:6 [ main::$1 ] : zp[1]:6 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp[1]:6 [ main::$4 ] : zp[1]:6 , reg byte x ,
|
||||||
Potential registers zp[1]:7 [ main::$2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp[1]:7 [ main::$2 ] : zp[1]:7 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[2]:8 [ main::screen#1 ] : zp[2]:8 ,
|
Potential registers zp[2]:8 [ main::screen#1 ] : zp[2]:8 ,
|
||||||
Potential registers zp[1]:10 [ main::$4 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
Potential registers zp[1]:10 [ main::$5 ] : zp[1]:10 , reg byte a , reg byte x , reg byte y ,
|
||||||
Potential registers zp[1]:11 [ main::$5 ] : zp[1]:11 , reg byte a , reg byte x , reg byte y ,
|
|
||||||
|
|
||||||
REGISTER UPLIFT SCOPES
|
REGISTER UPLIFT SCOPES
|
||||||
Uplift Scope [main] 22: zp[1]:2 [ main::i#2 main::i#1 ] 22: zp[1]:6 [ main::$1 ] 22: zp[1]:7 [ main::$2 ] 22: zp[1]:10 [ main::$4 ] 22: zp[1]:11 [ main::$5 ] 13.93: zp[2]:3 [ main::screen#3 main::screen#2 ] 8.25: zp[2]:8 [ main::screen#1 ] 6.6: zp[1]:5 [ main::$3 ]
|
Uplift Scope [main] 22: zp[1]:5 [ main::$3 ] 22: zp[1]:7 [ main::$2 ] 22: zp[1]:10 [ main::$5 ] 21.39: zp[1]:2 [ main::i#2 main::i#1 ] 13.93: zp[2]:3 [ main::screen#3 main::screen#2 ] 11: zp[2]:8 [ main::screen#1 ] 8.25: zp[1]:6 [ main::$4 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 1151 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] zp[1]:11 [ main::$5 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:8 [ main::screen#1 ] zp[1]:5 [ main::$3 ]
|
Uplifting [main] best 1091 combination reg byte a [ main::$3 ] reg byte a [ main::$2 ] reg byte a [ main::$5 ] reg byte x [ main::i#2 main::i#1 ] zp[2]:3 [ main::screen#3 main::screen#2 ] zp[2]:8 [ main::screen#1 ] zp[1]:6 [ main::$4 ]
|
||||||
Limited combination testing to 100 combinations of 1024 possible.
|
Limited combination testing to 100 combinations of 256 possible.
|
||||||
Uplifting [] best 1151 combination
|
Uplifting [] best 1091 combination
|
||||||
Attempting to uplift remaining variables inzp[1]:11 [ main::$5 ]
|
Attempting to uplift remaining variables inzp[1]:6 [ main::$4 ]
|
||||||
Uplifting [main] best 1091 combination reg byte a [ main::$5 ]
|
Uplifting [main] best 1091 combination zp[1]:6 [ main::$4 ]
|
||||||
Attempting to uplift remaining variables inzp[1]:5 [ main::$3 ]
|
|
||||||
Uplifting [main] best 1091 combination zp[1]:5 [ main::$3 ]
|
|
||||||
Coalescing zero page register [ zp[2]:3 [ main::screen#3 main::screen#2 ] ] with [ zp[2]:8 [ main::screen#1 ] ] - score: 2
|
Coalescing zero page register [ zp[2]:3 [ main::screen#3 main::screen#2 ] ] with [ zp[2]:8 [ main::screen#1 ] ] - score: 2
|
||||||
Allocated (was zp[2]:3) zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ]
|
Allocated (was zp[2]:3) zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ]
|
||||||
Allocated (was zp[1]:5) zp[1]:4 [ main::$3 ]
|
Allocated (was zp[1]:6) zp[1]:4 [ main::$4 ]
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
// File Comments
|
// File Comments
|
||||||
@ -347,7 +338,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||||||
// Global Constants & labels
|
// Global Constants & labels
|
||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label __3 = 4
|
.label __4 = 4
|
||||||
.label screen = 2
|
.label screen = 2
|
||||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||||
__b1_from_main:
|
__b1_from_main:
|
||||||
@ -366,17 +357,18 @@ main: {
|
|||||||
jmp __b1
|
jmp __b1
|
||||||
// main::@1
|
// main::@1
|
||||||
__b1:
|
__b1:
|
||||||
// [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuxx_rol_1
|
// [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
sta.z __3
|
// [3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 -- vbuz1=vbuaa_plus_vbuxx
|
||||||
// [3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
stx.z $ff
|
||||||
txa
|
|
||||||
clc
|
clc
|
||||||
adc.z __3
|
adc.z $ff
|
||||||
// [4] (byte~) main::$2 ← (byte~) main::$1 + (byte) 3 -- vbuaa=vbuaa_plus_vbuc1
|
sta.z __4
|
||||||
|
// [4] (byte~) main::$2 ← (byte~) main::$4 + (byte) 3 -- vbuaa=vbuz1_plus_vbuc1
|
||||||
|
lda #3
|
||||||
clc
|
clc
|
||||||
adc #3
|
adc.z __4
|
||||||
// [5] *((byte*) main::screen#3) ← (byte~) main::$2 -- _deref_pbuz1=vbuaa
|
// [5] *((byte*) main::screen#3) ← (byte~) main::$2 -- _deref_pbuz1=vbuaa
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
@ -385,30 +377,27 @@ main: {
|
|||||||
bne !+
|
bne !+
|
||||||
inc.z screen+1
|
inc.z screen+1
|
||||||
!:
|
!:
|
||||||
// [7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
// [7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 -- vbuaa=vbuz1_plus_vbuc1
|
||||||
txa
|
lda #3
|
||||||
clc
|
clc
|
||||||
adc.z __3
|
adc.z __4
|
||||||
// [8] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 -- vbuaa=vbuaa_plus_vbuc1
|
// [8] *((byte*) main::screen#1) ← (byte~) main::$5 -- _deref_pbuz1=vbuaa
|
||||||
clc
|
|
||||||
adc #3
|
|
||||||
// [9] *((byte*) main::screen#1) ← (byte~) main::$5 -- _deref_pbuz1=vbuaa
|
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
// [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1
|
// [9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1
|
||||||
inc.z screen
|
inc.z screen
|
||||||
bne !+
|
bne !+
|
||||||
inc.z screen+1
|
inc.z screen+1
|
||||||
!:
|
!:
|
||||||
// [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
// [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [12] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
// [11] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
||||||
cpx #3
|
cpx #3
|
||||||
bne __b1_from___b1
|
bne __b1_from___b1
|
||||||
jmp __breturn
|
jmp __breturn
|
||||||
// main::@return
|
// main::@return
|
||||||
__breturn:
|
__breturn:
|
||||||
// [13] return
|
// [12] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
@ -428,27 +417,25 @@ Succesful ASM optimization Pass5NextJumpElimination
|
|||||||
|
|
||||||
FINAL SYMBOL TABLE
|
FINAL SYMBOL TABLE
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$1 reg byte a 22.0
|
|
||||||
(byte~) main::$2 reg byte a 22.0
|
(byte~) main::$2 reg byte a 22.0
|
||||||
(byte~) main::$3 zp[1]:4 6.6000000000000005
|
(byte~) main::$3 reg byte a 22.0
|
||||||
(byte~) main::$4 reg byte a 22.0
|
(byte~) main::$4 zp[1]:4 8.25
|
||||||
(byte~) main::$5 reg byte a 22.0
|
(byte~) main::$5 reg byte a 22.0
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#1 reg byte x 16.5
|
(byte) main::i#1 reg byte x 16.5
|
||||||
(byte) main::i#2 reg byte x 5.5
|
(byte) main::i#2 reg byte x 4.888888888888889
|
||||||
(byte*) main::screen
|
(byte*) main::screen
|
||||||
(byte*) main::screen#1 screen zp[2]:2 8.25
|
(byte*) main::screen#1 screen zp[2]:2 11.0
|
||||||
(byte*) main::screen#2 screen zp[2]:2 7.333333333333333
|
(byte*) main::screen#2 screen zp[2]:2 7.333333333333333
|
||||||
(byte*) main::screen#3 screen zp[2]:2 6.6000000000000005
|
(byte*) main::screen#3 screen zp[2]:2 6.6000000000000005
|
||||||
|
|
||||||
reg byte x [ main::i#2 main::i#1 ]
|
reg byte x [ main::i#2 main::i#1 ]
|
||||||
zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ]
|
zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ]
|
||||||
zp[1]:4 [ main::$3 ]
|
reg byte a [ main::$3 ]
|
||||||
reg byte a [ main::$1 ]
|
zp[1]:4 [ main::$4 ]
|
||||||
reg byte a [ main::$2 ]
|
reg byte a [ main::$2 ]
|
||||||
reg byte a [ main::$4 ]
|
|
||||||
reg byte a [ main::$5 ]
|
reg byte a [ main::$5 ]
|
||||||
|
|
||||||
|
|
||||||
@ -464,7 +451,7 @@ Score: 891
|
|||||||
// Global Constants & labels
|
// Global Constants & labels
|
||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label __3 = 4
|
.label __4 = 4
|
||||||
.label screen = 2
|
.label screen = 2
|
||||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||||
// [1] phi (byte*) main::screen#3 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
// [1] phi (byte*) main::screen#3 = (byte*) 1024 [phi:main->main::@1#0] -- pbuz1=pbuc1
|
||||||
@ -480,19 +467,20 @@ main: {
|
|||||||
// main::@1
|
// main::@1
|
||||||
__b1:
|
__b1:
|
||||||
// i*2
|
// i*2
|
||||||
// [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuz1=vbuxx_rol_1
|
// [2] (byte~) main::$3 ← (byte) main::i#2 << (byte) 1 -- vbuaa=vbuxx_rol_1
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
sta.z __3
|
|
||||||
// i*2+i
|
// i*2+i
|
||||||
// [3] (byte~) main::$1 ← (byte~) main::$3 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
// [3] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 -- vbuz1=vbuaa_plus_vbuxx
|
||||||
txa
|
stx.z $ff
|
||||||
clc
|
clc
|
||||||
adc.z __3
|
adc.z $ff
|
||||||
|
sta.z __4
|
||||||
// i*2+i+3
|
// i*2+i+3
|
||||||
// [4] (byte~) main::$2 ← (byte~) main::$1 + (byte) 3 -- vbuaa=vbuaa_plus_vbuc1
|
// [4] (byte~) main::$2 ← (byte~) main::$4 + (byte) 3 -- vbuaa=vbuz1_plus_vbuc1
|
||||||
|
lda #3
|
||||||
clc
|
clc
|
||||||
adc #3
|
adc.z __4
|
||||||
// *screen++ = i*2+i+3
|
// *screen++ = i*2+i+3
|
||||||
// [5] *((byte*) main::screen#3) ← (byte~) main::$2 -- _deref_pbuz1=vbuaa
|
// [5] *((byte*) main::screen#3) ← (byte~) main::$2 -- _deref_pbuz1=vbuaa
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -503,34 +491,30 @@ main: {
|
|||||||
bne !+
|
bne !+
|
||||||
inc.z screen+1
|
inc.z screen+1
|
||||||
!:
|
!:
|
||||||
// i*2+i
|
|
||||||
// [7] (byte~) main::$4 ← (byte~) main::$3 + (byte) main::i#2 -- vbuaa=vbuz1_plus_vbuxx
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z __3
|
|
||||||
// i*2+i+3
|
// i*2+i+3
|
||||||
// [8] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 -- vbuaa=vbuaa_plus_vbuc1
|
// [7] (byte~) main::$5 ← (byte~) main::$4 + (byte) 3 -- vbuaa=vbuz1_plus_vbuc1
|
||||||
|
lda #3
|
||||||
clc
|
clc
|
||||||
adc #3
|
adc.z __4
|
||||||
// *screen++ = i*2+i+3
|
// *screen++ = i*2+i+3
|
||||||
// [9] *((byte*) main::screen#1) ← (byte~) main::$5 -- _deref_pbuz1=vbuaa
|
// [8] *((byte*) main::screen#1) ← (byte~) main::$5 -- _deref_pbuz1=vbuaa
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (screen),y
|
sta (screen),y
|
||||||
// *screen++ = i*2+i+3;
|
// *screen++ = i*2+i+3;
|
||||||
// [10] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1
|
// [9] (byte*) main::screen#2 ← ++ (byte*) main::screen#1 -- pbuz1=_inc_pbuz1
|
||||||
inc.z screen
|
inc.z screen
|
||||||
bne !+
|
bne !+
|
||||||
inc.z screen+1
|
inc.z screen+1
|
||||||
!:
|
!:
|
||||||
// for( byte i: 0..2)
|
// for( byte i: 0..2)
|
||||||
// [11] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
// [10] (byte) main::i#1 ← ++ (byte) main::i#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [12] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
// [11] if((byte) main::i#1!=(byte) 3) goto main::@1 -- vbuxx_neq_vbuc1_then_la1
|
||||||
cpx #3
|
cpx #3
|
||||||
bne __b1
|
bne __b1
|
||||||
// main::@return
|
// main::@return
|
||||||
// }
|
// }
|
||||||
// [13] return
|
// [12] return
|
||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
// File Data
|
// File Data
|
||||||
|
@ -1,23 +1,21 @@
|
|||||||
(void()) main()
|
(void()) main()
|
||||||
(byte~) main::$1 reg byte a 22.0
|
|
||||||
(byte~) main::$2 reg byte a 22.0
|
(byte~) main::$2 reg byte a 22.0
|
||||||
(byte~) main::$3 zp[1]:4 6.6000000000000005
|
(byte~) main::$3 reg byte a 22.0
|
||||||
(byte~) main::$4 reg byte a 22.0
|
(byte~) main::$4 zp[1]:4 8.25
|
||||||
(byte~) main::$5 reg byte a 22.0
|
(byte~) main::$5 reg byte a 22.0
|
||||||
(label) main::@1
|
(label) main::@1
|
||||||
(label) main::@return
|
(label) main::@return
|
||||||
(byte) main::i
|
(byte) main::i
|
||||||
(byte) main::i#1 reg byte x 16.5
|
(byte) main::i#1 reg byte x 16.5
|
||||||
(byte) main::i#2 reg byte x 5.5
|
(byte) main::i#2 reg byte x 4.888888888888889
|
||||||
(byte*) main::screen
|
(byte*) main::screen
|
||||||
(byte*) main::screen#1 screen zp[2]:2 8.25
|
(byte*) main::screen#1 screen zp[2]:2 11.0
|
||||||
(byte*) main::screen#2 screen zp[2]:2 7.333333333333333
|
(byte*) main::screen#2 screen zp[2]:2 7.333333333333333
|
||||||
(byte*) main::screen#3 screen zp[2]:2 6.6000000000000005
|
(byte*) main::screen#3 screen zp[2]:2 6.6000000000000005
|
||||||
|
|
||||||
reg byte x [ main::i#2 main::i#1 ]
|
reg byte x [ main::i#2 main::i#1 ]
|
||||||
zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ]
|
zp[2]:2 [ main::screen#3 main::screen#2 main::screen#1 ]
|
||||||
zp[1]:4 [ main::$3 ]
|
reg byte a [ main::$3 ]
|
||||||
reg byte a [ main::$1 ]
|
zp[1]:4 [ main::$4 ]
|
||||||
reg byte a [ main::$2 ]
|
reg byte a [ main::$2 ]
|
||||||
reg byte a [ main::$4 ]
|
|
||||||
reg byte a [ main::$5 ]
|
reg byte a [ main::$5 ]
|
||||||
|
@ -14,8 +14,7 @@ main: {
|
|||||||
rts
|
rts
|
||||||
}
|
}
|
||||||
scrollup1: {
|
scrollup1: {
|
||||||
.label __2 = 5
|
.label __4 = 5
|
||||||
.label __4 = 7
|
|
||||||
.label line = 9
|
.label line = 9
|
||||||
.label __5 = 7
|
.label __5 = 7
|
||||||
.label __6 = 5
|
.label __6 = 5
|
||||||
@ -54,24 +53,16 @@ scrollup1: {
|
|||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
adc.z line
|
adc.z line
|
||||||
sta.z __2
|
|
||||||
lda #0
|
|
||||||
adc.z line+1
|
|
||||||
sta.z __2+1
|
|
||||||
// line+c+40
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z line
|
|
||||||
sta.z __4
|
sta.z __4
|
||||||
lda #0
|
lda #0
|
||||||
adc.z line+1
|
adc.z line+1
|
||||||
sta.z __4+1
|
sta.z __4+1
|
||||||
// screen[line+c] = screen[line+c+40]
|
// screen[line+c] = screen[line+c+40]
|
||||||
|
lda.z __4
|
||||||
clc
|
clc
|
||||||
lda.z __5
|
|
||||||
adc #<screen+$28
|
adc #<screen+$28
|
||||||
sta.z __5
|
sta.z __5
|
||||||
lda.z __5+1
|
lda.z __4+1
|
||||||
adc #>screen+$28
|
adc #>screen+$28
|
||||||
sta.z __5+1
|
sta.z __5+1
|
||||||
clc
|
clc
|
||||||
|
@ -35,67 +35,66 @@ scrollup1::@4: scope:[scrollup1] from scrollup1::@2
|
|||||||
[13] (word) scrollup1::line#1 ← (word) scrollup1::line#2 + (byte) $28
|
[13] (word) scrollup1::line#1 ← (word) scrollup1::line#2 + (byte) $28
|
||||||
to:scrollup1::@1
|
to:scrollup1::@1
|
||||||
scrollup1::@3: scope:[scrollup1] from scrollup1::@2
|
scrollup1::@3: scope:[scrollup1] from scrollup1::@2
|
||||||
[14] (word~) scrollup1::$2 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2
|
[14] (word~) scrollup1::$4 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2
|
||||||
[15] (word~) scrollup1::$4 ← (word) scrollup1::line#2 + (byte) scrollup1::c#2
|
[15] (byte*~) scrollup1::$5 ← (const nomodify byte*) screen+(byte) $28 + (word~) scrollup1::$4
|
||||||
[16] (byte*~) scrollup1::$5 ← (const nomodify byte*) screen+(byte) $28 + (word~) scrollup1::$4
|
[16] (byte*~) scrollup1::$6 ← (const nomodify byte*) screen + (word~) scrollup1::$4
|
||||||
[17] (byte*~) scrollup1::$6 ← (const nomodify byte*) screen + (word~) scrollup1::$2
|
[17] *((byte*~) scrollup1::$6) ← *((byte*~) scrollup1::$5)
|
||||||
[18] *((byte*~) scrollup1::$6) ← *((byte*~) scrollup1::$5)
|
[18] (byte) scrollup1::c#1 ← ++ (byte) scrollup1::c#2
|
||||||
[19] (byte) scrollup1::c#1 ← ++ (byte) scrollup1::c#2
|
|
||||||
to:scrollup1::@2
|
to:scrollup1::@2
|
||||||
|
|
||||||
(void()) scrollup2()
|
(void()) scrollup2()
|
||||||
scrollup2: scope:[scrollup2] from main::@1
|
scrollup2: scope:[scrollup2] from main::@1
|
||||||
[20] phi()
|
[19] phi()
|
||||||
to:scrollup2::@1
|
to:scrollup2::@1
|
||||||
scrollup2::@1: scope:[scrollup2] from scrollup2 scrollup2::@3
|
scrollup2::@1: scope:[scrollup2] from scrollup2 scrollup2::@3
|
||||||
[21] (byte) scrollup2::l#4 ← phi( scrollup2/(byte) 0 scrollup2::@3/(byte) scrollup2::l#1 )
|
[20] (byte) scrollup2::l#4 ← phi( scrollup2/(byte) 0 scrollup2::@3/(byte) scrollup2::l#1 )
|
||||||
[21] (byte*) scrollup2::line1#3 ← phi( scrollup2/(const nomodify byte*) screen scrollup2::@3/(byte*) scrollup2::line1#1 )
|
[20] (byte*) scrollup2::line1#3 ← phi( scrollup2/(const nomodify byte*) screen scrollup2::@3/(byte*) scrollup2::line1#1 )
|
||||||
[21] (byte*) scrollup2::line2#3 ← phi( scrollup2/(const nomodify byte*) screen+(byte) $28 scrollup2::@3/(byte*) scrollup2::line2#1 )
|
[20] (byte*) scrollup2::line2#3 ← phi( scrollup2/(const nomodify byte*) screen+(byte) $28 scrollup2::@3/(byte*) scrollup2::line2#1 )
|
||||||
to:scrollup2::@2
|
to:scrollup2::@2
|
||||||
scrollup2::@2: scope:[scrollup2] from scrollup2::@1 scrollup2::@2
|
scrollup2::@2: scope:[scrollup2] from scrollup2::@1 scrollup2::@2
|
||||||
[22] (byte) scrollup2::c#2 ← phi( scrollup2::@1/(byte) 0 scrollup2::@2/(byte) scrollup2::c#1 )
|
[21] (byte) scrollup2::c#2 ← phi( scrollup2::@1/(byte) 0 scrollup2::@2/(byte) scrollup2::c#1 )
|
||||||
[22] (byte*) scrollup2::line1#2 ← phi( scrollup2::@1/(byte*) scrollup2::line1#3 scrollup2::@2/(byte*) scrollup2::line1#1 )
|
[21] (byte*) scrollup2::line1#2 ← phi( scrollup2::@1/(byte*) scrollup2::line1#3 scrollup2::@2/(byte*) scrollup2::line1#1 )
|
||||||
[22] (byte*) scrollup2::line2#2 ← phi( scrollup2::@1/(byte*) scrollup2::line2#3 scrollup2::@2/(byte*) scrollup2::line2#1 )
|
[21] (byte*) scrollup2::line2#2 ← phi( scrollup2::@1/(byte*) scrollup2::line2#3 scrollup2::@2/(byte*) scrollup2::line2#1 )
|
||||||
[23] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2)
|
[22] *((byte*) scrollup2::line1#2) ← *((byte*) scrollup2::line2#2)
|
||||||
[24] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2
|
[23] (byte*) scrollup2::line1#1 ← ++ (byte*) scrollup2::line1#2
|
||||||
[25] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2
|
[24] (byte*) scrollup2::line2#1 ← ++ (byte*) scrollup2::line2#2
|
||||||
[26] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2
|
[25] (byte) scrollup2::c#1 ← ++ (byte) scrollup2::c#2
|
||||||
[27] if((byte) scrollup2::c#1!=(byte) $28) goto scrollup2::@2
|
[26] if((byte) scrollup2::c#1!=(byte) $28) goto scrollup2::@2
|
||||||
to:scrollup2::@3
|
to:scrollup2::@3
|
||||||
scrollup2::@3: scope:[scrollup2] from scrollup2::@2
|
scrollup2::@3: scope:[scrollup2] from scrollup2::@2
|
||||||
[28] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4
|
[27] (byte) scrollup2::l#1 ← ++ (byte) scrollup2::l#4
|
||||||
[29] if((byte) scrollup2::l#1!=(byte) $18) goto scrollup2::@1
|
[28] if((byte) scrollup2::l#1!=(byte) $18) goto scrollup2::@1
|
||||||
to:scrollup2::@return
|
to:scrollup2::@return
|
||||||
scrollup2::@return: scope:[scrollup2] from scrollup2::@3
|
scrollup2::@return: scope:[scrollup2] from scrollup2::@3
|
||||||
[30] return
|
[29] return
|
||||||
to:@return
|
to:@return
|
||||||
|
|
||||||
(void()) scrollup3()
|
(void()) scrollup3()
|
||||||
scrollup3: scope:[scrollup3] from main::@2
|
scrollup3: scope:[scrollup3] from main::@2
|
||||||
[31] phi()
|
[30] phi()
|
||||||
to:scrollup3::@1
|
to:scrollup3::@1
|
||||||
scrollup3::@1: scope:[scrollup3] from scrollup3 scrollup3::@5
|
scrollup3::@1: scope:[scrollup3] from scrollup3 scrollup3::@5
|
||||||
[32] (word) scrollup3::line#2 ← phi( scrollup3/(word) 0 scrollup3::@5/(word) scrollup3::line#1 )
|
[31] (word) scrollup3::line#2 ← phi( scrollup3/(word) 0 scrollup3::@5/(word) scrollup3::line#1 )
|
||||||
[33] if((word) scrollup3::line#2<(word)(number) $28*(number) $18) goto scrollup3::@2
|
[32] if((word) scrollup3::line#2<(word)(number) $28*(number) $18) goto scrollup3::@2
|
||||||
to:scrollup3::@return
|
to:scrollup3::@return
|
||||||
scrollup3::@return: scope:[scrollup3] from scrollup3::@1
|
scrollup3::@return: scope:[scrollup3] from scrollup3::@1
|
||||||
[34] return
|
[33] return
|
||||||
to:@return
|
to:@return
|
||||||
scrollup3::@2: scope:[scrollup3] from scrollup3::@1
|
scrollup3::@2: scope:[scrollup3] from scrollup3::@1
|
||||||
[35] (word) scrollup3::l2#4 ← (word) scrollup3::line#2
|
[34] (word) scrollup3::l2#4 ← (word) scrollup3::line#2
|
||||||
to:scrollup3::@3
|
to:scrollup3::@3
|
||||||
scrollup3::@3: scope:[scrollup3] from scrollup3::@2 scrollup3::@4
|
scrollup3::@3: scope:[scrollup3] from scrollup3::@2 scrollup3::@4
|
||||||
[36] (word) scrollup3::l2#2 ← phi( scrollup3::@2/(word) scrollup3::l2#4 scrollup3::@4/(word) scrollup3::l2#1 )
|
[35] (word) scrollup3::l2#2 ← phi( scrollup3::@2/(word) scrollup3::l2#4 scrollup3::@4/(word) scrollup3::l2#1 )
|
||||||
[36] (byte) scrollup3::c#2 ← phi( scrollup3::@2/(byte) 0 scrollup3::@4/(byte) scrollup3::c#1 )
|
[35] (byte) scrollup3::c#2 ← phi( scrollup3::@2/(byte) 0 scrollup3::@4/(byte) scrollup3::c#1 )
|
||||||
[37] if((byte) scrollup3::c#2<(byte) $28) goto scrollup3::@4
|
[36] if((byte) scrollup3::c#2<(byte) $28) goto scrollup3::@4
|
||||||
to:scrollup3::@5
|
to:scrollup3::@5
|
||||||
scrollup3::@5: scope:[scrollup3] from scrollup3::@3
|
scrollup3::@5: scope:[scrollup3] from scrollup3::@3
|
||||||
[38] (word) scrollup3::line#1 ← (word) scrollup3::line#2 + (byte) $28
|
[37] (word) scrollup3::line#1 ← (word) scrollup3::line#2 + (byte) $28
|
||||||
to:scrollup3::@1
|
to:scrollup3::@1
|
||||||
scrollup3::@4: scope:[scrollup3] from scrollup3::@3
|
scrollup3::@4: scope:[scrollup3] from scrollup3::@3
|
||||||
[39] (byte*~) scrollup3::$3 ← (const nomodify byte*) screen+(byte) $28 + (word) scrollup3::l2#2
|
[38] (byte*~) scrollup3::$3 ← (const nomodify byte*) screen+(byte) $28 + (word) scrollup3::l2#2
|
||||||
[40] (byte*~) scrollup3::$4 ← (const nomodify byte*) screen + (word) scrollup3::l2#2
|
[39] (byte*~) scrollup3::$4 ← (const nomodify byte*) screen + (word) scrollup3::l2#2
|
||||||
[41] *((byte*~) scrollup3::$4) ← *((byte*~) scrollup3::$3)
|
[40] *((byte*~) scrollup3::$4) ← *((byte*~) scrollup3::$3)
|
||||||
[42] (word) scrollup3::l2#1 ← ++ (word) scrollup3::l2#2
|
[41] (word) scrollup3::l2#1 ← ++ (word) scrollup3::l2#2
|
||||||
[43] (byte) scrollup3::c#1 ← ++ (byte) scrollup3::c#2
|
[42] (byte) scrollup3::c#1 ← ++ (byte) scrollup3::c#2
|
||||||
to:scrollup3::@3
|
to:scrollup3::@3
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -4,8 +4,7 @@
|
|||||||
(label) main::@return
|
(label) main::@return
|
||||||
(const nomodify byte*) screen = (byte*) 1024
|
(const nomodify byte*) screen = (byte*) 1024
|
||||||
(void()) scrollup1()
|
(void()) scrollup1()
|
||||||
(word~) scrollup1::$2 zp[2]:5 667.3333333333334
|
(word~) scrollup1::$4 zp[2]:5 1501.5
|
||||||
(word~) scrollup1::$4 zp[2]:7 2002.0
|
|
||||||
(byte*~) scrollup1::$5 zp[2]:7 1001.0
|
(byte*~) scrollup1::$5 zp[2]:7 1001.0
|
||||||
(byte*~) scrollup1::$6 zp[2]:5 2002.0
|
(byte*~) scrollup1::$6 zp[2]:5 2002.0
|
||||||
(label) scrollup1::@1
|
(label) scrollup1::@1
|
||||||
@ -15,10 +14,10 @@
|
|||||||
(label) scrollup1::@return
|
(label) scrollup1::@return
|
||||||
(byte) scrollup1::c
|
(byte) scrollup1::c
|
||||||
(byte) scrollup1::c#1 reg byte x 2002.0
|
(byte) scrollup1::c#1 reg byte x 2002.0
|
||||||
(byte) scrollup1::c#2 reg byte x 715.0
|
(byte) scrollup1::c#2 reg byte x 667.3333333333334
|
||||||
(word) scrollup1::line
|
(word) scrollup1::line
|
||||||
(word) scrollup1::line#1 line zp[2]:9 202.0
|
(word) scrollup1::line#1 line zp[2]:9 202.0
|
||||||
(word) scrollup1::line#2 line zp[2]:9 230.49999999999997
|
(word) scrollup1::line#2 line zp[2]:9 144.88888888888889
|
||||||
(void()) scrollup2()
|
(void()) scrollup2()
|
||||||
(label) scrollup2::@1
|
(label) scrollup2::@1
|
||||||
(label) scrollup2::@2
|
(label) scrollup2::@2
|
||||||
@ -63,6 +62,6 @@ zp[1]:2 [ scrollup2::l#4 scrollup2::l#1 ]
|
|||||||
reg byte x [ scrollup2::c#2 scrollup2::c#1 ]
|
reg byte x [ scrollup2::c#2 scrollup2::c#1 ]
|
||||||
zp[2]:3 [ scrollup3::line#2 scrollup3::line#1 scrollup2::line1#2 scrollup2::line1#3 scrollup2::line1#1 ]
|
zp[2]:3 [ scrollup3::line#2 scrollup3::line#1 scrollup2::line1#2 scrollup2::line1#3 scrollup2::line1#1 ]
|
||||||
reg byte x [ scrollup3::c#2 scrollup3::c#1 ]
|
reg byte x [ scrollup3::c#2 scrollup3::c#1 ]
|
||||||
zp[2]:5 [ scrollup1::$2 scrollup1::$6 scrollup3::l2#2 scrollup3::l2#4 scrollup3::l2#1 ]
|
zp[2]:5 [ scrollup1::$4 scrollup1::$6 scrollup3::l2#2 scrollup3::l2#4 scrollup3::l2#1 ]
|
||||||
zp[2]:7 [ scrollup3::$3 scrollup1::$4 scrollup1::$5 ]
|
zp[2]:7 [ scrollup3::$3 scrollup1::$5 ]
|
||||||
zp[2]:9 [ scrollup3::$4 scrollup2::line2#2 scrollup2::line2#3 scrollup2::line2#1 scrollup1::line#2 scrollup1::line#1 ]
|
zp[2]:9 [ scrollup3::$4 scrollup2::line2#2 scrollup2::line2#3 scrollup2::line2#1 scrollup1::line#2 scrollup1::line#1 ]
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
.pc = $80d "Program"
|
.pc = $80d "Program"
|
||||||
main: {
|
main: {
|
||||||
.label screen = $400
|
.label screen = $400
|
||||||
.label __2 = 6
|
.label __4 = 6
|
||||||
.label __4 = 8
|
|
||||||
.label __6 = 4
|
.label __6 = 4
|
||||||
.label line = 2
|
.label line = 2
|
||||||
.label __7 = 8
|
.label __7 = 8
|
||||||
@ -74,24 +73,16 @@ main: {
|
|||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
adc.z line
|
adc.z line
|
||||||
sta.z __2
|
|
||||||
lda #0
|
|
||||||
adc.z line+1
|
|
||||||
sta.z __2+1
|
|
||||||
// line+c+40
|
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z line
|
|
||||||
sta.z __4
|
sta.z __4
|
||||||
lda #0
|
lda #0
|
||||||
adc.z line+1
|
adc.z line+1
|
||||||
sta.z __4+1
|
sta.z __4+1
|
||||||
// screen[line+c] = screen[line+c+40]
|
// screen[line+c] = screen[line+c+40]
|
||||||
|
lda.z __4
|
||||||
clc
|
clc
|
||||||
lda.z __7
|
|
||||||
adc #<screen+$28
|
adc #<screen+$28
|
||||||
sta.z __7
|
sta.z __7
|
||||||
lda.z __7+1
|
lda.z __4+1
|
||||||
adc #>screen+$28
|
adc #>screen+$28
|
||||||
sta.z __7+1
|
sta.z __7+1
|
||||||
clc
|
clc
|
||||||
|
@ -28,10 +28,9 @@ main::@4: scope:[main] from main::@2
|
|||||||
[12] (word) main::line#2 ← (word) main::line#10 + (byte) $28
|
[12] (word) main::line#2 ← (word) main::line#10 + (byte) $28
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2
|
[13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2
|
||||||
[14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2
|
[14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4
|
||||||
[15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4
|
[15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4
|
||||||
[16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2
|
[16] *((byte*~) main::$8) ← *((byte*~) main::$7)
|
||||||
[17] *((byte*~) main::$8) ← *((byte*~) main::$7)
|
[17] (byte) main::c#1 ← ++ (byte) main::c#2
|
||||||
[18] (byte) main::c#1 ← ++ (byte) main::c#2
|
|
||||||
to:main::@2
|
to:main::@2
|
||||||
|
@ -143,6 +143,8 @@ Successful SSA optimization Pass2AliasElimination
|
|||||||
Identical Phi Values (word) main::line#4 (word) main::line#10
|
Identical Phi Values (word) main::line#4 (word) main::line#10
|
||||||
Identical Phi Values (word) main::line#6 (word) main::line#10
|
Identical Phi Values (word) main::line#6 (word) main::line#10
|
||||||
Successful SSA optimization Pass2IdenticalPhiElimination
|
Successful SSA optimization Pass2IdenticalPhiElimination
|
||||||
|
Identified duplicate assignment right side [14] (word~) main::$3 ← (word) main::line#10 + (byte) main::c#2
|
||||||
|
Successful SSA optimization Pass2DuplicateRValueIdentification
|
||||||
Simple Condition (bool~) main::$0 [4] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2
|
Simple Condition (bool~) main::$0 [4] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2
|
||||||
Simple Condition (bool~) main::$1 [9] if((byte) main::c#2<(byte) $28) goto main::@5
|
Simple Condition (bool~) main::$1 [9] if((byte) main::c#2<(byte) $28) goto main::@5
|
||||||
Simple Condition (bool~) main::$5 [18] if((byte) main::c1#2<(byte) $28) goto main::@8
|
Simple Condition (bool~) main::$5 [18] if((byte) main::c1#2<(byte) $28) goto main::@8
|
||||||
@ -163,6 +165,8 @@ Removing unused procedure block __start
|
|||||||
Removing unused procedure block __start::@1
|
Removing unused procedure block __start::@1
|
||||||
Removing unused procedure block __start::@return
|
Removing unused procedure block __start::@return
|
||||||
Successful SSA optimization PassNEliminateEmptyStart
|
Successful SSA optimization PassNEliminateEmptyStart
|
||||||
|
Alias main::$3 = main::$2
|
||||||
|
Successful SSA optimization Pass2AliasElimination
|
||||||
Inlining constant with var siblings (const word) main::line#1
|
Inlining constant with var siblings (const word) main::line#1
|
||||||
Inlining constant with var siblings (const byte) main::c#0
|
Inlining constant with var siblings (const byte) main::c#0
|
||||||
Inlining constant with var siblings (const byte) main::c1#0
|
Inlining constant with var siblings (const byte) main::c1#0
|
||||||
@ -182,7 +186,7 @@ CALL GRAPH
|
|||||||
Created 3 initial phi equivalence classes
|
Created 3 initial phi equivalence classes
|
||||||
Coalesced [11] main::c1#4 ← main::c1#1
|
Coalesced [11] main::c1#4 ← main::c1#1
|
||||||
Coalesced [16] main::line#11 ← main::line#2
|
Coalesced [16] main::line#11 ← main::line#2
|
||||||
Coalesced [23] main::c#4 ← main::c#1
|
Coalesced [22] main::c#4 ← main::c#1
|
||||||
Coalesced down to 3 phi equivalence classes
|
Coalesced down to 3 phi equivalence classes
|
||||||
Culled Empty Block (label) main::@3
|
Culled Empty Block (label) main::@3
|
||||||
Culled Empty Block (label) main::@2
|
Culled Empty Block (label) main::@2
|
||||||
@ -224,31 +228,29 @@ main::@4: scope:[main] from main::@2
|
|||||||
[12] (word) main::line#2 ← (word) main::line#10 + (byte) $28
|
[12] (word) main::line#2 ← (word) main::line#10 + (byte) $28
|
||||||
to:main::@1
|
to:main::@1
|
||||||
main::@3: scope:[main] from main::@2
|
main::@3: scope:[main] from main::@2
|
||||||
[13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2
|
[13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2
|
||||||
[14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2
|
[14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4
|
||||||
[15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4
|
[15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4
|
||||||
[16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2
|
[16] *((byte*~) main::$8) ← *((byte*~) main::$7)
|
||||||
[17] *((byte*~) main::$8) ← *((byte*~) main::$7)
|
[17] (byte) main::c#1 ← ++ (byte) main::c#2
|
||||||
[18] (byte) main::c#1 ← ++ (byte) main::c#2
|
|
||||||
to:main::@2
|
to:main::@2
|
||||||
|
|
||||||
|
|
||||||
VARIABLE REGISTER WEIGHTS
|
VARIABLE REGISTER WEIGHTS
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$2 67.33333333333333
|
(word~) main::$4 151.5
|
||||||
(word~) main::$4 202.0
|
|
||||||
(word~) main::$6 22.0
|
(word~) main::$6 22.0
|
||||||
(byte*~) main::$7 101.0
|
(byte*~) main::$7 101.0
|
||||||
(byte*~) main::$8 202.0
|
(byte*~) main::$8 202.0
|
||||||
(byte*~) main::$9 22.0
|
(byte*~) main::$9 22.0
|
||||||
(byte) main::c
|
(byte) main::c
|
||||||
(byte) main::c#1 202.0
|
(byte) main::c#1 202.0
|
||||||
(byte) main::c#2 72.14285714285714
|
(byte) main::c#2 67.33333333333333
|
||||||
(byte) main::c1
|
(byte) main::c1
|
||||||
(byte) main::c1#1 22.0
|
(byte) main::c1#1 22.0
|
||||||
(byte) main::c1#2 8.8
|
(byte) main::c1#2 8.8
|
||||||
(word) main::line
|
(word) main::line
|
||||||
(word) main::line#10 15.375
|
(word) main::line#10 9.666666666666666
|
||||||
(word) main::line#2 22.0
|
(word) main::line#2 22.0
|
||||||
|
|
||||||
Initial phi equivalence classes
|
Initial phi equivalence classes
|
||||||
@ -257,7 +259,6 @@ Initial phi equivalence classes
|
|||||||
[ main::c#2 main::c#1 ]
|
[ main::c#2 main::c#1 ]
|
||||||
Added variable main::$6 to live range equivalence class [ main::$6 ]
|
Added variable main::$6 to live range equivalence class [ main::$6 ]
|
||||||
Added variable main::$9 to live range equivalence class [ main::$9 ]
|
Added variable main::$9 to live range equivalence class [ main::$9 ]
|
||||||
Added variable main::$2 to live range equivalence class [ main::$2 ]
|
|
||||||
Added variable main::$4 to live range equivalence class [ main::$4 ]
|
Added variable main::$4 to live range equivalence class [ main::$4 ]
|
||||||
Added variable main::$7 to live range equivalence class [ main::$7 ]
|
Added variable main::$7 to live range equivalence class [ main::$7 ]
|
||||||
Added variable main::$8 to live range equivalence class [ main::$8 ]
|
Added variable main::$8 to live range equivalence class [ main::$8 ]
|
||||||
@ -267,7 +268,6 @@ Complete equivalence classes
|
|||||||
[ main::c#2 main::c#1 ]
|
[ main::c#2 main::c#1 ]
|
||||||
[ main::$6 ]
|
[ main::$6 ]
|
||||||
[ main::$9 ]
|
[ main::$9 ]
|
||||||
[ main::$2 ]
|
|
||||||
[ main::$4 ]
|
[ main::$4 ]
|
||||||
[ main::$7 ]
|
[ main::$7 ]
|
||||||
[ main::$8 ]
|
[ main::$8 ]
|
||||||
@ -276,10 +276,9 @@ Allocated zp[1]:4 [ main::c1#2 main::c1#1 ]
|
|||||||
Allocated zp[1]:5 [ main::c#2 main::c#1 ]
|
Allocated zp[1]:5 [ main::c#2 main::c#1 ]
|
||||||
Allocated zp[2]:6 [ main::$6 ]
|
Allocated zp[2]:6 [ main::$6 ]
|
||||||
Allocated zp[2]:8 [ main::$9 ]
|
Allocated zp[2]:8 [ main::$9 ]
|
||||||
Allocated zp[2]:10 [ main::$2 ]
|
Allocated zp[2]:10 [ main::$4 ]
|
||||||
Allocated zp[2]:12 [ main::$4 ]
|
Allocated zp[2]:12 [ main::$7 ]
|
||||||
Allocated zp[2]:14 [ main::$7 ]
|
Allocated zp[2]:14 [ main::$8 ]
|
||||||
Allocated zp[2]:16 [ main::$8 ]
|
|
||||||
|
|
||||||
INITIAL ASM
|
INITIAL ASM
|
||||||
Target platform is c64basic / MOS6502X
|
Target platform is c64basic / MOS6502X
|
||||||
@ -292,14 +291,13 @@ Target platform is c64basic / MOS6502X
|
|||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label screen = $400
|
.label screen = $400
|
||||||
.label __2 = $a
|
.label __4 = $a
|
||||||
.label __4 = $c
|
|
||||||
.label __6 = 6
|
.label __6 = 6
|
||||||
.label c = 5
|
.label c = 5
|
||||||
.label line = 2
|
.label line = 2
|
||||||
.label c1 = 4
|
.label c1 = 4
|
||||||
.label __7 = $e
|
.label __7 = $c
|
||||||
.label __8 = $10
|
.label __8 = $e
|
||||||
.label __9 = 8
|
.label __9 = 8
|
||||||
// [1] phi from main to main::@1 [phi:main->main::@1]
|
// [1] phi from main to main::@1 [phi:main->main::@1]
|
||||||
__b1_from_main:
|
__b1_from_main:
|
||||||
@ -395,15 +393,7 @@ main: {
|
|||||||
jmp __b1
|
jmp __b1
|
||||||
// main::@3
|
// main::@3
|
||||||
__b3:
|
__b3:
|
||||||
// [13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuz3
|
// [13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuz3
|
||||||
lda.z c
|
|
||||||
clc
|
|
||||||
adc.z line
|
|
||||||
sta.z __2
|
|
||||||
lda #0
|
|
||||||
adc.z line+1
|
|
||||||
sta.z __2+1
|
|
||||||
// [14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuz3
|
|
||||||
lda.z c
|
lda.z c
|
||||||
clc
|
clc
|
||||||
adc.z line
|
adc.z line
|
||||||
@ -411,7 +401,7 @@ main: {
|
|||||||
lda #0
|
lda #0
|
||||||
adc.z line+1
|
adc.z line+1
|
||||||
sta.z __4+1
|
sta.z __4+1
|
||||||
// [15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz2
|
// [14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z __4
|
lda.z __4
|
||||||
clc
|
clc
|
||||||
adc #<screen+$28
|
adc #<screen+$28
|
||||||
@ -419,20 +409,20 @@ main: {
|
|||||||
lda.z __4+1
|
lda.z __4+1
|
||||||
adc #>screen+$28
|
adc #>screen+$28
|
||||||
sta.z __7+1
|
sta.z __7+1
|
||||||
// [16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 -- pbuz1=pbuc1_plus_vwuz2
|
// [15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
lda.z __2
|
lda.z __4
|
||||||
clc
|
clc
|
||||||
adc #<screen
|
adc #<screen
|
||||||
sta.z __8
|
sta.z __8
|
||||||
lda.z __2+1
|
lda.z __4+1
|
||||||
adc #>screen
|
adc #>screen
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// [17] *((byte*~) main::$8) ← *((byte*~) main::$7) -- _deref_pbuz1=_deref_pbuz2
|
// [16] *((byte*~) main::$8) ← *((byte*~) main::$7) -- _deref_pbuz1=_deref_pbuz2
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__7),y
|
lda (__7),y
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (__8),y
|
sta (__8),y
|
||||||
// [18] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1
|
// [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuz1=_inc_vbuz1
|
||||||
inc.z c
|
inc.z c
|
||||||
// [10] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
// [10] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
||||||
__b2_from___b3:
|
__b2_from___b3:
|
||||||
@ -449,45 +439,41 @@ Statement [7] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$
|
|||||||
Statement [8] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( [ main::line#10 main::c1#2 ] { } ) always clobbers reg byte a reg byte y
|
Statement [8] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( [ main::line#10 main::c1#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::c1#2 main::c1#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:4 [ main::c1#2 main::c1#1 ]
|
||||||
Statement [12] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( [ main::line#2 ] { } ) always clobbers reg byte a
|
Statement [12] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( [ main::line#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 ] ( [ main::line#10 main::c#2 main::$2 ] { } ) always clobbers reg byte a
|
Statement [13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$4 ] ( [ main::line#10 main::c#2 main::$4 ] { } ) always clobbers reg byte a
|
||||||
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::c#2 main::c#1 ]
|
Removing always clobbered register reg byte a as potential for zp[1]:5 [ main::c#2 main::c#1 ]
|
||||||
Statement [14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 main::$4 ] ( [ main::line#10 main::c#2 main::$2 main::$4 ] { } ) always clobbers reg byte a
|
Statement [14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$4 main::$7 ] ( [ main::line#10 main::c#2 main::$4 main::$7 ] { } ) always clobbers reg byte a
|
||||||
Statement [15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$2 main::$7 ] ( [ main::line#10 main::c#2 main::$2 main::$7 ] { } ) always clobbers reg byte a
|
Statement [15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4 [ main::line#10 main::c#2 main::$7 main::$8 ] ( [ main::line#10 main::c#2 main::$7 main::$8 ] { } ) always clobbers reg byte a
|
||||||
Statement [16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 [ main::line#10 main::c#2 main::$7 main::$8 ] ( [ main::line#10 main::c#2 main::$7 main::$8 ] { } ) always clobbers reg byte a
|
Statement [16] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( [ main::line#10 main::c#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Statement [17] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( [ main::line#10 main::c#2 ] { } ) always clobbers reg byte a reg byte y
|
|
||||||
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::c#2 main::c#1 ]
|
Removing always clobbered register reg byte y as potential for zp[1]:5 [ main::c#2 main::c#1 ]
|
||||||
Statement [2] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2 [ main::line#10 ] ( [ main::line#10 ] { } ) always clobbers reg byte a
|
Statement [2] if((word) main::line#10<(word)(number) $28*(number) $18) goto main::@2 [ main::line#10 ] ( [ main::line#10 ] { } ) always clobbers reg byte a
|
||||||
Statement [6] (word~) main::$6 ← (word) main::line#10 + (byte) main::c1#2 [ main::line#10 main::c1#2 main::$6 ] ( [ main::line#10 main::c1#2 main::$6 ] { } ) always clobbers reg byte a
|
Statement [6] (word~) main::$6 ← (word) main::line#10 + (byte) main::c1#2 [ main::line#10 main::c1#2 main::$6 ] ( [ main::line#10 main::c1#2 main::$6 ] { } ) always clobbers reg byte a
|
||||||
Statement [7] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$6 [ main::line#10 main::c1#2 main::$9 ] ( [ main::line#10 main::c1#2 main::$9 ] { } ) always clobbers reg byte a
|
Statement [7] (byte*~) main::$9 ← (const byte*) main::screen + (word~) main::$6 [ main::line#10 main::c1#2 main::$9 ] ( [ main::line#10 main::c1#2 main::$9 ] { } ) always clobbers reg byte a
|
||||||
Statement [8] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( [ main::line#10 main::c1#2 ] { } ) always clobbers reg byte a reg byte y
|
Statement [8] *((byte*~) main::$9) ← (byte) ' ' [ main::line#10 main::c1#2 ] ( [ main::line#10 main::c1#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Statement [12] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( [ main::line#2 ] { } ) always clobbers reg byte a
|
Statement [12] (word) main::line#2 ← (word) main::line#10 + (byte) $28 [ main::line#2 ] ( [ main::line#2 ] { } ) always clobbers reg byte a
|
||||||
Statement [13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 ] ( [ main::line#10 main::c#2 main::$2 ] { } ) always clobbers reg byte a
|
Statement [13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$4 ] ( [ main::line#10 main::c#2 main::$4 ] { } ) always clobbers reg byte a
|
||||||
Statement [14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 [ main::line#10 main::c#2 main::$2 main::$4 ] ( [ main::line#10 main::c#2 main::$2 main::$4 ] { } ) always clobbers reg byte a
|
Statement [14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$4 main::$7 ] ( [ main::line#10 main::c#2 main::$4 main::$7 ] { } ) always clobbers reg byte a
|
||||||
Statement [15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 [ main::line#10 main::c#2 main::$2 main::$7 ] ( [ main::line#10 main::c#2 main::$2 main::$7 ] { } ) always clobbers reg byte a
|
Statement [15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4 [ main::line#10 main::c#2 main::$7 main::$8 ] ( [ main::line#10 main::c#2 main::$7 main::$8 ] { } ) always clobbers reg byte a
|
||||||
Statement [16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 [ main::line#10 main::c#2 main::$7 main::$8 ] ( [ main::line#10 main::c#2 main::$7 main::$8 ] { } ) always clobbers reg byte a
|
Statement [16] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( [ main::line#10 main::c#2 ] { } ) always clobbers reg byte a reg byte y
|
||||||
Statement [17] *((byte*~) main::$8) ← *((byte*~) main::$7) [ main::line#10 main::c#2 ] ( [ main::line#10 main::c#2 ] { } ) always clobbers reg byte a reg byte y
|
|
||||||
Potential registers zp[2]:2 [ main::line#10 main::line#2 ] : zp[2]:2 ,
|
Potential registers zp[2]:2 [ main::line#10 main::line#2 ] : zp[2]:2 ,
|
||||||
Potential registers zp[1]:4 [ main::c1#2 main::c1#1 ] : zp[1]:4 , reg byte x ,
|
Potential registers zp[1]:4 [ main::c1#2 main::c1#1 ] : zp[1]:4 , reg byte x ,
|
||||||
Potential registers zp[1]:5 [ main::c#2 main::c#1 ] : zp[1]:5 , reg byte x ,
|
Potential registers zp[1]:5 [ main::c#2 main::c#1 ] : zp[1]:5 , reg byte x ,
|
||||||
Potential registers zp[2]:6 [ main::$6 ] : zp[2]:6 ,
|
Potential registers zp[2]:6 [ main::$6 ] : zp[2]:6 ,
|
||||||
Potential registers zp[2]:8 [ main::$9 ] : zp[2]:8 ,
|
Potential registers zp[2]:8 [ main::$9 ] : zp[2]:8 ,
|
||||||
Potential registers zp[2]:10 [ main::$2 ] : zp[2]:10 ,
|
Potential registers zp[2]:10 [ main::$4 ] : zp[2]:10 ,
|
||||||
Potential registers zp[2]:12 [ main::$4 ] : zp[2]:12 ,
|
Potential registers zp[2]:12 [ main::$7 ] : zp[2]:12 ,
|
||||||
Potential registers zp[2]:14 [ main::$7 ] : zp[2]:14 ,
|
Potential registers zp[2]:14 [ main::$8 ] : zp[2]:14 ,
|
||||||
Potential registers zp[2]:16 [ main::$8 ] : zp[2]:16 ,
|
|
||||||
|
|
||||||
REGISTER UPLIFT SCOPES
|
REGISTER UPLIFT SCOPES
|
||||||
Uplift Scope [main] 274.14: zp[1]:5 [ main::c#2 main::c#1 ] 202: zp[2]:12 [ main::$4 ] 202: zp[2]:16 [ main::$8 ] 101: zp[2]:14 [ main::$7 ] 67.33: zp[2]:10 [ main::$2 ] 37.38: zp[2]:2 [ main::line#10 main::line#2 ] 30.8: zp[1]:4 [ main::c1#2 main::c1#1 ] 22: zp[2]:6 [ main::$6 ] 22: zp[2]:8 [ main::$9 ]
|
Uplift Scope [main] 269.33: zp[1]:5 [ main::c#2 main::c#1 ] 202: zp[2]:14 [ main::$8 ] 151.5: zp[2]:10 [ main::$4 ] 101: zp[2]:12 [ main::$7 ] 31.67: zp[2]:2 [ main::line#10 main::line#2 ] 30.8: zp[1]:4 [ main::c1#2 main::c1#1 ] 22: zp[2]:6 [ main::$6 ] 22: zp[2]:8 [ main::$9 ]
|
||||||
Uplift Scope []
|
Uplift Scope []
|
||||||
|
|
||||||
Uplifting [main] best 11651 combination reg byte x [ main::c#2 main::c#1 ] zp[2]:12 [ main::$4 ] zp[2]:16 [ main::$8 ] zp[2]:14 [ main::$7 ] zp[2]:10 [ main::$2 ] zp[2]:2 [ main::line#10 main::line#2 ] reg byte x [ main::c1#2 main::c1#1 ] zp[2]:6 [ main::$6 ] zp[2]:8 [ main::$9 ]
|
Uplifting [main] best 9851 combination reg byte x [ main::c#2 main::c#1 ] zp[2]:14 [ main::$8 ] zp[2]:10 [ main::$4 ] zp[2]:12 [ main::$7 ] zp[2]:2 [ main::line#10 main::line#2 ] reg byte x [ main::c1#2 main::c1#1 ] zp[2]:6 [ main::$6 ] zp[2]:8 [ main::$9 ]
|
||||||
Uplifting [] best 11651 combination
|
Uplifting [] best 9851 combination
|
||||||
Coalescing zero page register [ zp[2]:6 [ main::$6 ] ] with [ zp[2]:8 [ main::$9 ] ] - score: 1
|
Coalescing zero page register [ zp[2]:6 [ main::$6 ] ] with [ zp[2]:8 [ main::$9 ] ] - score: 1
|
||||||
Coalescing zero page register [ zp[2]:10 [ main::$2 ] ] with [ zp[2]:16 [ main::$8 ] ] - score: 1
|
Coalescing zero page register [ zp[2]:10 [ main::$4 ] ] with [ zp[2]:14 [ main::$8 ] ] - score: 1
|
||||||
Coalescing zero page register [ zp[2]:12 [ main::$4 ] ] with [ zp[2]:14 [ main::$7 ] ] - score: 1
|
|
||||||
Allocated (was zp[2]:6) zp[2]:4 [ main::$6 main::$9 ]
|
Allocated (was zp[2]:6) zp[2]:4 [ main::$6 main::$9 ]
|
||||||
Allocated (was zp[2]:10) zp[2]:6 [ main::$2 main::$8 ]
|
Allocated (was zp[2]:10) zp[2]:6 [ main::$4 main::$8 ]
|
||||||
Allocated (was zp[2]:12) zp[2]:8 [ main::$4 main::$7 ]
|
Allocated (was zp[2]:12) zp[2]:8 [ main::$7 ]
|
||||||
|
|
||||||
ASSEMBLER BEFORE OPTIMIZATION
|
ASSEMBLER BEFORE OPTIMIZATION
|
||||||
// File Comments
|
// File Comments
|
||||||
@ -499,8 +485,7 @@ ASSEMBLER BEFORE OPTIMIZATION
|
|||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label screen = $400
|
.label screen = $400
|
||||||
.label __2 = 6
|
.label __4 = 6
|
||||||
.label __4 = 8
|
|
||||||
.label __6 = 4
|
.label __6 = 4
|
||||||
.label line = 2
|
.label line = 2
|
||||||
.label __7 = 8
|
.label __7 = 8
|
||||||
@ -596,15 +581,7 @@ main: {
|
|||||||
jmp __b1
|
jmp __b1
|
||||||
// main::@3
|
// main::@3
|
||||||
__b3:
|
__b3:
|
||||||
// [13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuxx
|
// [13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuxx
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z line
|
|
||||||
sta.z __2
|
|
||||||
lda #0
|
|
||||||
adc.z line+1
|
|
||||||
sta.z __2+1
|
|
||||||
// [14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuxx
|
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
adc.z line
|
adc.z line
|
||||||
@ -612,15 +589,15 @@ main: {
|
|||||||
lda #0
|
lda #0
|
||||||
adc.z line+1
|
adc.z line+1
|
||||||
sta.z __4+1
|
sta.z __4+1
|
||||||
// [15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz1
|
// [14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
|
lda.z __4
|
||||||
clc
|
clc
|
||||||
lda.z __7
|
|
||||||
adc #<screen+$28
|
adc #<screen+$28
|
||||||
sta.z __7
|
sta.z __7
|
||||||
lda.z __7+1
|
lda.z __4+1
|
||||||
adc #>screen+$28
|
adc #>screen+$28
|
||||||
sta.z __7+1
|
sta.z __7+1
|
||||||
// [16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 -- pbuz1=pbuc1_plus_vwuz1
|
// [15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz1
|
||||||
clc
|
clc
|
||||||
lda.z __8
|
lda.z __8
|
||||||
adc #<screen
|
adc #<screen
|
||||||
@ -628,12 +605,12 @@ main: {
|
|||||||
lda.z __8+1
|
lda.z __8+1
|
||||||
adc #>screen
|
adc #>screen
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// [17] *((byte*~) main::$8) ← *((byte*~) main::$7) -- _deref_pbuz1=_deref_pbuz2
|
// [16] *((byte*~) main::$8) ← *((byte*~) main::$7) -- _deref_pbuz1=_deref_pbuz2
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__7),y
|
lda (__7),y
|
||||||
ldy #0
|
ldy #0
|
||||||
sta (__8),y
|
sta (__8),y
|
||||||
// [18] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx
|
// [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [10] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
// [10] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
||||||
__b2_from___b3:
|
__b2_from___b3:
|
||||||
@ -665,8 +642,7 @@ Succesful ASM optimization Pass5RelabelLongLabels
|
|||||||
|
|
||||||
FINAL SYMBOL TABLE
|
FINAL SYMBOL TABLE
|
||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$2 zp[2]:6 67.33333333333333
|
(word~) main::$4 zp[2]:6 151.5
|
||||||
(word~) main::$4 zp[2]:8 202.0
|
|
||||||
(word~) main::$6 zp[2]:4 22.0
|
(word~) main::$6 zp[2]:4 22.0
|
||||||
(byte*~) main::$7 zp[2]:8 101.0
|
(byte*~) main::$7 zp[2]:8 101.0
|
||||||
(byte*~) main::$8 zp[2]:6 202.0
|
(byte*~) main::$8 zp[2]:6 202.0
|
||||||
@ -680,12 +656,12 @@ FINAL SYMBOL TABLE
|
|||||||
(label) main::@return
|
(label) main::@return
|
||||||
(byte) main::c
|
(byte) main::c
|
||||||
(byte) main::c#1 reg byte x 202.0
|
(byte) main::c#1 reg byte x 202.0
|
||||||
(byte) main::c#2 reg byte x 72.14285714285714
|
(byte) main::c#2 reg byte x 67.33333333333333
|
||||||
(byte) main::c1
|
(byte) main::c1
|
||||||
(byte) main::c1#1 reg byte x 22.0
|
(byte) main::c1#1 reg byte x 22.0
|
||||||
(byte) main::c1#2 reg byte x 8.8
|
(byte) main::c1#2 reg byte x 8.8
|
||||||
(word) main::line
|
(word) main::line
|
||||||
(word) main::line#10 line zp[2]:2 15.375
|
(word) main::line#10 line zp[2]:2 9.666666666666666
|
||||||
(word) main::line#2 line zp[2]:2 22.0
|
(word) main::line#2 line zp[2]:2 22.0
|
||||||
(const byte*) main::screen = (byte*) 1024
|
(const byte*) main::screen = (byte*) 1024
|
||||||
|
|
||||||
@ -693,12 +669,12 @@ zp[2]:2 [ main::line#10 main::line#2 ]
|
|||||||
reg byte x [ main::c1#2 main::c1#1 ]
|
reg byte x [ main::c1#2 main::c1#1 ]
|
||||||
reg byte x [ main::c#2 main::c#1 ]
|
reg byte x [ main::c#2 main::c#1 ]
|
||||||
zp[2]:4 [ main::$6 main::$9 ]
|
zp[2]:4 [ main::$6 main::$9 ]
|
||||||
zp[2]:6 [ main::$2 main::$8 ]
|
zp[2]:6 [ main::$4 main::$8 ]
|
||||||
zp[2]:8 [ main::$4 main::$7 ]
|
zp[2]:8 [ main::$7 ]
|
||||||
|
|
||||||
|
|
||||||
FINAL ASSEMBLER
|
FINAL ASSEMBLER
|
||||||
Score: 10741
|
Score: 8941
|
||||||
|
|
||||||
// File Comments
|
// File Comments
|
||||||
// Upstart
|
// Upstart
|
||||||
@ -709,8 +685,7 @@ Score: 10741
|
|||||||
// main
|
// main
|
||||||
main: {
|
main: {
|
||||||
.label screen = $400
|
.label screen = $400
|
||||||
.label __2 = 6
|
.label __4 = 6
|
||||||
.label __4 = 8
|
|
||||||
.label __6 = 4
|
.label __6 = 4
|
||||||
.label line = 2
|
.label line = 2
|
||||||
.label __7 = 8
|
.label __7 = 8
|
||||||
@ -803,16 +778,7 @@ main: {
|
|||||||
// main::@3
|
// main::@3
|
||||||
__b3:
|
__b3:
|
||||||
// line+c
|
// line+c
|
||||||
// [13] (word~) main::$2 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuxx
|
// [13] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuxx
|
||||||
txa
|
|
||||||
clc
|
|
||||||
adc.z line
|
|
||||||
sta.z __2
|
|
||||||
lda #0
|
|
||||||
adc.z line+1
|
|
||||||
sta.z __2+1
|
|
||||||
// line+c+40
|
|
||||||
// [14] (word~) main::$4 ← (word) main::line#10 + (byte) main::c#2 -- vwuz1=vwuz2_plus_vbuxx
|
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
adc.z line
|
adc.z line
|
||||||
@ -821,15 +787,15 @@ main: {
|
|||||||
adc.z line+1
|
adc.z line+1
|
||||||
sta.z __4+1
|
sta.z __4+1
|
||||||
// screen[line+c] = screen[line+c+40]
|
// screen[line+c] = screen[line+c+40]
|
||||||
// [15] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz1
|
// [14] (byte*~) main::$7 ← (const byte*) main::screen+(byte) $28 + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz2
|
||||||
|
lda.z __4
|
||||||
clc
|
clc
|
||||||
lda.z __7
|
|
||||||
adc #<screen+$28
|
adc #<screen+$28
|
||||||
sta.z __7
|
sta.z __7
|
||||||
lda.z __7+1
|
lda.z __4+1
|
||||||
adc #>screen+$28
|
adc #>screen+$28
|
||||||
sta.z __7+1
|
sta.z __7+1
|
||||||
// [16] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$2 -- pbuz1=pbuc1_plus_vwuz1
|
// [15] (byte*~) main::$8 ← (const byte*) main::screen + (word~) main::$4 -- pbuz1=pbuc1_plus_vwuz1
|
||||||
clc
|
clc
|
||||||
lda.z __8
|
lda.z __8
|
||||||
adc #<screen
|
adc #<screen
|
||||||
@ -837,12 +803,12 @@ main: {
|
|||||||
lda.z __8+1
|
lda.z __8+1
|
||||||
adc #>screen
|
adc #>screen
|
||||||
sta.z __8+1
|
sta.z __8+1
|
||||||
// [17] *((byte*~) main::$8) ← *((byte*~) main::$7) -- _deref_pbuz1=_deref_pbuz2
|
// [16] *((byte*~) main::$8) ← *((byte*~) main::$7) -- _deref_pbuz1=_deref_pbuz2
|
||||||
ldy #0
|
ldy #0
|
||||||
lda (__7),y
|
lda (__7),y
|
||||||
sta (__8),y
|
sta (__8),y
|
||||||
// for (byte c=0; c<40; ++c)
|
// for (byte c=0; c<40; ++c)
|
||||||
// [18] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx
|
// [17] (byte) main::c#1 ← ++ (byte) main::c#2 -- vbuxx=_inc_vbuxx
|
||||||
inx
|
inx
|
||||||
// [10] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
// [10] phi from main::@3 to main::@2 [phi:main::@3->main::@2]
|
||||||
// [10] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#0] -- register_copy
|
// [10] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#0] -- register_copy
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
(void()) main()
|
(void()) main()
|
||||||
(word~) main::$2 zp[2]:6 67.33333333333333
|
(word~) main::$4 zp[2]:6 151.5
|
||||||
(word~) main::$4 zp[2]:8 202.0
|
|
||||||
(word~) main::$6 zp[2]:4 22.0
|
(word~) main::$6 zp[2]:4 22.0
|
||||||
(byte*~) main::$7 zp[2]:8 101.0
|
(byte*~) main::$7 zp[2]:8 101.0
|
||||||
(byte*~) main::$8 zp[2]:6 202.0
|
(byte*~) main::$8 zp[2]:6 202.0
|
||||||
@ -14,12 +13,12 @@
|
|||||||
(label) main::@return
|
(label) main::@return
|
||||||
(byte) main::c
|
(byte) main::c
|
||||||
(byte) main::c#1 reg byte x 202.0
|
(byte) main::c#1 reg byte x 202.0
|
||||||
(byte) main::c#2 reg byte x 72.14285714285714
|
(byte) main::c#2 reg byte x 67.33333333333333
|
||||||
(byte) main::c1
|
(byte) main::c1
|
||||||
(byte) main::c1#1 reg byte x 22.0
|
(byte) main::c1#1 reg byte x 22.0
|
||||||
(byte) main::c1#2 reg byte x 8.8
|
(byte) main::c1#2 reg byte x 8.8
|
||||||
(word) main::line
|
(word) main::line
|
||||||
(word) main::line#10 line zp[2]:2 15.375
|
(word) main::line#10 line zp[2]:2 9.666666666666666
|
||||||
(word) main::line#2 line zp[2]:2 22.0
|
(word) main::line#2 line zp[2]:2 22.0
|
||||||
(const byte*) main::screen = (byte*) 1024
|
(const byte*) main::screen = (byte*) 1024
|
||||||
|
|
||||||
@ -27,5 +26,5 @@ zp[2]:2 [ main::line#10 main::line#2 ]
|
|||||||
reg byte x [ main::c1#2 main::c1#1 ]
|
reg byte x [ main::c1#2 main::c1#1 ]
|
||||||
reg byte x [ main::c#2 main::c#1 ]
|
reg byte x [ main::c#2 main::c#1 ]
|
||||||
zp[2]:4 [ main::$6 main::$9 ]
|
zp[2]:4 [ main::$6 main::$9 ]
|
||||||
zp[2]:6 [ main::$2 main::$8 ]
|
zp[2]:6 [ main::$4 main::$8 ]
|
||||||
zp[2]:8 [ main::$4 main::$7 ]
|
zp[2]:8 [ main::$7 ]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user