1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Finished constant string consolidation. Closes #90

This commit is contained in:
jespergravgaard 2019-02-24 23:23:57 +01:00
parent fe0035af82
commit 0a955d6bec
39 changed files with 4479 additions and 4638 deletions

View File

@ -239,13 +239,13 @@ public class Compiler {
optimizations.add(new PassNVariableReferenceInfos(program)); optimizations.add(new PassNVariableReferenceInfos(program));
optimizations.add(new Pass2ConstantAdditionElimination(program)); optimizations.add(new Pass2ConstantAdditionElimination(program));
optimizations.add(new Pass2ConstantIfs(program)); optimizations.add(new Pass2ConstantIfs(program));
optimizations.add(new Pass2ConstantStringConsolidation(program));
optimizations.add(new Pass2FixInlineConstructors(program)); optimizations.add(new Pass2FixInlineConstructors(program));
optimizations.add(new Pass2TypeInference(program)); optimizations.add(new Pass2TypeInference(program));
optimizations.add(new PassNEliminateUnusedVars(program)); optimizations.add(new PassNEliminateUnusedVars(program));
optimizations.add(new Pass2NopCastElimination(program)); optimizations.add(new Pass2NopCastElimination(program));
optimizations.add(new Pass2EliminateUnusedBlocks(program)); optimizations.add(new Pass2EliminateUnusedBlocks(program));
optimizations.add(new Pass2RangeResolving(program)); optimizations.add(new Pass2RangeResolving(program));
optimizations.add(new Pass2ConstantStringConsolidation(program));
pass2Execute(optimizations); pass2Execute(optimizations);
} }
@ -286,6 +286,7 @@ public class Compiler {
constantOptimizations.add(new Pass2ConstantSimplification(program)); constantOptimizations.add(new Pass2ConstantSimplification(program));
constantOptimizations.add(new Pass2ConstantIfs(program)); constantOptimizations.add(new Pass2ConstantIfs(program));
pass2Execute(constantOptimizations); pass2Execute(constantOptimizations);
} }
/** /**
@ -390,7 +391,6 @@ public class Compiler {
private void pass4RegisterAllocation() { private void pass4RegisterAllocation() {
if(getLog().isVerboseLoopAnalysis()) { if(getLog().isVerboseLoopAnalysis()) {
getLog().append("DOMINATORS"); getLog().append("DOMINATORS");
} }

View File

@ -2,7 +2,12 @@ package dk.camelot64.kickc.passes;
import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.Program;
import dk.camelot64.kickc.model.symbols.ConstantVar; import dk.camelot64.kickc.model.symbols.ConstantVar;
import dk.camelot64.kickc.model.values.*; import dk.camelot64.kickc.model.symbols.ProgramScope;
import dk.camelot64.kickc.model.types.SymbolType;
import dk.camelot64.kickc.model.values.ConstantRef;
import dk.camelot64.kickc.model.values.ConstantString;
import dk.camelot64.kickc.model.values.ConstantValue;
import dk.camelot64.kickc.model.values.ScopeRef;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
@ -33,7 +38,7 @@ public class Pass2ConstantStringConsolidation extends Pass2SsaOptimization {
if(constVal instanceof ConstantString) { if(constVal instanceof ConstantString) {
String constString = ((ConstantString) constVal).getString(); String constString = ((ConstantString) constVal).getString();
List<ConstantVar> constantVars = constantStringMap.get(constString); List<ConstantVar> constantVars = constantStringMap.get(constString);
if(constantVars==null) { if(constantVars == null) {
constantVars = new ArrayList<>(); constantVars = new ArrayList<>();
constantStringMap.put(constString, constantVars); constantStringMap.put(constString, constantVars);
} }
@ -41,11 +46,11 @@ public class Pass2ConstantStringConsolidation extends Pass2SsaOptimization {
} }
} }
// Handle all constant strings with duplicate definitions // Handle all constant strings with duplicate definitions
for(String str : constantStringMap.keySet()) { for(String constantString : constantStringMap.keySet()) {
List<ConstantVar> constantVars = constantStringMap.get(str); List<ConstantVar> constantVars = constantStringMap.get(constantString);
if(constantVars.size()>1) { if(constantVars.size() > 1) {
// Found duplicate constant strings // Found duplicate constant strings
modified |= handleDuplicateConstantString(constantVars); modified |= handleDuplicateConstantString(constantVars, constantString);
} }
} }
@ -54,29 +59,83 @@ public class Pass2ConstantStringConsolidation extends Pass2SsaOptimization {
/** /**
* Handle duplicate constants strings with identical values * Handle duplicate constants strings with identical values
*
* @param constantVars The constant strings with identical values * @param constantVars The constant strings with identical values
* @return true if any optimization was performed * @return true if any optimization was performed
*/ */
private boolean handleDuplicateConstantString(List<ConstantVar> constantVars) { private boolean handleDuplicateConstantString(List<ConstantVar> constantVars, String constString) {
boolean modified = false; boolean modified = false;
// Look for a constant in the root scope // Look for a constant in the root scope - or check if they are all in the same scope
ConstantVar rootConstant = null; ConstantVar rootConstant = null;
boolean isCommonScope = true;
ScopeRef commonScope = null;
for(ConstantVar constantVar : constantVars) { for(ConstantVar constantVar : constantVars) {
if(constantVar.getScope().getRef().equals(ScopeRef.ROOT)) { ScopeRef constScope = constantVar.getScope().getRef();
if(constScope.equals(ScopeRef.ROOT)) {
rootConstant = constantVar; rootConstant = constantVar;
break; break;
} }
} if(commonScope == null) {
if(rootConstant!=null) { commonScope = constScope;
// Modify all other constants to be references to the root constant } else {
for(ConstantVar constantVar : constantVars) { if(!commonScope.equals(constScope)) {
if(!constantVar.equals(rootConstant)) { // Found two different scopes
constantVar.setValue(new ConstantRef(rootConstant)); isCommonScope = false;
modified = true;
} }
} }
} }
if(rootConstant == null) {
if(isCommonScope) {
// If all constants are in the same scope pick the first one as root
rootConstant = constantVars.get(0);
} else {
// Create a new root - and roll around again
ProgramScope rootScope = getScope();
String localName = getRootName(constantVars);
ConstantVar newRootConstant = new ConstantVar(localName, rootScope, SymbolType.STRING, new ConstantString(constString));
rootScope.add(newRootConstant);
rootConstant = newRootConstant;
}
}
// Modify all other constants to be references to the root constant
for(ConstantVar constantVar : constantVars) {
if(!constantVar.equals(rootConstant)) {
constantVar.setValue(new ConstantRef(rootConstant));
modified = true;
}
}
if(getLog().isVerboseSSAOptimize()) {
getLog().append("Consolidated constant strings into " + rootConstant);
}
return modified; return modified;
} }
private String getRootName(List<ConstantVar> constantVars) {
String constName = null;
// Try all variables with non-intermediate names
for(ConstantVar constantVar : constantVars) {
if(!constantVar.getRef().isIntermediate()) {
String candidateName = constantVar.getLocalName();
if(getScope().getSymbol(candidateName) == null) {
if(constName == null || constName.length() > candidateName.length()) {
constName = candidateName;
}
}
}
}
if(constName != null) {
return constName;
}
// Try string_nn until an unused name is found
int i = 0;
do {
String candidateName = "string_" + i;
if(getScope().getSymbol(candidateName) == null) {
return candidateName;
}
} while(true);
}
} }

View File

@ -44,6 +44,11 @@ public class TestPrograms {
AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false);
} }
@Test
public void testStringConstConsolidationNoRoot() throws IOException, URISyntaxException {
compileAndCompare("string-const-consolidation-noroot");
}
@Test @Test
public void testStringConstConsolidation() throws IOException, URISyntaxException { public void testStringConstConsolidation() throws IOException, URISyntaxException {
compileAndCompare("string-const-consolidation"); compileAndCompare("string-const-consolidation");

View File

@ -0,0 +1,17 @@
// Tests that identical strings are consolidated
byte* screen = $400;
void main() {
byte[] rex1 = "rex@";
byte[] rex2 = "rex@";
print(rex1);
print(rex2);
print("rex@");
}
void print(byte* string) {
while(*string!='@') {
*screen++ = *string++;
}
}

View File

@ -4,7 +4,7 @@ byte[] rex1 = "rex@";
byte* screen = $400; byte* screen = $400;
void main() { void main() {
byte[] rex2 = rex1; byte[] rex2 = "rex@";
print(rex1); print(rex1);
print(rex2); print(rex2);
print("rex@"); print("rex@");

View File

@ -1051,93 +1051,88 @@ form_mode: {
render_preset_name: { render_preset_name: {
.label name = 3 .label name = 3
cmp #0 cmp #0
beq b1 beq b33
cmp #1 cmp #1
beq b2 beq b1
cmp #2 cmp #2
beq b3 beq b2
cmp #3 cmp #3
beq b4 beq b3
cmp #4 cmp #4
beq b5 beq b4
cmp #5 cmp #5
beq b6 beq b5
cmp #6 cmp #6
beq b7 beq b6
cmp #7 cmp #7
beq b8 beq b7
cmp #8 cmp #8
beq b9 beq b8
cmp #9 cmp #9
beq b10 beq b9
cmp #$a cmp #$a
beq b11 beq b10
lda #<name_11 b33:
sta name
lda #>name_11
sta name+1
jmp b22
b1:
lda #<name_0 lda #<name_0
sta name sta name
lda #>name_0 lda #>name_0
sta name+1 sta name+1
jmp b22 jmp b22
b2: b1:
lda #<name_1 lda #<name_1
sta name sta name
lda #>name_1 lda #>name_1
sta name+1 sta name+1
jmp b22 jmp b22
b3: b2:
lda #<name_2 lda #<name_2
sta name sta name
lda #>name_2 lda #>name_2
sta name+1 sta name+1
jmp b22 jmp b22
b4: b3:
lda #<name_3 lda #<name_3
sta name sta name
lda #>name_3 lda #>name_3
sta name+1 sta name+1
jmp b22 jmp b22
b5: b4:
lda #<name_4 lda #<name_4
sta name sta name
lda #>name_4 lda #>name_4
sta name+1 sta name+1
jmp b22 jmp b22
b6: b5:
lda #<name_5 lda #<name_5
sta name sta name
lda #>name_5 lda #>name_5
sta name+1 sta name+1
jmp b22 jmp b22
b7: b6:
lda #<name_6 lda #<name_6
sta name sta name
lda #>name_6 lda #>name_6
sta name+1 sta name+1
jmp b22 jmp b22
b8: b7:
lda #<name_7 lda #<name_7
sta name sta name
lda #>name_7 lda #>name_7
sta name+1 sta name+1
jmp b22 jmp b22
b9: b8:
lda #<name_8 lda #<name_8
sta name sta name
lda #>name_8 lda #>name_8
sta name+1 sta name+1
jmp b22 jmp b22
b10: b9:
lda #<name_9 lda #<name_9
sta name sta name
lda #>name_9 lda #>name_9
sta name+1 sta name+1
jmp b22 jmp b22
b11: b10:
lda #<name_10 lda #<name_10
sta name sta name
lda #>name_10 lda #>name_10
@ -1156,7 +1151,6 @@ render_preset_name: {
name_8: .text "Sixs Fred @" name_8: .text "Sixs Fred @"
name_9: .text "Sixs Fred 2 @" name_9: .text "Sixs Fred 2 @"
name_10: .text "8bpp Pixel Cell @" name_10: .text "8bpp Pixel Cell @"
name_11: .text "Standard Charset @"
} }
// Print a string at a specific screen position // Print a string at a specific screen position
// print_str_at(byte* zeropage(3) str, byte* zeropage(5) at) // print_str_at(byte* zeropage(3) str, byte* zeropage(5) at)

View File

@ -602,7 +602,7 @@ render_preset_name::@33: scope:[render_preset_name] from render_preset_name::@3
[318] phi() [318] phi()
to:render_preset_name::@22 to:render_preset_name::@22
render_preset_name::@22: scope:[render_preset_name] from render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33 render_preset_name::@22: scope:[render_preset_name] from render_preset_name render_preset_name::@23 render_preset_name::@24 render_preset_name::@25 render_preset_name::@26 render_preset_name::@27 render_preset_name::@28 render_preset_name::@29 render_preset_name::@30 render_preset_name::@31 render_preset_name::@32 render_preset_name::@33
[319] (byte*) render_preset_name::name#12 ← phi( render_preset_name/(const byte*) render_preset_name::name#0 render_preset_name::@31/(const byte*) render_preset_name::name#9 render_preset_name::@32/(const byte*) render_preset_name::name#10 render_preset_name::@23/(const byte*) render_preset_name::name#1 render_preset_name::@24/(const byte*) render_preset_name::name#2 render_preset_name::@33/(const byte*) render_preset_name::name#11 render_preset_name::@25/(const byte*) render_preset_name::name#3 render_preset_name::@26/(const byte*) render_preset_name::name#4 render_preset_name::@27/(const byte*) render_preset_name::name#5 render_preset_name::@28/(const byte*) render_preset_name::name#6 render_preset_name::@29/(const byte*) render_preset_name::name#7 render_preset_name::@30/(const byte*) render_preset_name::name#8 ) [319] (byte*) render_preset_name::name#12 ← phi( render_preset_name/(const byte*) render_preset_name::name#0 render_preset_name::@31/(const byte*) render_preset_name::name#9 render_preset_name::@32/(const byte*) render_preset_name::name#10 render_preset_name::@23/(const byte*) render_preset_name::name#1 render_preset_name::@24/(const byte*) render_preset_name::name#2 render_preset_name::@33/(const byte*) render_preset_name::name#0 render_preset_name::@25/(const byte*) render_preset_name::name#3 render_preset_name::@26/(const byte*) render_preset_name::name#4 render_preset_name::@27/(const byte*) render_preset_name::name#5 render_preset_name::@28/(const byte*) render_preset_name::name#6 render_preset_name::@29/(const byte*) render_preset_name::name#7 render_preset_name::@30/(const byte*) render_preset_name::name#8 )
[320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12
[321] call print_str_at [321] call print_str_at
to:render_preset_name::@return to:render_preset_name::@return

File diff suppressed because it is too large Load Diff

View File

@ -1545,7 +1545,6 @@
(const byte*) render_preset_name::name#0 name#0 = (string) "Standard Charset @" (const byte*) render_preset_name::name#0 name#0 = (string) "Standard Charset @"
(const byte*) render_preset_name::name#1 name#1 = (string) "Extended Color Charset @" (const byte*) render_preset_name::name#1 name#1 = (string) "Extended Color Charset @"
(const byte*) render_preset_name::name#10 name#10 = (string) "8bpp Pixel Cell @" (const byte*) render_preset_name::name#10 name#10 = (string) "8bpp Pixel Cell @"
(const byte*) render_preset_name::name#11 name#11 = (string) "Standard Charset @"
(byte*) render_preset_name::name#12 name zp ZP_WORD:3 2.0 (byte*) render_preset_name::name#12 name zp ZP_WORD:3 2.0
(const byte*) render_preset_name::name#2 name#2 = (string) "Standard Bitmap @" (const byte*) render_preset_name::name#2 name#2 = (string) "Standard Bitmap @"
(const byte*) render_preset_name::name#3 name#3 = (string) "Multicolor Bitmap @" (const byte*) render_preset_name::name#3 name#3 = (string) "Multicolor Bitmap @"

View File

@ -7955,6 +7955,7 @@ Removing PHI-reference to removed block (menu::@3) in block menu::@return
if() condition always true - replacing block destination [232] if(true) goto menu::@4 if() condition always true - replacing block destination [232] if(true) goto menu::@4
if() condition always true - replacing block destination [297] if(true) goto mode_ctrl::@2 if() condition always true - replacing block destination [297] if(true) goto mode_ctrl::@2
Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantStringConsolidation
Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_xhi#0 + 0) w= *(bitmap_plot_xlo#0 + 0) Fixing inline constructor with bitmap_clear::$3 ← *(bitmap_plot_xhi#0 + 0) w= *(bitmap_plot_xlo#0 + 0)
Fixing inline constructor with bitmap_plot::$2 ← *(bitmap_plot_xhi#0 + bitmap_plot::x#4) w= *(bitmap_plot_xlo#0 + bitmap_plot::x#4) Fixing inline constructor with bitmap_plot::$2 ← *(bitmap_plot_xhi#0 + bitmap_plot::x#4) w= *(bitmap_plot_xlo#0 + bitmap_plot::x#4)
Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#4) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#4) Fixing inline constructor with bitmap_plot::$3 ← *(bitmap_plot_yhi#0 + bitmap_plot::y#4) w= *(bitmap_plot_ylo#0 + bitmap_plot::y#4)

View File

@ -62,8 +62,6 @@ test_sbytes: {
sta assert_sbyte.msg+1 sta assert_sbyte.msg+1
jsr assert_sbyte jsr assert_sbyte
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=-2@" msg2: .text "0+2-4=-2@"
msg3: .text "-(0+2-4)=2@" msg3: .text "-(0+2-4)=2@"
msg4: .text "-127-127=2@" msg4: .text "-127-127=2@"
@ -101,9 +99,6 @@ assert_sbyte: {
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2 jmp b2
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
// Print a zero-terminated string // Print a zero-terminated string
// print_str(byte* zeropage(2) str) // print_str(byte* zeropage(2) str)
@ -195,8 +190,6 @@ test_bytes: {
sta assert_byte.msg+1 sta assert_byte.msg+1
jsr assert_byte jsr assert_byte
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=254@" msg2: .text "0+2-4=254@"
} }
// assert_byte(byte* zeropage(2) msg, byte register(X) b, byte zeropage(4) c) // assert_byte(byte* zeropage(2) msg, byte register(X) b, byte zeropage(4) c)
@ -228,9 +221,6 @@ assert_byte: {
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2 jmp b2
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
// Clear the screen. Also resets current line/char cursor. // Clear the screen. Also resets current line/char cursor.
print_cls: { print_cls: {
@ -255,3 +245,8 @@ print_cls: {
bne b1 bne b1
rts rts
} }
str: .text " @"
str2: .text "ok@"
msg1: .text "0+2=2@"
msg: .text "0=0@"
str1: .text "fail!@"

View File

@ -48,7 +48,7 @@ test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4
assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
[22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_sbytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@2/-(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@3/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@4/(byte/signed byte/word/signed word/dword/signed dword) 2 ) [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_sbytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@2/-(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@3/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@4/(byte/signed byte/word/signed word/dword/signed dword) 2 )
[22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 )
[22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 ) [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) msg test_sbytes::@1/(const string) msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 )
[23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
[24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1
[25] call print_str [25] call print_str
@ -77,7 +77,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6
to:assert_sbyte::@2 to:assert_sbyte::@2
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 ) [36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 )
[36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str ) [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) str1 assert_byte::@3/(const string) str2 assert_byte::@5/(const string) str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) str1 assert_sbyte::@3/(const string) str2 assert_sbyte::@5/(const string) str )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[37] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#80 print_str::@2/(byte*) print_char_cursor#1 ) [37] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#80 print_str::@2/(byte*) print_char_cursor#1 )
@ -123,7 +123,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
[55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 ) [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 )
[55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 )
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 ) [55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 )
[55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 ) [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) msg test_bytes::@1/(const string) msg1 test_bytes::@2/(const string) test_bytes::msg2 )
[56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
[57] call print_str [57] call print_str
to:assert_byte::@5 to:assert_byte::@5

View File

@ -921,6 +921,7 @@ Constant (const signed byte) assert_sbyte::b#3 = test_sbytes::be#0
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Constant (const byte) assert_byte::b#2 = test_bytes::bd#0 Constant (const byte) assert_byte::b#2 = test_bytes::bd#0
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantStringConsolidation
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) print_ln::@2
@ -971,13 +972,17 @@ Inlining constant with var siblings (const signed byte) assert_sbyte::b#4
Inlining constant with var siblings (const signed byte) assert_sbyte::b#3 Inlining constant with var siblings (const signed byte) assert_sbyte::b#3
Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined test_bytes::msg = (const string) msg
Constant inlined test_sbytes::msg = (const string) msg
Constant inlined assert_sbyte::b#2 = (const signed byte) test_sbytes::bd#0 Constant inlined assert_sbyte::b#2 = (const signed byte) test_sbytes::bd#0
Constant inlined assert_sbyte::c#1 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined assert_sbyte::c#1 = (byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined assert_sbyte::b#1 = (const signed byte) test_sbytes::bc#0 Constant inlined assert_sbyte::b#1 = (const signed byte) test_sbytes::bc#0
Constant inlined assert_sbyte::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined assert_sbyte::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined assert_byte::b#0 = (const byte) test_bytes::bb#0 Constant inlined assert_byte::b#0 = (const byte) test_bytes::bb#0
Constant inlined assert_sbyte::str1 = (const string) str1
Constant inlined assert_sbyte::b#0 = (const signed byte) test_sbytes::bb#0 Constant inlined assert_sbyte::b#0 = (const signed byte) test_sbytes::bb#0
Constant inlined assert_byte::b#1 = (const byte) test_bytes::bc#0 Constant inlined assert_byte::b#1 = (const byte) test_bytes::bc#0
Constant inlined assert_sbyte::str2 = (const string) str2
Constant inlined assert_byte::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined assert_byte::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined assert_byte::b#2 = (const byte) test_bytes::bd#0 Constant inlined assert_byte::b#2 = (const byte) test_bytes::bd#0
Constant inlined assert_byte::c#1 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined assert_byte::c#1 = (byte/signed byte/word/signed word/dword/signed dword) 2
@ -991,22 +996,28 @@ Constant inlined assert_sbyte::b#3 = (const signed byte) test_sbytes::be#0
Constant inlined assert_sbyte::c#2 = -(byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined assert_sbyte::c#2 = -(byte/signed byte/word/signed word/dword/signed dword) 2
Constant inlined test_sbytes::$8 = -(byte/signed byte/word/signed word/dword/signed dword) 127 Constant inlined test_sbytes::$8 = -(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined test_sbytes::$9 = -(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127 Constant inlined test_sbytes::$9 = -(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined assert_byte::msg#0 = (const string) test_bytes::msg Constant inlined assert_byte::str2 = (const string) str2
Constant inlined assert_byte::msg#1 = (const string) test_bytes::msg1 Constant inlined assert_byte::msg#0 = (const string) msg
Constant inlined test_sbytes::msg1 = (const string) msg1
Constant inlined assert_byte::str1 = (const string) str1
Constant inlined assert_byte::msg#1 = (const string) msg1
Constant inlined assert_byte::msg#2 = (const string) test_bytes::msg2 Constant inlined assert_byte::msg#2 = (const string) test_bytes::msg2
Constant inlined assert_sbyte::msg#0 = (const string) test_sbytes::msg Constant inlined assert_sbyte::msg#0 = (const string) msg
Constant inlined assert_sbyte::msg#1 = (const string) test_sbytes::msg1 Constant inlined assert_sbyte::msg#1 = (const string) msg1
Constant inlined assert_sbyte::msg#2 = (const string) test_sbytes::msg2 Constant inlined assert_sbyte::msg#2 = (const string) test_sbytes::msg2
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined assert_sbyte::msg#3 = (const string) test_sbytes::msg3 Constant inlined assert_sbyte::msg#3 = (const string) test_sbytes::msg3
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined print_str::str#4 = (const string) assert_byte::str2 Constant inlined assert_sbyte::str = (const string) str
Constant inlined assert_byte::str = (const string) str
Constant inlined test_bytes::msg1 = (const string) msg1
Constant inlined print_str::str#4 = (const string) str2
Constant inlined assert_sbyte::msg#4 = (const string) test_sbytes::msg4 Constant inlined assert_sbyte::msg#4 = (const string) test_sbytes::msg4
Constant inlined print_str::str#3 = (const string) assert_byte::str1 Constant inlined print_str::str#3 = (const string) str1
Constant inlined print_str::str#2 = (const string) assert_byte::str Constant inlined print_str::str#2 = (const string) str
Constant inlined print_str::str#8 = (const string) assert_sbyte::str2 Constant inlined print_str::str#8 = (const string) str2
Constant inlined print_str::str#7 = (const string) assert_sbyte::str1 Constant inlined print_str::str#7 = (const string) str1
Constant inlined print_str::str#6 = (const string) assert_sbyte::str Constant inlined print_str::str#6 = (const string) str
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
@ -1127,7 +1138,7 @@ test_sbytes::@return: scope:[test_sbytes] from test_sbytes::@4
assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4 assert_sbyte: scope:[assert_sbyte] from test_sbytes test_sbytes::@1 test_sbytes::@2 test_sbytes::@3 test_sbytes::@4
[22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_sbytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@2/-(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@3/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@4/(byte/signed byte/word/signed word/dword/signed dword) 2 ) [22] (signed byte) assert_sbyte::c#5 ← phi( test_sbytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_sbytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@2/-(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@3/(byte/signed byte/word/signed word/dword/signed dword) 2 test_sbytes::@4/(byte/signed byte/word/signed word/dword/signed dword) 2 )
[22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 ) [22] (signed byte) assert_sbyte::b#5 ← phi( test_sbytes/(const signed byte) test_sbytes::bb#0 test_sbytes::@1/(const signed byte) test_sbytes::bc#0 test_sbytes::@2/(const signed byte) test_sbytes::bd#0 test_sbytes::@3/(const signed byte) test_sbytes::be#0 test_sbytes::@4/(const signed byte) test_sbytes::bf#0 )
[22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) test_sbytes::msg test_sbytes::@1/(const string) test_sbytes::msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 ) [22] (byte*) assert_sbyte::msg#5 ← phi( test_sbytes/(const string) msg test_sbytes::@1/(const string) msg1 test_sbytes::@2/(const string) test_sbytes::msg2 test_sbytes::@3/(const string) test_sbytes::msg3 test_sbytes::@4/(const string) test_sbytes::msg4 )
[23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5 [23] (byte*) print_str::str#5 ← (byte*) assert_sbyte::msg#5
[24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1 [24] (byte*~) print_char_cursor#87 ← (byte*) print_line_cursor#1
[25] call print_str [25] call print_str
@ -1156,7 +1167,7 @@ assert_sbyte::@1: scope:[assert_sbyte] from assert_sbyte::@6
to:assert_sbyte::@2 to:assert_sbyte::@2
print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5 print_str: scope:[print_str] from assert_byte assert_byte::@1 assert_byte::@3 assert_byte::@5 assert_sbyte assert_sbyte::@1 assert_sbyte::@3 assert_sbyte::@5
[36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 ) [36] (byte*) print_char_cursor#80 ← phi( assert_byte/(byte*) print_char_cursor#70 assert_byte::@1/(byte*) print_char_cursor#2 assert_byte::@3/(byte*) print_char_cursor#2 assert_byte::@5/(byte*) print_char_cursor#2 assert_sbyte/(byte*~) print_char_cursor#87 assert_sbyte::@1/(byte*) print_char_cursor#2 assert_sbyte::@3/(byte*) print_char_cursor#2 assert_sbyte::@5/(byte*) print_char_cursor#2 )
[36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) assert_byte::str1 assert_byte::@3/(const string) assert_byte::str2 assert_byte::@5/(const string) assert_byte::str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) assert_sbyte::str1 assert_sbyte::@3/(const string) assert_sbyte::str2 assert_sbyte::@5/(const string) assert_sbyte::str ) [36] (byte*) print_str::str#11 ← phi( assert_byte/(byte*) print_str::str#1 assert_byte::@1/(const string) str1 assert_byte::@3/(const string) str2 assert_byte::@5/(const string) str assert_sbyte/(byte*) print_str::str#5 assert_sbyte::@1/(const string) str1 assert_sbyte::@3/(const string) str2 assert_sbyte::@5/(const string) str )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[37] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#80 print_str::@2/(byte*) print_char_cursor#1 ) [37] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#80 print_str::@2/(byte*) print_char_cursor#1 )
@ -1202,7 +1213,7 @@ assert_byte: scope:[assert_byte] from test_bytes test_bytes::@1 test_bytes::@2
[55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 ) [55] (byte) assert_byte::c#3 ← phi( test_bytes/(byte/signed byte/word/signed word/dword/signed dword) 0 test_bytes::@1/(byte/signed byte/word/signed word/dword/signed dword) 2 test_bytes::@2/(byte/word/signed word/dword/signed dword) 254 )
[55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 ) [55] (byte) assert_byte::b#3 ← phi( test_bytes/(const byte) test_bytes::bb#0 test_bytes::@1/(const byte) test_bytes::bc#0 test_bytes::@2/(const byte) test_bytes::bd#0 )
[55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 ) [55] (byte*) print_char_cursor#70 ← phi( test_bytes/((byte*))(word/signed word/dword/signed dword) 1024 test_bytes::@1/(byte*~) print_char_cursor#93 test_bytes::@2/(byte*~) print_char_cursor#94 )
[55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) test_bytes::msg test_bytes::@1/(const string) test_bytes::msg1 test_bytes::@2/(const string) test_bytes::msg2 ) [55] (byte*) assert_byte::msg#3 ← phi( test_bytes/(const string) msg test_bytes::@1/(const string) msg1 test_bytes::@2/(const string) test_bytes::msg2 )
[56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3 [56] (byte*) print_str::str#1 ← (byte*) assert_byte::msg#3
[57] call print_str [57] call print_str
to:assert_byte::@5 to:assert_byte::@5
@ -1408,7 +1419,7 @@ test_sbytes: {
//SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsz1=vbsc1 //SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsz1=vbsc1
lda #bb lda #bb
sta assert_sbyte.b sta assert_sbyte.b
//SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 //SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1
lda #<msg lda #<msg
sta assert_sbyte.msg sta assert_sbyte.msg
lda #>msg lda #>msg
@ -1428,7 +1439,7 @@ test_sbytes: {
//SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsz1=vbsc1 //SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsz1=vbsc1
lda #bc lda #bc
sta assert_sbyte.b sta assert_sbyte.b
//SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 //SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1
lda #<msg1 lda #<msg1
sta assert_sbyte.msg sta assert_sbyte.msg
lda #>msg1 lda #>msg1
@ -1499,8 +1510,6 @@ test_sbytes: {
breturn: breturn:
//SEG58 [21] return //SEG58 [21] return
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=-2@" msg2: .text "0+2-4=-2@"
msg3: .text "-(0+2-4)=2@" msg3: .text "-(0+2-4)=2@"
msg4: .text "-127-127=2@" msg4: .text "-127-127=2@"
@ -1536,7 +1545,7 @@ assert_sbyte: {
//SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] //SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str]
print_str_from_b5: print_str_from_b5:
//SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy //SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy
//SEG71 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 //SEG71 [36] phi (byte*) print_str::str#11 = (const string) str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -1558,7 +1567,7 @@ assert_sbyte: {
//SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] //SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str]
print_str_from_b3: print_str_from_b3:
//SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy //SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy
//SEG79 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 //SEG79 [36] phi (byte*) print_str::str#11 = (const string) str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -1589,16 +1598,13 @@ assert_sbyte: {
//SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] //SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy //SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy
//SEG92 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 //SEG92 [36] phi (byte*) print_str::str#11 = (const string) str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2_from_b1 jmp b2_from_b1
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
//SEG93 print_str //SEG93 print_str
// Print a zero-terminated string // Print a zero-terminated string
@ -1700,7 +1706,7 @@ test_bytes: {
sta print_char_cursor sta print_char_cursor
lda #>$400 lda #>$400
sta print_char_cursor+1 sta print_char_cursor+1
//SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 //SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1
lda #<msg lda #<msg
sta assert_byte.msg sta assert_byte.msg
lda #>msg lda #>msg
@ -1725,7 +1731,7 @@ test_bytes: {
lda #bc lda #bc
sta assert_byte.b sta assert_byte.b
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy //SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
//SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 //SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
lda #<msg1 lda #<msg1
sta assert_byte.msg sta assert_byte.msg
lda #>msg1 lda #>msg1
@ -1761,8 +1767,6 @@ test_bytes: {
breturn: breturn:
//SEG140 [54] return //SEG140 [54] return
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=254@" msg2: .text "0+2-4=254@"
} }
//SEG141 assert_byte //SEG141 assert_byte
@ -1791,7 +1795,7 @@ assert_byte: {
//SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] //SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str]
print_str_from_b5: print_str_from_b5:
//SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy //SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy
//SEG152 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 //SEG152 [36] phi (byte*) print_str::str#11 = (const string) str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -1813,7 +1817,7 @@ assert_byte: {
//SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] //SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str]
print_str_from_b3: print_str_from_b3:
//SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy //SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy
//SEG160 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 //SEG160 [36] phi (byte*) print_str::str#11 = (const string) str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -1844,16 +1848,13 @@ assert_byte: {
//SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] //SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy //SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy
//SEG173 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 //SEG173 [36] phi (byte*) print_str::str#11 = (const string) str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2_from_b1 jmp b2_from_b1
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
//SEG174 print_cls //SEG174 print_cls
// Clear the screen. Also resets current line/char cursor. // Clear the screen. Also resets current line/char cursor.
@ -1895,6 +1896,11 @@ print_cls: {
//SEG184 [73] return //SEG184 [73] return
rts rts
} }
str: .text " @"
str2: .text "ok@"
msg1: .text "0+2=2@"
msg: .text "0=0@"
str1: .text "fail!@"
REGISTER UPLIFT POTENTIAL REGISTERS REGISTER UPLIFT POTENTIAL REGISTERS
Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) BGCOL#0) ← (const byte) GREEN#0 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -2051,7 +2057,7 @@ test_sbytes: {
sta assert_sbyte.c sta assert_sbyte.c
//SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 //SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1
ldx #bb ldx #bb
//SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 //SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1
lda #<msg lda #<msg
sta assert_sbyte.msg sta assert_sbyte.msg
lda #>msg lda #>msg
@ -2070,7 +2076,7 @@ test_sbytes: {
sta assert_sbyte.c sta assert_sbyte.c
//SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 //SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1
ldx #bc ldx #bc
//SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 //SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1
lda #<msg1 lda #<msg1
sta assert_sbyte.msg sta assert_sbyte.msg
lda #>msg1 lda #>msg1
@ -2138,8 +2144,6 @@ test_sbytes: {
breturn: breturn:
//SEG58 [21] return //SEG58 [21] return
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=-2@" msg2: .text "0+2-4=-2@"
msg3: .text "-(0+2-4)=2@" msg3: .text "-(0+2-4)=2@"
msg4: .text "-127-127=2@" msg4: .text "-127-127=2@"
@ -2170,7 +2174,7 @@ assert_sbyte: {
//SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] //SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str]
print_str_from_b5: print_str_from_b5:
//SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy //SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy
//SEG71 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 //SEG71 [36] phi (byte*) print_str::str#11 = (const string) str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -2191,7 +2195,7 @@ assert_sbyte: {
//SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] //SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str]
print_str_from_b3: print_str_from_b3:
//SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy //SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy
//SEG79 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 //SEG79 [36] phi (byte*) print_str::str#11 = (const string) str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -2222,16 +2226,13 @@ assert_sbyte: {
//SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] //SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy //SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy
//SEG92 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 //SEG92 [36] phi (byte*) print_str::str#11 = (const string) str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2_from_b1 jmp b2_from_b1
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
//SEG93 print_str //SEG93 print_str
// Print a zero-terminated string // Print a zero-terminated string
@ -2332,7 +2333,7 @@ test_bytes: {
sta print_char_cursor sta print_char_cursor
lda #>$400 lda #>$400
sta print_char_cursor+1 sta print_char_cursor+1
//SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 //SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1
lda #<msg lda #<msg
sta assert_byte.msg sta assert_byte.msg
lda #>msg lda #>msg
@ -2356,7 +2357,7 @@ test_bytes: {
//SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 //SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1
ldx #bc ldx #bc
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy //SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
//SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 //SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
lda #<msg1 lda #<msg1
sta assert_byte.msg sta assert_byte.msg
lda #>msg1 lda #>msg1
@ -2391,8 +2392,6 @@ test_bytes: {
breturn: breturn:
//SEG140 [54] return //SEG140 [54] return
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=254@" msg2: .text "0+2-4=254@"
} }
//SEG141 assert_byte //SEG141 assert_byte
@ -2416,7 +2415,7 @@ assert_byte: {
//SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] //SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str]
print_str_from_b5: print_str_from_b5:
//SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy //SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy
//SEG152 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 //SEG152 [36] phi (byte*) print_str::str#11 = (const string) str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -2437,7 +2436,7 @@ assert_byte: {
//SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] //SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str]
print_str_from_b3: print_str_from_b3:
//SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy //SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy
//SEG160 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 //SEG160 [36] phi (byte*) print_str::str#11 = (const string) str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -2468,16 +2467,13 @@ assert_byte: {
//SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] //SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy //SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy
//SEG173 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 //SEG173 [36] phi (byte*) print_str::str#11 = (const string) str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2_from_b1 jmp b2_from_b1
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
//SEG174 print_cls //SEG174 print_cls
// Clear the screen. Also resets current line/char cursor. // Clear the screen. Also resets current line/char cursor.
@ -2519,6 +2515,11 @@ print_cls: {
//SEG184 [73] return //SEG184 [73] return
rts rts
} }
str: .text " @"
str2: .text "ok@"
msg1: .text "0+2=2@"
msg: .text "0=0@"
str1: .text "fail!@"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b24 Removing instruction jmp b24
@ -2660,9 +2661,6 @@ FINAL SYMBOL TABLE
(byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4 (byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4
(byte*) assert_byte::msg (byte*) assert_byte::msg
(byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0 (byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0
(const string) assert_byte::str str = (string) " @"
(const string) assert_byte::str1 str1 = (string) "fail!@"
(const string) assert_byte::str2 str2 = (string) "ok@"
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(label) assert_sbyte::@1 (label) assert_sbyte::@1
(label) assert_sbyte::@2 (label) assert_sbyte::@2
@ -2676,13 +2674,12 @@ FINAL SYMBOL TABLE
(signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333 (signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333
(byte*) assert_sbyte::msg (byte*) assert_sbyte::msg
(byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0 (byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0
(const string) assert_sbyte::str str = (string) " @"
(const string) assert_sbyte::str1 str1 = (string) "fail!@"
(const string) assert_sbyte::str2 str2 = (string) "ok@"
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(const string) msg msg = (string) "0=0@"
(const string) msg1 msg1 = (string) "0+2=2@"
(byte*) print_char_cursor (byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 11.0 (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 11.0
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231 (byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231
@ -2717,6 +2714,9 @@ FINAL SYMBOL TABLE
(byte*) print_str::str#10 str zp ZP_WORD:2 11.5 (byte*) print_str::str#10 str zp ZP_WORD:2 11.5
(byte*) print_str::str#11 str zp ZP_WORD:2 6.0 (byte*) print_str::str#11 str zp ZP_WORD:2 6.0
(byte*) print_str::str#5 str zp ZP_WORD:2 2.0 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0
(const string) str str = (string) " @"
(const string) str1 str1 = (string) "fail!@"
(const string) str2 str2 = (string) "ok@"
(void()) test_bytes() (void()) test_bytes()
(label) test_bytes::@1 (label) test_bytes::@1
(label) test_bytes::@2 (label) test_bytes::@2
@ -2727,8 +2727,6 @@ FINAL SYMBOL TABLE
(const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word/dword/signed dword) 2 (const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test_bytes::bd (byte) test_bytes::bd
(const byte) test_bytes::bd#0 bd = ((byte))((signed byte))(const byte) test_bytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4 (const byte) test_bytes::bd#0 bd = ((byte))((signed byte))(const byte) test_bytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4
(const string) test_bytes::msg msg = (string) "0=0@"
(const string) test_bytes::msg1 msg1 = (string) "0+2=2@"
(const string) test_bytes::msg2 msg2 = (string) "0+2-4=254@" (const string) test_bytes::msg2 msg2 = (string) "0+2-4=254@"
(void()) test_sbytes() (void()) test_sbytes()
(label) test_sbytes::@1 (label) test_sbytes::@1
@ -2746,8 +2744,6 @@ FINAL SYMBOL TABLE
(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0 (const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0
(signed byte) test_sbytes::bf (signed byte) test_sbytes::bf
(const signed byte) test_sbytes::bf#0 bf = ((signed byte))-(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127 (const signed byte) test_sbytes::bf#0 bf = ((signed byte))-(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127
(const string) test_sbytes::msg msg = (string) "0=0@"
(const string) test_sbytes::msg1 msg1 = (string) "0+2=2@"
(const string) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@" (const string) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@"
(const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@" (const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@"
(const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@" (const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@"
@ -2817,7 +2813,7 @@ test_sbytes: {
sta assert_sbyte.c sta assert_sbyte.c
//SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1 //SEG27 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bb#0 [phi:test_sbytes->assert_sbyte#1] -- vbsxx=vbsc1
ldx #bb ldx #bb
//SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1 //SEG28 [22] phi (byte*) assert_sbyte::msg#5 = (const string) msg [phi:test_sbytes->assert_sbyte#2] -- pbuz1=pbuc1
lda #<msg lda #<msg
sta assert_sbyte.msg sta assert_sbyte.msg
lda #>msg lda #>msg
@ -2832,7 +2828,7 @@ test_sbytes: {
sta assert_sbyte.c sta assert_sbyte.c
//SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1 //SEG34 [22] phi (signed byte) assert_sbyte::b#5 = (const signed byte) test_sbytes::bc#0 [phi:test_sbytes::@1->assert_sbyte#1] -- vbsxx=vbsc1
ldx #bc ldx #bc
//SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) test_sbytes::msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1 //SEG35 [22] phi (byte*) assert_sbyte::msg#5 = (const string) msg1 [phi:test_sbytes::@1->assert_sbyte#2] -- pbuz1=pbuc1
lda #<msg1 lda #<msg1
sta assert_sbyte.msg sta assert_sbyte.msg
lda #>msg1 lda #>msg1
@ -2886,8 +2882,6 @@ test_sbytes: {
//SEG57 test_sbytes::@return //SEG57 test_sbytes::@return
//SEG58 [21] return //SEG58 [21] return
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=-2@" msg2: .text "0+2-4=-2@"
msg3: .text "-(0+2-4)=2@" msg3: .text "-(0+2-4)=2@"
msg4: .text "-127-127=2@" msg4: .text "-127-127=2@"
@ -2913,7 +2907,7 @@ assert_sbyte: {
//SEG68 [27] call print_str //SEG68 [27] call print_str
//SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str] //SEG69 [36] phi from assert_sbyte::@5 to print_str [phi:assert_sbyte::@5->print_str]
//SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy //SEG70 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@5->print_str#0] -- register_copy
//SEG71 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1 //SEG71 [36] phi (byte*) print_str::str#11 = (const string) str [phi:assert_sbyte::@5->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -2928,7 +2922,7 @@ assert_sbyte: {
//SEG76 [30] call print_str //SEG76 [30] call print_str
//SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str] //SEG77 [36] phi from assert_sbyte::@3 to print_str [phi:assert_sbyte::@3->print_str]
//SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy //SEG78 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@3->print_str#0] -- register_copy
//SEG79 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1 //SEG79 [36] phi (byte*) print_str::str#11 = (const string) str2 [phi:assert_sbyte::@3->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -2952,16 +2946,13 @@ assert_sbyte: {
//SEG89 [35] call print_str //SEG89 [35] call print_str
//SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str] //SEG90 [36] phi from assert_sbyte::@1 to print_str [phi:assert_sbyte::@1->print_str]
//SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy //SEG91 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_sbyte::@1->print_str#0] -- register_copy
//SEG92 [36] phi (byte*) print_str::str#11 = (const string) assert_sbyte::str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1 //SEG92 [36] phi (byte*) print_str::str#11 = (const string) str1 [phi:assert_sbyte::@1->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2 jmp b2
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
//SEG93 print_str //SEG93 print_str
// Print a zero-terminated string // Print a zero-terminated string
@ -3050,7 +3041,7 @@ test_bytes: {
sta print_char_cursor sta print_char_cursor
lda #>$400 lda #>$400
sta print_char_cursor+1 sta print_char_cursor+1
//SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1 //SEG120 [55] phi (byte*) assert_byte::msg#3 = (const string) msg [phi:test_bytes->assert_byte#4] -- pbuz1=pbuc1
lda #<msg lda #<msg
sta assert_byte.msg sta assert_byte.msg
lda #>msg lda #>msg
@ -3071,7 +3062,7 @@ test_bytes: {
//SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1 //SEG127 [55] phi (byte) assert_byte::b#3 = (const byte) test_bytes::bc#0 [phi:test_bytes::@1->assert_byte#2] -- vbuxx=vbuc1
ldx #bc ldx #bc
//SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy //SEG128 [55] phi (byte*) print_char_cursor#70 = (byte*~) print_char_cursor#93 [phi:test_bytes::@1->assert_byte#3] -- register_copy
//SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) test_bytes::msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1 //SEG129 [55] phi (byte*) assert_byte::msg#3 = (const string) msg1 [phi:test_bytes::@1->assert_byte#4] -- pbuz1=pbuc1
lda #<msg1 lda #<msg1
sta assert_byte.msg sta assert_byte.msg
lda #>msg1 lda #>msg1
@ -3101,8 +3092,6 @@ test_bytes: {
//SEG139 test_bytes::@return //SEG139 test_bytes::@return
//SEG140 [54] return //SEG140 [54] return
rts rts
msg: .text "0=0@"
msg1: .text "0+2=2@"
msg2: .text "0+2-4=254@" msg2: .text "0+2-4=254@"
} }
//SEG141 assert_byte //SEG141 assert_byte
@ -3121,7 +3110,7 @@ assert_byte: {
//SEG149 [59] call print_str //SEG149 [59] call print_str
//SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str] //SEG150 [36] phi from assert_byte::@5 to print_str [phi:assert_byte::@5->print_str]
//SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy //SEG151 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@5->print_str#0] -- register_copy
//SEG152 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1 //SEG152 [36] phi (byte*) print_str::str#11 = (const string) str [phi:assert_byte::@5->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -3136,7 +3125,7 @@ assert_byte: {
//SEG157 [62] call print_str //SEG157 [62] call print_str
//SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str] //SEG158 [36] phi from assert_byte::@3 to print_str [phi:assert_byte::@3->print_str]
//SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy //SEG159 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@3->print_str#0] -- register_copy
//SEG160 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1 //SEG160 [36] phi (byte*) print_str::str#11 = (const string) str2 [phi:assert_byte::@3->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -3160,16 +3149,13 @@ assert_byte: {
//SEG170 [67] call print_str //SEG170 [67] call print_str
//SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str] //SEG171 [36] phi from assert_byte::@1 to print_str [phi:assert_byte::@1->print_str]
//SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy //SEG172 [36] phi (byte*) print_char_cursor#80 = (byte*) print_char_cursor#2 [phi:assert_byte::@1->print_str#0] -- register_copy
//SEG173 [36] phi (byte*) print_str::str#11 = (const string) assert_byte::str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1 //SEG173 [36] phi (byte*) print_str::str#11 = (const string) str1 [phi:assert_byte::@1->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b2 jmp b2
str: .text " @"
str1: .text "fail!@"
str2: .text "ok@"
} }
//SEG174 print_cls //SEG174 print_cls
// Clear the screen. Also resets current line/char cursor. // Clear the screen. Also resets current line/char cursor.
@ -3205,4 +3191,9 @@ print_cls: {
//SEG184 [73] return //SEG184 [73] return
rts rts
} }
str: .text " @"
str2: .text "ok@"
msg1: .text "0+2=2@"
msg: .text "0=0@"
str1: .text "fail!@"

View File

@ -20,9 +20,6 @@
(byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4 (byte) assert_byte::c#3 c zp ZP_BYTE:4 0.4
(byte*) assert_byte::msg (byte*) assert_byte::msg
(byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0 (byte*) assert_byte::msg#3 msg zp ZP_WORD:2 2.0
(const string) assert_byte::str str = (string) " @"
(const string) assert_byte::str1 str1 = (string) "fail!@"
(const string) assert_byte::str2 str2 = (string) "ok@"
(void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c) (void()) assert_sbyte((byte*) assert_sbyte::msg , (signed byte) assert_sbyte::b , (signed byte) assert_sbyte::c)
(label) assert_sbyte::@1 (label) assert_sbyte::@1
(label) assert_sbyte::@2 (label) assert_sbyte::@2
@ -36,13 +33,12 @@
(signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333 (signed byte) assert_sbyte::c#5 c zp ZP_BYTE:4 0.3333333333333333
(byte*) assert_sbyte::msg (byte*) assert_sbyte::msg
(byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0 (byte*) assert_sbyte::msg#5 msg zp ZP_WORD:2 2.0
(const string) assert_sbyte::str str = (string) " @"
(const string) assert_sbyte::str1 str1 = (string) "fail!@"
(const string) assert_sbyte::str2 str2 = (string) "ok@"
(void()) main() (void()) main()
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@return (label) main::@return
(const string) msg msg = (string) "0=0@"
(const string) msg1 msg1 = (string) "0+2=2@"
(byte*) print_char_cursor (byte*) print_char_cursor
(byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 11.0 (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:5 11.0
(byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231 (byte*) print_char_cursor#2 print_char_cursor zp ZP_WORD:5 2.230769230769231
@ -77,6 +73,9 @@
(byte*) print_str::str#10 str zp ZP_WORD:2 11.5 (byte*) print_str::str#10 str zp ZP_WORD:2 11.5
(byte*) print_str::str#11 str zp ZP_WORD:2 6.0 (byte*) print_str::str#11 str zp ZP_WORD:2 6.0
(byte*) print_str::str#5 str zp ZP_WORD:2 2.0 (byte*) print_str::str#5 str zp ZP_WORD:2 2.0
(const string) str str = (string) " @"
(const string) str1 str1 = (string) "fail!@"
(const string) str2 str2 = (string) "ok@"
(void()) test_bytes() (void()) test_bytes()
(label) test_bytes::@1 (label) test_bytes::@1
(label) test_bytes::@2 (label) test_bytes::@2
@ -87,8 +86,6 @@
(const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word/dword/signed dword) 2 (const byte) test_bytes::bc#0 bc = (const byte) test_bytes::bb#0+(byte/signed byte/word/signed word/dword/signed dword) 2
(byte) test_bytes::bd (byte) test_bytes::bd
(const byte) test_bytes::bd#0 bd = ((byte))((signed byte))(const byte) test_bytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4 (const byte) test_bytes::bd#0 bd = ((byte))((signed byte))(const byte) test_bytes::bc#0-(byte/signed byte/word/signed word/dword/signed dword) 4
(const string) test_bytes::msg msg = (string) "0=0@"
(const string) test_bytes::msg1 msg1 = (string) "0+2=2@"
(const string) test_bytes::msg2 msg2 = (string) "0+2-4=254@" (const string) test_bytes::msg2 msg2 = (string) "0+2-4=254@"
(void()) test_sbytes() (void()) test_sbytes()
(label) test_sbytes::@1 (label) test_sbytes::@1
@ -106,8 +103,6 @@
(const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0 (const signed byte) test_sbytes::be#0 be = -(const signed byte) test_sbytes::bd#0
(signed byte) test_sbytes::bf (signed byte) test_sbytes::bf
(const signed byte) test_sbytes::bf#0 bf = ((signed byte))-(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127 (const signed byte) test_sbytes::bf#0 bf = ((signed byte))-(byte/signed byte/word/signed word/dword/signed dword) 127-(byte/signed byte/word/signed word/dword/signed dword) 127
(const string) test_sbytes::msg msg = (string) "0=0@"
(const string) test_sbytes::msg1 msg1 = (string) "0+2=2@"
(const string) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@" (const string) test_sbytes::msg2 msg2 = (string) "0+2-4=-2@"
(const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@" (const string) test_sbytes::msg3 msg3 = (string) "-(0+2-4)=2@"
(const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@" (const string) test_sbytes::msg4 msg4 = (string) "-127-127=2@"

View File

@ -53,9 +53,9 @@ do_perspective: {
jsr print_str jsr print_str
ldx #y ldx #y
jsr print_sbyte jsr print_sbyte
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
ldx #z ldx #z
@ -68,9 +68,9 @@ do_perspective: {
jsr perspective jsr perspective
ldx xr ldx xr
jsr print_byte jsr print_byte
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
ldx yr ldx yr
@ -84,9 +84,7 @@ do_perspective: {
rts rts
str: .text "(@" str: .text "(@"
str1: .text ",@" str1: .text ",@"
str2: .text ",@"
str3: .text ") -> (@" str3: .text ") -> (@"
str4: .text ",@"
str5: .text ")@" str5: .text ")@"
} }
// Print a newline // Print a newline

View File

@ -102,7 +102,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
to:@return to:@return
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
[44] (byte*) print_char_cursor#74 ← phi( do_perspective/((byte*))(word/signed word/dword/signed dword) 1024 do_perspective::@11/(byte*) print_char_cursor#12 do_perspective::@2/(byte*) print_char_cursor#12 do_perspective::@4/(byte*) print_char_cursor#12 do_perspective::@6/(byte*) print_char_cursor#12 do_perspective::@9/(byte*) print_char_cursor#12 ) [44] (byte*) print_char_cursor#74 ← phi( do_perspective/((byte*))(word/signed word/dword/signed dword) 1024 do_perspective::@11/(byte*) print_char_cursor#12 do_perspective::@2/(byte*) print_char_cursor#12 do_perspective::@4/(byte*) print_char_cursor#12 do_perspective::@6/(byte*) print_char_cursor#12 do_perspective::@9/(byte*) print_char_cursor#12 )
[44] (byte*) print_str::str#9 ← phi( do_perspective/(const string) do_perspective::str do_perspective::@11/(const string) do_perspective::str5 do_perspective::@2/(const string) do_perspective::str1 do_perspective::@4/(const string) do_perspective::str2 do_perspective::@6/(const string) do_perspective::str3 do_perspective::@9/(const string) do_perspective::str4 ) [44] (byte*) print_str::str#9 ← phi( do_perspective/(const string) do_perspective::str do_perspective::@11/(const string) do_perspective::str5 do_perspective::@2/(const string) do_perspective::str1 do_perspective::@4/(const string) do_perspective::str1 do_perspective::@6/(const string) do_perspective::str3 do_perspective::@9/(const string) do_perspective::str1 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[45] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#74 print_str::@2/(byte*) print_char_cursor#1 ) [45] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#74 print_str::@2/(byte*) print_char_cursor#1 )

View File

@ -1360,6 +1360,7 @@ Successful SSA optimization Pass2ConstantIdentification
Consolidated array index constant in assignment *(mulf_sqr2#0+1 + mulf_init::$5) Consolidated array index constant in assignment *(mulf_sqr2#0+1 + mulf_init::$5)
Consolidated array index constant in assignment *(mulf_init::$6+1 + mulf_init::$7) Consolidated array index constant in assignment *(mulf_init::$6+1 + mulf_init::$7)
Successful SSA optimization Pass2ConstantAdditionElimination Successful SSA optimization Pass2ConstantAdditionElimination
Successful SSA optimization Pass2ConstantStringConsolidation
Inferred type updated to byte in [73] (byte/signed word/word/dword/signed dword~) mulf_init::$5 ← (byte) mulf_init::i#2 Inferred type updated to byte in [73] (byte/signed word/word/dword/signed dword~) mulf_init::$5 ← (byte) mulf_init::i#2
Inferred type updated to byte in [75] (byte/signed word/word/dword/signed dword~) mulf_init::$7 ← (byte) mulf_init::i#2 Inferred type updated to byte in [75] (byte/signed word/word/dword/signed dword~) mulf_init::$7 ← (byte) mulf_init::i#2
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
@ -1403,7 +1404,9 @@ Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined print_sbyte::b#1 = (const signed byte) do_perspective::x#0 Constant inlined print_sbyte::b#1 = (const signed byte) do_perspective::x#0
Constant inlined print_sbyte::b#2 = (const signed byte) do_perspective::y#0 Constant inlined print_sbyte::b#2 = (const signed byte) do_perspective::y#0
Constant inlined do_perspective::str4 = (const string) do_perspective::str1
Constant inlined print_sbyte::b#3 = (const signed byte) do_perspective::z#0 Constant inlined print_sbyte::b#3 = (const signed byte) do_perspective::z#0
Constant inlined do_perspective::str2 = (const string) do_perspective::str1
Constant inlined mulf_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulf_init::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_init::$1 = (const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256 Constant inlined mulf_init::$1 = (const byte[512]) mulf_sqr1#0+(word/signed word/dword/signed dword) 256
Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined $0 = (const byte[]) print_hextab#0
@ -1422,11 +1425,11 @@ Constant inlined main::$2 = ((word))(const byte[512]) mulf_sqr2#0
Constant inlined print_char::ch#1 = (byte) ' ' Constant inlined print_char::ch#1 = (byte) ' '
Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined print_str::str#4 = (const string) do_perspective::str3 Constant inlined print_str::str#4 = (const string) do_perspective::str3
Constant inlined print_str::str#3 = (const string) do_perspective::str2 Constant inlined print_str::str#3 = (const string) do_perspective::str1
Constant inlined print_str::str#2 = (const string) do_perspective::str1 Constant inlined print_str::str#2 = (const string) do_perspective::str1
Constant inlined print_str::str#1 = (const string) do_perspective::str Constant inlined print_str::str#1 = (const string) do_perspective::str
Constant inlined print_str::str#6 = (const string) do_perspective::str5 Constant inlined print_str::str#6 = (const string) do_perspective::str5
Constant inlined print_str::str#5 = (const string) do_perspective::str4 Constant inlined print_str::str#5 = (const string) do_perspective::str1
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1) Added new block during phi lifting print_cls::@3(between print_cls::@1 and print_cls::@1)
@ -1605,7 +1608,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
to:@return to:@return
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
[44] (byte*) print_char_cursor#74 ← phi( do_perspective/((byte*))(word/signed word/dword/signed dword) 1024 do_perspective::@11/(byte*) print_char_cursor#12 do_perspective::@2/(byte*) print_char_cursor#12 do_perspective::@4/(byte*) print_char_cursor#12 do_perspective::@6/(byte*) print_char_cursor#12 do_perspective::@9/(byte*) print_char_cursor#12 ) [44] (byte*) print_char_cursor#74 ← phi( do_perspective/((byte*))(word/signed word/dword/signed dword) 1024 do_perspective::@11/(byte*) print_char_cursor#12 do_perspective::@2/(byte*) print_char_cursor#12 do_perspective::@4/(byte*) print_char_cursor#12 do_perspective::@6/(byte*) print_char_cursor#12 do_perspective::@9/(byte*) print_char_cursor#12 )
[44] (byte*) print_str::str#9 ← phi( do_perspective/(const string) do_perspective::str do_perspective::@11/(const string) do_perspective::str5 do_perspective::@2/(const string) do_perspective::str1 do_perspective::@4/(const string) do_perspective::str2 do_perspective::@6/(const string) do_perspective::str3 do_perspective::@9/(const string) do_perspective::str4 ) [44] (byte*) print_str::str#9 ← phi( do_perspective/(const string) do_perspective::str do_perspective::@11/(const string) do_perspective::str5 do_perspective::@2/(const string) do_perspective::str1 do_perspective::@4/(const string) do_perspective::str1 do_perspective::@6/(const string) do_perspective::str3 do_perspective::@9/(const string) do_perspective::str1 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[45] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#74 print_str::@2/(byte*) print_char_cursor#1 ) [45] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#74 print_str::@2/(byte*) print_char_cursor#1 )
@ -2068,10 +2071,10 @@ do_perspective: {
//SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] //SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy //SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy
//SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 //SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] //SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5]
@ -2129,10 +2132,10 @@ do_perspective: {
//SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] //SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str]
print_str_from_b9: print_str_from_b9:
//SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy //SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy
//SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 //SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b10 jmp b10
@ -2178,9 +2181,7 @@ do_perspective: {
rts rts
str: .text "(@" str: .text "(@"
str1: .text ",@" str1: .text ",@"
str2: .text ",@"
str3: .text ") -> (@" str3: .text ") -> (@"
str4: .text ",@"
str5: .text ")@" str5: .text ")@"
} }
//SEG95 print_ln //SEG95 print_ln
@ -2887,10 +2888,10 @@ do_perspective: {
//SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] //SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy //SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy
//SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 //SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] //SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5]
@ -2946,10 +2947,10 @@ do_perspective: {
//SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] //SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str]
print_str_from_b9: print_str_from_b9:
//SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy //SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy
//SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 //SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b10 jmp b10
@ -2994,9 +2995,7 @@ do_perspective: {
rts rts
str: .text "(@" str: .text "(@"
str1: .text ",@" str1: .text ",@"
str2: .text ",@"
str3: .text ") -> (@" str3: .text ") -> (@"
str4: .text ",@"
str5: .text ")@" str5: .text ")@"
} }
//SEG95 print_ln //SEG95 print_ln
@ -3657,9 +3656,7 @@ FINAL SYMBOL TABLE
(label) do_perspective::@return (label) do_perspective::@return
(const string) do_perspective::str str = (string) "(@" (const string) do_perspective::str str = (string) "(@"
(const string) do_perspective::str1 str1 = (string) ",@" (const string) do_perspective::str1 str1 = (string) ",@"
(const string) do_perspective::str2 str2 = (string) ",@"
(const string) do_perspective::str3 str3 = (string) ") -> (@" (const string) do_perspective::str3 str3 = (string) ") -> (@"
(const string) do_perspective::str4 str4 = (string) ",@"
(const string) do_perspective::str5 str5 = (string) ")@" (const string) do_perspective::str5 str5 = (string) ")@"
(signed byte) do_perspective::x (signed byte) do_perspective::x
(const signed byte) do_perspective::x#0 x = (byte/signed byte/word/signed word/dword/signed dword) 57 (const signed byte) do_perspective::x#0 x = (byte/signed byte/word/signed word/dword/signed dword) 57
@ -3888,10 +3885,10 @@ do_perspective: {
//SEG47 [21] call print_str //SEG47 [21] call print_str
//SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str] //SEG48 [44] phi from do_perspective::@4 to print_str [phi:do_perspective::@4->print_str]
//SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy //SEG49 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@4->print_str#0] -- register_copy
//SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str2 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1 //SEG50 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5] //SEG51 [22] phi from do_perspective::@4 to do_perspective::@5 [phi:do_perspective::@4->do_perspective::@5]
@ -3929,10 +3926,10 @@ do_perspective: {
//SEG73 [31] call print_str //SEG73 [31] call print_str
//SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str] //SEG74 [44] phi from do_perspective::@9 to print_str [phi:do_perspective::@9->print_str]
//SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy //SEG75 [44] phi (byte*) print_char_cursor#74 = (byte*) print_char_cursor#12 [phi:do_perspective::@9->print_str#0] -- register_copy
//SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str4 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1 //SEG76 [44] phi (byte*) print_str::str#9 = (const string) do_perspective::str1 [phi:do_perspective::@9->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG77 do_perspective::@10 //SEG77 do_perspective::@10
@ -3964,9 +3961,7 @@ do_perspective: {
rts rts
str: .text "(@" str: .text "(@"
str1: .text ",@" str1: .text ",@"
str2: .text ",@"
str3: .text ") -> (@" str3: .text ") -> (@"
str4: .text ",@"
str5: .text ")@" str5: .text ")@"
} }
//SEG95 print_ln //SEG95 print_ln

View File

@ -98,9 +98,7 @@
(label) do_perspective::@return (label) do_perspective::@return
(const string) do_perspective::str str = (string) "(@" (const string) do_perspective::str str = (string) "(@"
(const string) do_perspective::str1 str1 = (string) ",@" (const string) do_perspective::str1 str1 = (string) ",@"
(const string) do_perspective::str2 str2 = (string) ",@"
(const string) do_perspective::str3 str3 = (string) ") -> (@" (const string) do_perspective::str3 str3 = (string) ") -> (@"
(const string) do_perspective::str4 str4 = (string) ",@"
(const string) do_perspective::str5 str5 = (string) ")@" (const string) do_perspective::str5 str5 = (string) ")@"
(signed byte) do_perspective::x (signed byte) do_perspective::x
(const signed byte) do_perspective::x#0 x = (byte/signed byte/word/signed word/dword/signed dword) 57 (const signed byte) do_perspective::x#0 x = (byte/signed byte/word/signed word/dword/signed dword) 57

View File

@ -71,9 +71,9 @@ main: {
lda #>$79cb lda #>$79cb
sta print_word.w+1 sta print_word.w+1
jsr print_word jsr print_word
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
lda #<0 lda #<0
@ -94,9 +94,9 @@ main: {
lda print_line_cursor+1 lda print_line_cursor+1
sta print_char_cursor+1 sta print_char_cursor+1
jsr print_byte jsr print_byte
lda #<str3 lda #<str1
sta print_str.str sta print_str.str
lda #>str3 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
ldy i ldy i
@ -105,9 +105,9 @@ main: {
lda lintab1+1,y lda lintab1+1,y
sta print_word.w+1 sta print_word.w+1
jsr print_word jsr print_word
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
ldy i ldy i
@ -116,9 +116,9 @@ main: {
lda lintab2+1,y lda lintab2+1,y
sta print_word.w+1 sta print_word.w+1
jsr print_word jsr print_word
lda #<str5 lda #<str1
sta print_str.str sta print_str.str
lda #>str5 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
ldy i ldy i
@ -138,9 +138,9 @@ main: {
sta print_char_cursor sta print_char_cursor
lda print_line_cursor+1 lda print_line_cursor+1
sta print_char_cursor+1 sta print_char_cursor+1
lda #<str6 lda #<str
sta print_str.str sta print_str.str
lda #>str6 lda #>str
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
lda #<$7461 lda #<$7461
@ -148,9 +148,9 @@ main: {
lda #>$7461 lda #>$7461
sta print_word.w+1 sta print_word.w+1
jsr print_word jsr print_word
lda #<str7 lda #<str1
sta print_str.str sta print_str.str
lda #>str7 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
lda #<$f781 lda #<$f781
@ -158,9 +158,9 @@ main: {
lda #>$f781 lda #>$f781
sta print_word.w+1 sta print_word.w+1
jsr print_word jsr print_word
lda #<str8 lda #<str1
sta print_str.str sta print_str.str
lda #>str8 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
lda #<$6488 lda #<$6488
@ -172,13 +172,6 @@ main: {
rts rts
str: .text " @" str: .text " @"
str1: .text " @" str1: .text " @"
str2: .text " @"
str3: .text " @"
str4: .text " @"
str5: .text " @"
str6: .text " @"
str7: .text " @"
str8: .text " @"
lintab1: .fill 2*$14, 0 lintab1: .fill 2*$14, 0
lintab2: .fill 2*$14, 0 lintab2: .fill 2*$14, 0
lintab3: .fill 2*$14, 0 lintab3: .fill 2*$14, 0

View File

@ -169,7 +169,7 @@ print_char::@return: scope:[print_char] from print_char
to:@return to:@return
print_str: scope:[print_str] from main::@10 main::@14 main::@16 main::@18 main::@2 main::@23 main::@25 main::@6 main::@8 print_str: scope:[print_str] from main::@10 main::@14 main::@16 main::@18 main::@2 main::@23 main::@25 main::@6 main::@8
[84] (byte*) print_char_cursor#86 ← phi( main::@10/(byte*) print_char_cursor#11 main::@14/(byte*) print_char_cursor#11 main::@16/(byte*) print_char_cursor#11 main::@18/(byte*) print_char_cursor#11 main::@2/(byte*~) print_char_cursor#100 main::@23/(byte*) print_char_cursor#11 main::@25/(byte*) print_char_cursor#11 main::@6/((byte*))(word/signed word/dword/signed dword) 1024 main::@8/(byte*) print_char_cursor#11 ) [84] (byte*) print_char_cursor#86 ← phi( main::@10/(byte*) print_char_cursor#11 main::@14/(byte*) print_char_cursor#11 main::@16/(byte*) print_char_cursor#11 main::@18/(byte*) print_char_cursor#11 main::@2/(byte*~) print_char_cursor#100 main::@23/(byte*) print_char_cursor#11 main::@25/(byte*) print_char_cursor#11 main::@6/((byte*))(word/signed word/dword/signed dword) 1024 main::@8/(byte*) print_char_cursor#11 )
[84] (byte*) print_str::str#12 ← phi( main::@10/(const string) main::str2 main::@14/(const string) main::str3 main::@16/(const string) main::str4 main::@18/(const string) main::str5 main::@2/(const string) main::str6 main::@23/(const string) main::str7 main::@25/(const string) main::str8 main::@6/(const string) main::str main::@8/(const string) main::str1 ) [84] (byte*) print_str::str#12 ← phi( main::@10/(const string) main::str1 main::@14/(const string) main::str1 main::@16/(const string) main::str1 main::@18/(const string) main::str1 main::@2/(const string) main::str main::@23/(const string) main::str1 main::@25/(const string) main::str1 main::@6/(const string) main::str main::@8/(const string) main::str1 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[85] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#86 print_str::@2/(byte*) print_char_cursor#1 ) [85] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#86 print_str::@2/(byte*) print_char_cursor#1 )

View File

@ -1293,6 +1293,7 @@ Constant (const word*) lin16u_gen::lintab#0 = main::lintab1#0
Constant (const word*) lin16u_gen::lintab#1 = main::lintab2#0 Constant (const word*) lin16u_gen::lintab#1 = main::lintab2#0
Constant (const word*) lin16u_gen::lintab#2 = main::lintab3#0 Constant (const word*) lin16u_gen::lintab#2 = main::lintab3#0
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantStringConsolidation
Fixing inline constructor with lin16u_gen::$9 ← lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0 Fixing inline constructor with lin16u_gen::$9 ← lin16u_gen::stepi#0 dw= lin16u_gen::stepf#0
Fixing inline constructor with lin16u_gen::$10 ← lin16u_gen::min#3 dw= 0 Fixing inline constructor with lin16u_gen::$10 ← lin16u_gen::min#3 dw= 0
Successful SSA optimization Pass2FixInlineConstructors Successful SSA optimization Pass2FixInlineConstructors
@ -1351,9 +1352,15 @@ Inlining constant with var siblings (const word*) lin16u_gen::lintab#0
Inlining constant with var siblings (const word*) lin16u_gen::lintab#1 Inlining constant with var siblings (const word*) lin16u_gen::lintab#1
Inlining constant with var siblings (const word*) lin16u_gen::lintab#2 Inlining constant with var siblings (const word*) lin16u_gen::lintab#2
Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined main::str4 = (const string) main::str1
Constant inlined main::str5 = (const string) main::str1
Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::str6 = (const string) main::str
Constant inlined main::str7 = (const string) main::str1
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::str2 = (const string) main::str1
Constant inlined main::str3 = (const string) main::str1
Constant inlined lin16u_gen::max#0 = (word/signed word/dword/signed dword) 29793 Constant inlined lin16u_gen::max#0 = (word/signed word/dword/signed dword) 29793
Constant inlined lin16u_gen::max#2 = (word/signed word/dword/signed dword) 25736 Constant inlined lin16u_gen::max#2 = (word/signed word/dword/signed dword) 25736
Constant inlined lin16u_gen::max#1 = (word/dword/signed dword) 63361 Constant inlined lin16u_gen::max#1 = (word/dword/signed dword) 63361
@ -1372,23 +1379,24 @@ Constant inlined print_word::w#7 = (word/dword/signed dword) 63361
Constant inlined print_word::w#6 = (word/signed word/dword/signed dword) 29793 Constant inlined print_word::w#6 = (word/signed word/dword/signed dword) 29793
Constant inlined print_word::w#8 = (word/signed word/dword/signed dword) 25736 Constant inlined print_word::w#8 = (word/signed word/dword/signed dword) 25736
Constant inlined lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20 Constant inlined lin16u_gen::length#2 = (byte/signed byte/word/signed word/dword/signed dword) 20
Constant inlined print_str::str#9 = (const string) main::str8 Constant inlined print_str::str#9 = (const string) main::str1
Constant inlined lin16u_gen::length#1 = (byte/signed byte/word/signed word/dword/signed dword) 20 Constant inlined lin16u_gen::length#1 = (byte/signed byte/word/signed word/dword/signed dword) 20
Constant inlined lin16u_gen::length#0 = (byte/signed byte/word/signed word/dword/signed dword) 20 Constant inlined lin16u_gen::length#0 = (byte/signed byte/word/signed word/dword/signed dword) 20
Constant inlined print_str::str#4 = (const string) main::str3 Constant inlined print_str::str#4 = (const string) main::str1
Constant inlined print_str::str#3 = (const string) main::str2 Constant inlined print_str::str#3 = (const string) main::str1
Constant inlined print_str::str#2 = (const string) main::str1 Constant inlined print_str::str#2 = (const string) main::str1
Constant inlined print_str::str#1 = (const string) main::str Constant inlined print_str::str#1 = (const string) main::str
Constant inlined print_str::str#8 = (const string) main::str7 Constant inlined print_str::str#8 = (const string) main::str1
Constant inlined main::str8 = (const string) main::str1
Constant inlined lin16u_gen::lintab#2 = (const word[20]) main::lintab3#0 Constant inlined lin16u_gen::lintab#2 = (const word[20]) main::lintab3#0
Constant inlined lin16u_gen::min#1 = (word/signed word/dword/signed dword) 31179 Constant inlined lin16u_gen::min#1 = (word/signed word/dword/signed dword) 31179
Constant inlined lin16u_gen::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined lin16u_gen::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#7 = (const string) main::str6 Constant inlined print_str::str#7 = (const string) main::str
Constant inlined lin16u_gen::lintab#1 = (const word[20]) main::lintab2#0 Constant inlined lin16u_gen::lintab#1 = (const word[20]) main::lintab2#0
Constant inlined lin16u_gen::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined lin16u_gen::min#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#6 = (const string) main::str5 Constant inlined print_str::str#6 = (const string) main::str1
Constant inlined lin16u_gen::lintab#0 = (const word[20]) main::lintab1#0 Constant inlined lin16u_gen::lintab#0 = (const word[20]) main::lintab1#0
Constant inlined print_str::str#5 = (const string) main::str4 Constant inlined print_str::str#5 = (const string) main::str1
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Identical Phi Values (word) lin16u_gen::length#3 (byte/signed byte/word/signed word/dword/signed dword) 20 Identical Phi Values (word) lin16u_gen::length#3 (byte/signed byte/word/signed word/dword/signed dword) 20
Successful SSA optimization Pass2IdenticalPhiElimination Successful SSA optimization Pass2IdenticalPhiElimination
@ -1687,7 +1695,7 @@ print_char::@return: scope:[print_char] from print_char
to:@return to:@return
print_str: scope:[print_str] from main::@10 main::@14 main::@16 main::@18 main::@2 main::@23 main::@25 main::@6 main::@8 print_str: scope:[print_str] from main::@10 main::@14 main::@16 main::@18 main::@2 main::@23 main::@25 main::@6 main::@8
[84] (byte*) print_char_cursor#86 ← phi( main::@10/(byte*) print_char_cursor#11 main::@14/(byte*) print_char_cursor#11 main::@16/(byte*) print_char_cursor#11 main::@18/(byte*) print_char_cursor#11 main::@2/(byte*~) print_char_cursor#100 main::@23/(byte*) print_char_cursor#11 main::@25/(byte*) print_char_cursor#11 main::@6/((byte*))(word/signed word/dword/signed dword) 1024 main::@8/(byte*) print_char_cursor#11 ) [84] (byte*) print_char_cursor#86 ← phi( main::@10/(byte*) print_char_cursor#11 main::@14/(byte*) print_char_cursor#11 main::@16/(byte*) print_char_cursor#11 main::@18/(byte*) print_char_cursor#11 main::@2/(byte*~) print_char_cursor#100 main::@23/(byte*) print_char_cursor#11 main::@25/(byte*) print_char_cursor#11 main::@6/((byte*))(word/signed word/dword/signed dword) 1024 main::@8/(byte*) print_char_cursor#11 )
[84] (byte*) print_str::str#12 ← phi( main::@10/(const string) main::str2 main::@14/(const string) main::str3 main::@16/(const string) main::str4 main::@18/(const string) main::str5 main::@2/(const string) main::str6 main::@23/(const string) main::str7 main::@25/(const string) main::str8 main::@6/(const string) main::str main::@8/(const string) main::str1 ) [84] (byte*) print_str::str#12 ← phi( main::@10/(const string) main::str1 main::@14/(const string) main::str1 main::@16/(const string) main::str1 main::@18/(const string) main::str1 main::@2/(const string) main::str main::@23/(const string) main::str1 main::@25/(const string) main::str1 main::@6/(const string) main::str main::@8/(const string) main::str1 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[85] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#86 print_str::@2/(byte*) print_char_cursor#1 ) [85] (byte*) print_char_cursor#2 ← phi( print_str/(byte*) print_char_cursor#86 print_str::@2/(byte*) print_char_cursor#1 )
@ -2175,10 +2183,10 @@ main: {
//SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str] //SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str]
print_str_from_b10: print_str_from_b10:
//SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy //SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy
//SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 //SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@10->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] //SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
@ -2244,10 +2252,10 @@ main: {
//SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str] //SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str]
print_str_from_b14: print_str_from_b14:
//SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy //SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy
//SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 //SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str1
sta print_str.str sta print_str.str
lda #>str3 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b15 jmp b15
@ -2273,10 +2281,10 @@ main: {
//SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str] //SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str]
print_str_from_b16: print_str_from_b16:
//SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy //SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy
//SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 //SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b17 jmp b17
@ -2302,10 +2310,10 @@ main: {
//SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str] //SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str]
print_str_from_b18: print_str_from_b18:
//SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy //SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy
//SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 //SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1
lda #<str5 lda #<str1
sta print_str.str sta print_str.str
lda #>str5 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b19 jmp b19
@ -2356,10 +2364,10 @@ main: {
//SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str] //SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy //SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy
//SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 //SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@2->print_str#1] -- pbuz1=pbuc1
lda #<str6 lda #<str
sta print_str.str sta print_str.str
lda #>str6 lda #>str
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] //SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22]
@ -2385,10 +2393,10 @@ main: {
//SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str] //SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str]
print_str_from_b23: print_str_from_b23:
//SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy //SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy
//SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 //SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1
lda #<str7 lda #<str1
sta print_str.str sta print_str.str
lda #>str7 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] //SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
@ -2414,10 +2422,10 @@ main: {
//SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str] //SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str]
print_str_from_b25: print_str_from_b25:
//SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy //SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy
//SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 //SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1
lda #<str8 lda #<str1
sta print_str.str sta print_str.str
lda #>str8 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] //SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
@ -2451,13 +2459,6 @@ main: {
rts rts
str: .text " @" str: .text " @"
str1: .text " @" str1: .text " @"
str2: .text " @"
str3: .text " @"
str4: .text " @"
str5: .text " @"
str6: .text " @"
str7: .text " @"
str8: .text " @"
lintab1: .fill 2*$14, 0 lintab1: .fill 2*$14, 0
lintab2: .fill 2*$14, 0 lintab2: .fill 2*$14, 0
lintab3: .fill 2*$14, 0 lintab3: .fill 2*$14, 0
@ -3316,10 +3317,10 @@ main: {
//SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str] //SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str]
print_str_from_b10: print_str_from_b10:
//SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy //SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy
//SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 //SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@10->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] //SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
@ -3384,10 +3385,10 @@ main: {
//SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str] //SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str]
print_str_from_b14: print_str_from_b14:
//SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy //SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy
//SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 //SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str1
sta print_str.str sta print_str.str
lda #>str3 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b15 jmp b15
@ -3413,10 +3414,10 @@ main: {
//SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str] //SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str]
print_str_from_b16: print_str_from_b16:
//SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy //SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy
//SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 //SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b17 jmp b17
@ -3442,10 +3443,10 @@ main: {
//SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str] //SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str]
print_str_from_b18: print_str_from_b18:
//SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy //SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy
//SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 //SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1
lda #<str5 lda #<str1
sta print_str.str sta print_str.str
lda #>str5 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
jmp b19 jmp b19
@ -3496,10 +3497,10 @@ main: {
//SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str] //SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy //SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy
//SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 //SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@2->print_str#1] -- pbuz1=pbuc1
lda #<str6 lda #<str
sta print_str.str sta print_str.str
lda #>str6 lda #>str
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] //SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22]
@ -3525,10 +3526,10 @@ main: {
//SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str] //SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str]
print_str_from_b23: print_str_from_b23:
//SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy //SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy
//SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 //SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1
lda #<str7 lda #<str1
sta print_str.str sta print_str.str
lda #>str7 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] //SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
@ -3554,10 +3555,10 @@ main: {
//SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str] //SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str]
print_str_from_b25: print_str_from_b25:
//SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy //SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy
//SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 //SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1
lda #<str8 lda #<str1
sta print_str.str sta print_str.str
lda #>str8 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] //SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
@ -3591,13 +3592,6 @@ main: {
rts rts
str: .text " @" str: .text " @"
str1: .text " @" str1: .text " @"
str2: .text " @"
str3: .text " @"
str4: .text " @"
str5: .text " @"
str6: .text " @"
str7: .text " @"
str8: .text " @"
lintab1: .fill 2*$14, 0 lintab1: .fill 2*$14, 0
lintab2: .fill 2*$14, 0 lintab2: .fill 2*$14, 0
lintab3: .fill 2*$14, 0 lintab3: .fill 2*$14, 0
@ -4393,13 +4387,6 @@ FINAL SYMBOL TABLE
(const word[20]) main::lintab3#0 lintab3 = { fill( 20, 0) } (const word[20]) main::lintab3#0 lintab3 = { fill( 20, 0) }
(const string) main::str str = (string) " @" (const string) main::str str = (string) " @"
(const string) main::str1 str1 = (string) " @" (const string) main::str1 str1 = (string) " @"
(const string) main::str2 str2 = (string) " @"
(const string) main::str3 str3 = (string) " @"
(const string) main::str4 str4 = (string) " @"
(const string) main::str5 str5 = (string) " @"
(const string) main::str6 str6 = (string) " @"
(const string) main::str7 str7 = (string) " @"
(const string) main::str8 str8 = (string) " @"
(void()) print_byte((byte) print_byte::b) (void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0
@ -4619,10 +4606,10 @@ main: {
//SEG58 [21] call print_str //SEG58 [21] call print_str
//SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str] //SEG59 [84] phi from main::@10 to print_str [phi:main::@10->print_str]
//SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy //SEG60 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@10->print_str#0] -- register_copy
//SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str2 [phi:main::@10->print_str#1] -- pbuz1=pbuc1 //SEG61 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@10->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str1
sta print_str.str sta print_str.str
lda #>str2 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11] //SEG62 [22] phi from main::@10 to main::@11 [phi:main::@10->main::@11]
@ -4669,10 +4656,10 @@ main: {
//SEG85 [31] call print_str //SEG85 [31] call print_str
//SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str] //SEG86 [84] phi from main::@14 to print_str [phi:main::@14->print_str]
//SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy //SEG87 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@14->print_str#0] -- register_copy
//SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str3 [phi:main::@14->print_str#1] -- pbuz1=pbuc1 //SEG88 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@14->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str1
sta print_str.str sta print_str.str
lda #>str3 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG89 main::@15 //SEG89 main::@15
@ -4691,10 +4678,10 @@ main: {
//SEG96 [35] call print_str //SEG96 [35] call print_str
//SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str] //SEG97 [84] phi from main::@16 to print_str [phi:main::@16->print_str]
//SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy //SEG98 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@16->print_str#0] -- register_copy
//SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str4 [phi:main::@16->print_str#1] -- pbuz1=pbuc1 //SEG99 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@16->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str1
sta print_str.str sta print_str.str
lda #>str4 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG100 main::@17 //SEG100 main::@17
@ -4713,10 +4700,10 @@ main: {
//SEG107 [39] call print_str //SEG107 [39] call print_str
//SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str] //SEG108 [84] phi from main::@18 to print_str [phi:main::@18->print_str]
//SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy //SEG109 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@18->print_str#0] -- register_copy
//SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str5 [phi:main::@18->print_str#1] -- pbuz1=pbuc1 //SEG110 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@18->print_str#1] -- pbuz1=pbuc1
lda #<str5 lda #<str1
sta print_str.str sta print_str.str
lda #>str5 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG111 main::@19 //SEG111 main::@19
@ -4754,10 +4741,10 @@ main: {
//SEG126 [47] call print_str //SEG126 [47] call print_str
//SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str] //SEG127 [84] phi from main::@2 to print_str [phi:main::@2->print_str]
//SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy //SEG128 [84] phi (byte*) print_char_cursor#86 = (byte*~) print_char_cursor#100 [phi:main::@2->print_str#0] -- register_copy
//SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str6 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 //SEG129 [84] phi (byte*) print_str::str#12 = (const string) main::str [phi:main::@2->print_str#1] -- pbuz1=pbuc1
lda #<str6 lda #<str
sta print_str.str sta print_str.str
lda #>str6 lda #>str
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22] //SEG130 [48] phi from main::@2 to main::@22 [phi:main::@2->main::@22]
@ -4775,10 +4762,10 @@ main: {
//SEG137 [51] call print_str //SEG137 [51] call print_str
//SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str] //SEG138 [84] phi from main::@23 to print_str [phi:main::@23->print_str]
//SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy //SEG139 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@23->print_str#0] -- register_copy
//SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str7 [phi:main::@23->print_str#1] -- pbuz1=pbuc1 //SEG140 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@23->print_str#1] -- pbuz1=pbuc1
lda #<str7 lda #<str1
sta print_str.str sta print_str.str
lda #>str7 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24] //SEG141 [52] phi from main::@23 to main::@24 [phi:main::@23->main::@24]
@ -4796,10 +4783,10 @@ main: {
//SEG148 [55] call print_str //SEG148 [55] call print_str
//SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str] //SEG149 [84] phi from main::@25 to print_str [phi:main::@25->print_str]
//SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy //SEG150 [84] phi (byte*) print_char_cursor#86 = (byte*) print_char_cursor#11 [phi:main::@25->print_str#0] -- register_copy
//SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str8 [phi:main::@25->print_str#1] -- pbuz1=pbuc1 //SEG151 [84] phi (byte*) print_str::str#12 = (const string) main::str1 [phi:main::@25->print_str#1] -- pbuz1=pbuc1
lda #<str8 lda #<str1
sta print_str.str sta print_str.str
lda #>str8 lda #>str1
sta print_str.str+1 sta print_str.str+1
jsr print_str jsr print_str
//SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26] //SEG152 [56] phi from main::@25 to main::@26 [phi:main::@25->main::@26]
@ -4823,13 +4810,6 @@ main: {
rts rts
str: .text " @" str: .text " @"
str1: .text " @" str1: .text " @"
str2: .text " @"
str3: .text " @"
str4: .text " @"
str5: .text " @"
str6: .text " @"
str7: .text " @"
str8: .text " @"
lintab1: .fill 2*$14, 0 lintab1: .fill 2*$14, 0
lintab2: .fill 2*$14, 0 lintab2: .fill 2*$14, 0
lintab3: .fill 2*$14, 0 lintab3: .fill 2*$14, 0

View File

@ -107,13 +107,6 @@
(const word[20]) main::lintab3#0 lintab3 = { fill( 20, 0) } (const word[20]) main::lintab3#0 lintab3 = { fill( 20, 0) }
(const string) main::str str = (string) " @" (const string) main::str str = (string) " @"
(const string) main::str1 str1 = (string) " @" (const string) main::str1 str1 = (string) " @"
(const string) main::str2 str2 = (string) " @"
(const string) main::str3 str3 = (string) " @"
(const string) main::str4 str4 = (string) " @"
(const string) main::str5 str5 = (string) " @"
(const string) main::str6 str6 = (string) " @"
(const string) main::str7 str7 = (string) " @"
(const string) main::str8 str8 = (string) " @"
(void()) print_byte((byte) print_byte::b) (void()) print_byte((byte) print_byte::b)
(byte~) print_byte::$0 reg byte a 4.0 (byte~) print_byte::$0 reg byte a 4.0
(byte~) print_byte::$2 reg byte a 4.0 (byte~) print_byte::$2 reg byte a 4.0

View File

@ -6,7 +6,7 @@ CONTROL FLOW GRAPH SSA
to:@2 to:@2
main: scope:[main] from @2 main: scope:[main] from @2
(byte*) screen#15 ← phi( @2/(byte*) screen#17 ) (byte*) screen#15 ← phi( @2/(byte*) screen#17 )
(byte[]) main::rex2#0 ← (byte[]) rex1#0 (byte[]) main::rex2#0 ← (const string) main::$3
(byte*) print::string#0 ← (byte[]) rex1#0 (byte*) print::string#0 ← (byte[]) rex1#0
call print call print
to:main::@1 to:main::@1
@ -70,6 +70,7 @@ SYMBOL TABLE SSA
(label) @begin (label) @begin
(label) @end (label) @end
(void()) main() (void()) main()
(const string) main::$3 = (string) "rex@"
(label) main::@1 (label) main::@1
(label) main::@2 (label) main::@2
(label) main::@3 (label) main::@3
@ -131,11 +132,10 @@ Simple Condition (bool~) print::$0 [22] if(*((byte*) print::string#4)!=(byte) '@
Successful SSA optimization Pass2ConditionalJumpSimplification Successful SSA optimization Pass2ConditionalJumpSimplification
Constant (const byte[]) rex1#0 = $0 Constant (const byte[]) rex1#0 = $0
Constant (const byte*) screen#0 = ((byte*))1024 Constant (const byte*) screen#0 = ((byte*))1024
Constant (const byte[]) main::rex2#0 = main::$3
Constant (const byte*) print::string#2 = main::string Constant (const byte*) print::string#2 = main::string
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Constant (const byte[]) main::rex2#0 = rex1#0
Constant (const byte*) print::string#0 = rex1#0 Constant (const byte*) print::string#0 = rex1#0
Successful SSA optimization Pass2ConstantIdentification
Constant (const byte*) print::string#1 = main::rex2#0 Constant (const byte*) print::string#1 = main::rex2#0
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantStringConsolidation Successful SSA optimization Pass2ConstantStringConsolidation
@ -146,14 +146,15 @@ Inlining constant with var siblings (const byte*) print::string#2
Inlining constant with var siblings (const byte*) print::string#0 Inlining constant with var siblings (const byte*) print::string#0
Inlining constant with var siblings (const byte*) print::string#1 Inlining constant with var siblings (const byte*) print::string#1
Inlining constant with var siblings (const byte*) screen#0 Inlining constant with var siblings (const byte*) screen#0
Constant inlined main::$3 = (const byte[]) main::rex2#0
Constant inlined print::string#0 = (const byte[]) rex1#0 Constant inlined print::string#0 = (const byte[]) rex1#0
Constant inlined print::string#1 = (const byte[]) rex1#0 Constant inlined print::string#1 = (const byte[]) main::rex2#0
Constant inlined $0 = (const byte[]) rex1#0 Constant inlined $0 = (const byte[]) rex1#0
Constant inlined print::string#2 = (const string) main::string Constant inlined print::string#2 = (const string) main::string
Constant inlined main::rex2#0 = (const byte[]) rex1#0
Constant inlined screen#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined screen#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Successful SSA optimization Pass2ConstantStringConsolidation Successful SSA optimization Pass2ConstantStringConsolidation
Constant inlined main::rex2#0 = (const byte[]) rex1#0
Constant inlined main::string = (const byte[]) rex1#0 Constant inlined main::string = (const byte[]) rex1#0
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Identical Phi Values (byte*) print::string#6 (const byte[]) rex1#0 Identical Phi Values (byte*) print::string#6 (const byte[]) rex1#0

View File

@ -50,9 +50,9 @@ main: {
b3: b3:
lda #$37 lda #$37
sta printu.b sta printu.b
lda #<op1 lda #<op
sta printu.op sta printu.op
lda #>op1 lda #>op
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -67,9 +67,9 @@ main: {
ldy i ldy i
lda cs,y lda cs,y
sta printu.b sta printu.b
lda #<op2 lda #<op
sta printu.op sta printu.op
lda #>op2 lda #>op
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -82,9 +82,9 @@ main: {
b5: b5:
lda a lda a
sta printu.b sta printu.b
lda #<op3 lda #<op
sta printu.op sta printu.op
lda #>op3 lda #>op
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
jsr print_ln jsr print_ln
@ -117,9 +117,9 @@ main: {
b7: b7:
lda #$37 lda #$37
sta printu.b sta printu.b
lda #<op5 lda #<op4
sta printu.op sta printu.op
lda #>op5 lda #>op4
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
ldy i ldy i
@ -134,9 +134,9 @@ main: {
ldy i ldy i
lda cs,y lda cs,y
sta printu.b sta printu.b
lda #<op6 lda #<op4
sta printu.op sta printu.op
lda #>op6 lda #>op4
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -149,9 +149,9 @@ main: {
b9: b9:
lda a lda a
sta printu.b sta printu.b
lda #<op7 lda #<op4
sta printu.op sta printu.op
lda #>op7 lda #>op4
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
jsr print_ln jsr print_ln
@ -186,9 +186,9 @@ main: {
b11: b11:
lda #$37 lda #$37
sta printu.b sta printu.b
lda #<op9 lda #<op8
sta printu.op sta printu.op
lda #>op9 lda #>op8
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
ldy i ldy i
@ -203,9 +203,9 @@ main: {
ldy i ldy i
lda cs,y lda cs,y
sta printu.b sta printu.b
lda #<op10 lda #<op8
sta printu.op sta printu.op
lda #>op10 lda #>op8
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -218,9 +218,9 @@ main: {
b13: b13:
lda a lda a
sta printu.b sta printu.b
lda #<op11 lda #<op8
sta printu.op sta printu.op
lda #>op11 lda #>op8
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
jsr print_ln jsr print_ln
@ -253,9 +253,9 @@ main: {
b15: b15:
lda #$37 lda #$37
sta printu.b sta printu.b
lda #<op13 lda #<op12
sta printu.op sta printu.op
lda #>op13 lda #>op12
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -270,9 +270,9 @@ main: {
ldy i ldy i
lda cs,y lda cs,y
sta printu.b sta printu.b
lda #<op14 lda #<op12
sta printu.op sta printu.op
lda #>op14 lda #>op12
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -285,9 +285,9 @@ main: {
b17: b17:
lda a lda a
sta printu.b sta printu.b
lda #<op15 lda #<op12
sta printu.op sta printu.op
lda #>op15 lda #>op12
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
jsr print_ln jsr print_ln
@ -320,9 +320,9 @@ main: {
b19: b19:
lda #$37 lda #$37
sta printu.b sta printu.b
lda #<op17 lda #<op16
sta printu.op sta printu.op
lda #>op17 lda #>op16
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -337,9 +337,9 @@ main: {
ldy i ldy i
lda cs,y lda cs,y
sta printu.b sta printu.b
lda #<op18 lda #<op16
sta printu.op sta printu.op
lda #>op18 lda #>op16
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
lda a lda a
@ -352,9 +352,9 @@ main: {
b21: b21:
lda a lda a
sta printu.b sta printu.b
lda #<op19 lda #<op16
sta printu.op sta printu.op
lda #>op19 lda #>op16
sta printu.op+1 sta printu.op+1
jsr printu jsr printu
jsr print_ln jsr print_ln
@ -375,25 +375,10 @@ main: {
sta print_char_cursor+1 sta print_char_cursor+1
jmp b1 jmp b1
op: .text "< @" op: .text "< @"
op1: .text "< @"
op2: .text "< @"
op3: .text "< @"
op4: .text "> @" op4: .text "> @"
op5: .text "> @"
op6: .text "> @"
op7: .text "> @"
op8: .text "<=@" op8: .text "<=@"
op9: .text "<=@"
op10: .text "<=@"
op11: .text "<=@"
op12: .text ">=@" op12: .text ">=@"
op13: .text ">=@"
op14: .text ">=@"
op15: .text ">=@"
op16: .text "==@" op16: .text "==@"
op17: .text "==@"
op18: .text "==@"
op19: .text "==@"
cs: .byte 7, $c7, $37, $97, $67 cs: .byte 7, $c7, $37, $97, $67
} }
// Print a newline // Print a newline

View File

@ -320,7 +320,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
printu: scope:[printu] from main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@2 main::@20 main::@21 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 printu: scope:[printu] from main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@2 main::@20 main::@21 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9
[167] (byte) printu::res#20 ← phi( main::@10/(byte) printu::res#8 main::@11/(byte) printu::res#9 main::@12/(byte) printu::res#10 main::@13/(byte) printu::res#11 main::@14/(byte) printu::res#12 main::@15/(byte) printu::res#13 main::@16/(byte) printu::res#14 main::@17/(byte) printu::res#15 main::@18/(byte) printu::res#16 main::@19/(byte) printu::res#17 main::@2/(byte) printu::res#0 main::@20/(byte) printu::res#18 main::@21/(byte) printu::res#19 main::@3/(byte) printu::res#1 main::@4/(byte) printu::res#2 main::@5/(byte) printu::res#3 main::@6/(byte) printu::res#4 main::@7/(byte) printu::res#5 main::@8/(byte) printu::res#6 main::@9/(byte) printu::res#7 ) [167] (byte) printu::res#20 ← phi( main::@10/(byte) printu::res#8 main::@11/(byte) printu::res#9 main::@12/(byte) printu::res#10 main::@13/(byte) printu::res#11 main::@14/(byte) printu::res#12 main::@15/(byte) printu::res#13 main::@16/(byte) printu::res#14 main::@17/(byte) printu::res#15 main::@18/(byte) printu::res#16 main::@19/(byte) printu::res#17 main::@2/(byte) printu::res#0 main::@20/(byte) printu::res#18 main::@21/(byte) printu::res#19 main::@3/(byte) printu::res#1 main::@4/(byte) printu::res#2 main::@5/(byte) printu::res#3 main::@6/(byte) printu::res#4 main::@7/(byte) printu::res#5 main::@8/(byte) printu::res#6 main::@9/(byte) printu::res#7 )
[167] (byte) printu::b#20 ← phi( main::@10/(byte) printu::b#8 main::@11/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@12/(byte) printu::b#10 main::@13/(byte) printu::b#11 main::@14/(byte) printu::b#12 main::@15/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@16/(byte) printu::b#14 main::@17/(byte) printu::b#15 main::@18/(byte) printu::b#16 main::@19/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@2/(byte) printu::b#0 main::@20/(byte) printu::b#18 main::@21/(byte) printu::b#19 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@4/(byte) printu::b#2 main::@5/(byte) printu::b#3 main::@6/(byte) printu::b#4 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@8/(byte) printu::b#6 main::@9/(byte) printu::b#7 ) [167] (byte) printu::b#20 ← phi( main::@10/(byte) printu::b#8 main::@11/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@12/(byte) printu::b#10 main::@13/(byte) printu::b#11 main::@14/(byte) printu::b#12 main::@15/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@16/(byte) printu::b#14 main::@17/(byte) printu::b#15 main::@18/(byte) printu::b#16 main::@19/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@2/(byte) printu::b#0 main::@20/(byte) printu::b#18 main::@21/(byte) printu::b#19 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@4/(byte) printu::b#2 main::@5/(byte) printu::b#3 main::@6/(byte) printu::b#4 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@8/(byte) printu::b#6 main::@9/(byte) printu::b#7 )
[167] (byte[]) printu::op#20 ← phi( main::@10/(const string) main::op8 main::@11/(const string) main::op9 main::@12/(const string) main::op10 main::@13/(const string) main::op11 main::@14/(const string) main::op12 main::@15/(const string) main::op13 main::@16/(const string) main::op14 main::@17/(const string) main::op15 main::@18/(const string) main::op16 main::@19/(const string) main::op17 main::@2/(const string) main::op main::@20/(const string) main::op18 main::@21/(const string) main::op19 main::@3/(const string) main::op1 main::@4/(const string) main::op2 main::@5/(const string) main::op3 main::@6/(const string) main::op4 main::@7/(const string) main::op5 main::@8/(const string) main::op6 main::@9/(const string) main::op7 ) [167] (byte[]) printu::op#20 ← phi( main::@10/(const string) main::op8 main::@11/(const string) main::op8 main::@12/(const string) main::op8 main::@13/(const string) main::op8 main::@14/(const string) main::op12 main::@15/(const string) main::op12 main::@16/(const string) main::op12 main::@17/(const string) main::op12 main::@18/(const string) main::op16 main::@19/(const string) main::op16 main::@2/(const string) main::op main::@20/(const string) main::op16 main::@21/(const string) main::op16 main::@3/(const string) main::op main::@4/(const string) main::op main::@5/(const string) main::op main::@6/(const string) main::op4 main::@7/(const string) main::op4 main::@8/(const string) main::op4 main::@9/(const string) main::op4 )
[167] (byte) printu::a#20 ← phi( main::@10/(byte) printu::a#8 main::@11/(byte) printu::a#9 main::@12/(byte) printu::a#10 main::@13/(byte) printu::a#11 main::@14/(byte) printu::a#12 main::@15/(byte) printu::a#13 main::@16/(byte) printu::a#14 main::@17/(byte) printu::a#15 main::@18/(byte) printu::a#16 main::@19/(byte) printu::a#17 main::@2/(byte) printu::a#0 main::@20/(byte) printu::a#18 main::@21/(byte) printu::a#19 main::@3/(byte) printu::a#1 main::@4/(byte) printu::a#2 main::@5/(byte) printu::a#3 main::@6/(byte) printu::a#4 main::@7/(byte) printu::a#5 main::@8/(byte) printu::a#6 main::@9/(byte) printu::a#7 ) [167] (byte) printu::a#20 ← phi( main::@10/(byte) printu::a#8 main::@11/(byte) printu::a#9 main::@12/(byte) printu::a#10 main::@13/(byte) printu::a#11 main::@14/(byte) printu::a#12 main::@15/(byte) printu::a#13 main::@16/(byte) printu::a#14 main::@17/(byte) printu::a#15 main::@18/(byte) printu::a#16 main::@19/(byte) printu::a#17 main::@2/(byte) printu::a#0 main::@20/(byte) printu::a#18 main::@21/(byte) printu::a#19 main::@3/(byte) printu::a#1 main::@4/(byte) printu::a#2 main::@5/(byte) printu::a#3 main::@6/(byte) printu::a#4 main::@7/(byte) printu::a#5 main::@8/(byte) printu::a#6 main::@9/(byte) printu::a#7 )
[167] (byte*) print_char_cursor#95 ← phi( main::@10/(byte*~) print_char_cursor#143 main::@11/(byte*) print_char_cursor#55 main::@12/(byte*) print_char_cursor#55 main::@13/(byte*) print_char_cursor#55 main::@14/(byte*~) print_char_cursor#147 main::@15/(byte*) print_char_cursor#55 main::@16/(byte*) print_char_cursor#55 main::@17/(byte*) print_char_cursor#55 main::@18/(byte*~) print_char_cursor#151 main::@19/(byte*) print_char_cursor#55 main::@2/(byte*) print_char_cursor#120 main::@20/(byte*) print_char_cursor#55 main::@21/(byte*) print_char_cursor#55 main::@3/(byte*) print_char_cursor#55 main::@4/(byte*) print_char_cursor#55 main::@5/(byte*) print_char_cursor#55 main::@6/(byte*~) print_char_cursor#159 main::@7/(byte*) print_char_cursor#55 main::@8/(byte*) print_char_cursor#55 main::@9/(byte*) print_char_cursor#55 ) [167] (byte*) print_char_cursor#95 ← phi( main::@10/(byte*~) print_char_cursor#143 main::@11/(byte*) print_char_cursor#55 main::@12/(byte*) print_char_cursor#55 main::@13/(byte*) print_char_cursor#55 main::@14/(byte*~) print_char_cursor#147 main::@15/(byte*) print_char_cursor#55 main::@16/(byte*) print_char_cursor#55 main::@17/(byte*) print_char_cursor#55 main::@18/(byte*~) print_char_cursor#151 main::@19/(byte*) print_char_cursor#55 main::@2/(byte*) print_char_cursor#120 main::@20/(byte*) print_char_cursor#55 main::@21/(byte*) print_char_cursor#55 main::@3/(byte*) print_char_cursor#55 main::@4/(byte*) print_char_cursor#55 main::@5/(byte*) print_char_cursor#55 main::@6/(byte*~) print_char_cursor#159 main::@7/(byte*) print_char_cursor#55 main::@8/(byte*) print_char_cursor#55 main::@9/(byte*) print_char_cursor#55 )
[168] call print_char [168] call print_char

View File

@ -2076,6 +2076,7 @@ Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
if() condition always true - replacing block destination [154] if(true) goto main::@22 if() condition always true - replacing block destination [154] if(true) goto main::@22
Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantStringConsolidation
Removing unused block main::@return Removing unused block main::@return
Successful SSA optimization Pass2EliminateUnusedBlocks Successful SSA optimization Pass2EliminateUnusedBlocks
Resolved ranged next value main::i#1 ← ++ main::i#10 to ++ Resolved ranged next value main::i#1 ← ++ main::i#10 to ++
@ -2160,17 +2161,17 @@ Inlining constant with var siblings (const byte[]) printu::op#18
Inlining constant with var siblings (const byte[]) printu::op#19 Inlining constant with var siblings (const byte[]) printu::op#19
Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined printu::op#0 = (const string) main::op Constant inlined printu::op#0 = (const string) main::op
Constant inlined printu::op#1 = (const string) main::op1 Constant inlined printu::op#1 = (const string) main::op
Constant inlined printu::op#8 = (const string) main::op8 Constant inlined printu::op#8 = (const string) main::op8
Constant inlined printu::op#9 = (const string) main::op9 Constant inlined printu::op#9 = (const string) main::op8
Constant inlined printu::op#6 = (const string) main::op6 Constant inlined printu::op#6 = (const string) main::op4
Constant inlined main::r#39 = (byte) '+' Constant inlined main::r#39 = (byte) '+'
Constant inlined printu::op#7 = (const string) main::op7 Constant inlined printu::op#7 = (const string) main::op4
Constant inlined printu::op#4 = (const string) main::op4 Constant inlined printu::op#4 = (const string) main::op4
Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined printu::op#5 = (const string) main::op5 Constant inlined printu::op#5 = (const string) main::op4
Constant inlined printu::op#2 = (const string) main::op2 Constant inlined printu::op#2 = (const string) main::op
Constant inlined printu::op#3 = (const string) main::op3 Constant inlined printu::op#3 = (const string) main::op
Constant inlined main::r#33 = (byte) '-' Constant inlined main::r#33 = (byte) '-'
Constant inlined main::r#34 = (byte) '+' Constant inlined main::r#34 = (byte) '+'
Constant inlined main::r#31 = (byte) '-' Constant inlined main::r#31 = (byte) '-'
@ -2180,14 +2181,19 @@ Constant inlined main::r#38 = (byte) '+'
Constant inlined main::r#35 = (byte) '-' Constant inlined main::r#35 = (byte) '-'
Constant inlined main::r#36 = (byte) '+' Constant inlined main::r#36 = (byte) '+'
Constant inlined main::r#30 = (byte) '+' Constant inlined main::r#30 = (byte) '+'
Constant inlined main::op11 = (const string) main::op8
Constant inlined printu::b#17 = (byte/signed byte/word/signed word/dword/signed dword) 55 Constant inlined printu::b#17 = (byte/signed byte/word/signed word/dword/signed dword) 55
Constant inlined main::op10 = (const string) main::op8
Constant inlined main::op15 = (const string) main::op12
Constant inlined printu::b#13 = (byte/signed byte/word/signed word/dword/signed dword) 55 Constant inlined printu::b#13 = (byte/signed byte/word/signed word/dword/signed dword) 55
Constant inlined main::op13 = (const string) main::op12
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined main::op14 = (const string) main::op12
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined printu::op#17 = (const string) main::op17 Constant inlined printu::op#17 = (const string) main::op16
Constant inlined main::r#19 = (byte) '-' Constant inlined main::r#19 = (byte) '-'
Constant inlined printu::op#18 = (const string) main::op18 Constant inlined printu::op#18 = (const string) main::op16
Constant inlined printu::op#19 = (const string) main::op19 Constant inlined printu::op#19 = (const string) main::op16
Constant inlined main::r#17 = (byte) '-' Constant inlined main::r#17 = (byte) '-'
Constant inlined main::r#18 = (byte) '+' Constant inlined main::r#18 = (byte) '+'
Constant inlined main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 7 Constant inlined main::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 7
@ -2198,7 +2204,10 @@ Constant inlined main::r#15 = (byte) '-'
Constant inlined main::r#16 = (byte) '+' Constant inlined main::r#16 = (byte) '+'
Constant inlined main::r#13 = (byte) '-' Constant inlined main::r#13 = (byte) '-'
Constant inlined main::r#14 = (byte) '+' Constant inlined main::r#14 = (byte) '+'
Constant inlined main::op19 = (const string) main::op16
Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined main::op17 = (const string) main::op16
Constant inlined main::op18 = (const string) main::op16
Constant inlined main::r#0 = (byte) '-' Constant inlined main::r#0 = (byte) '-'
Constant inlined main::r#1 = (byte) '-' Constant inlined main::r#1 = (byte) '-'
Constant inlined main::r#8 = (byte) '+' Constant inlined main::r#8 = (byte) '+'
@ -2216,22 +2225,29 @@ Constant inlined main::r#3 = (byte) '-'
Constant inlined print_char::ch#3 = (byte) ' ' Constant inlined print_char::ch#3 = (byte) ' '
Constant inlined main::r#22 = (byte) '+' Constant inlined main::r#22 = (byte) '+'
Constant inlined printu::b#5 = (byte/signed byte/word/signed word/dword/signed dword) 55 Constant inlined printu::b#5 = (byte/signed byte/word/signed word/dword/signed dword) 55
Constant inlined printu::op#10 = (const string) main::op10 Constant inlined main::op1 = (const string) main::op
Constant inlined printu::op#10 = (const string) main::op8
Constant inlined print_char::ch#2 = (byte) ' ' Constant inlined print_char::ch#2 = (byte) ' '
Constant inlined main::r#23 = (byte) '-' Constant inlined main::r#23 = (byte) '-'
Constant inlined printu::op#11 = (const string) main::op11 Constant inlined printu::op#11 = (const string) main::op8
Constant inlined main::r#20 = (byte) '+' Constant inlined main::r#20 = (byte) '+'
Constant inlined printu::op#12 = (const string) main::op12 Constant inlined printu::op#12 = (const string) main::op12
Constant inlined main::r#21 = (byte) '-' Constant inlined main::r#21 = (byte) '-'
Constant inlined printu::op#13 = (const string) main::op13 Constant inlined printu::op#13 = (const string) main::op12
Constant inlined main::r#26 = (byte) '+' Constant inlined main::r#26 = (byte) '+'
Constant inlined printu::b#1 = (byte/signed byte/word/signed word/dword/signed dword) 55 Constant inlined printu::b#1 = (byte/signed byte/word/signed word/dword/signed dword) 55
Constant inlined printu::op#14 = (const string) main::op14 Constant inlined printu::op#14 = (const string) main::op12
Constant inlined main::r#27 = (byte) '-' Constant inlined main::r#27 = (byte) '-'
Constant inlined printu::op#15 = (const string) main::op15 Constant inlined printu::op#15 = (const string) main::op12
Constant inlined main::r#24 = (byte) '+' Constant inlined main::r#24 = (byte) '+'
Constant inlined printu::op#16 = (const string) main::op16 Constant inlined printu::op#16 = (const string) main::op16
Constant inlined main::r#25 = (byte) '-' Constant inlined main::r#25 = (byte) '-'
Constant inlined main::op9 = (const string) main::op8
Constant inlined main::op6 = (const string) main::op4
Constant inlined main::op7 = (const string) main::op4
Constant inlined main::op5 = (const string) main::op4
Constant inlined main::op2 = (const string) main::op
Constant inlined main::op3 = (const string) main::op
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting main::@71(between main::@70 and main::@1) Added new block during phi lifting main::@71(between main::@70 and main::@1)
Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1)
@ -2732,7 +2748,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
printu: scope:[printu] from main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@2 main::@20 main::@21 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9 printu: scope:[printu] from main::@10 main::@11 main::@12 main::@13 main::@14 main::@15 main::@16 main::@17 main::@18 main::@19 main::@2 main::@20 main::@21 main::@3 main::@4 main::@5 main::@6 main::@7 main::@8 main::@9
[167] (byte) printu::res#20 ← phi( main::@10/(byte) printu::res#8 main::@11/(byte) printu::res#9 main::@12/(byte) printu::res#10 main::@13/(byte) printu::res#11 main::@14/(byte) printu::res#12 main::@15/(byte) printu::res#13 main::@16/(byte) printu::res#14 main::@17/(byte) printu::res#15 main::@18/(byte) printu::res#16 main::@19/(byte) printu::res#17 main::@2/(byte) printu::res#0 main::@20/(byte) printu::res#18 main::@21/(byte) printu::res#19 main::@3/(byte) printu::res#1 main::@4/(byte) printu::res#2 main::@5/(byte) printu::res#3 main::@6/(byte) printu::res#4 main::@7/(byte) printu::res#5 main::@8/(byte) printu::res#6 main::@9/(byte) printu::res#7 ) [167] (byte) printu::res#20 ← phi( main::@10/(byte) printu::res#8 main::@11/(byte) printu::res#9 main::@12/(byte) printu::res#10 main::@13/(byte) printu::res#11 main::@14/(byte) printu::res#12 main::@15/(byte) printu::res#13 main::@16/(byte) printu::res#14 main::@17/(byte) printu::res#15 main::@18/(byte) printu::res#16 main::@19/(byte) printu::res#17 main::@2/(byte) printu::res#0 main::@20/(byte) printu::res#18 main::@21/(byte) printu::res#19 main::@3/(byte) printu::res#1 main::@4/(byte) printu::res#2 main::@5/(byte) printu::res#3 main::@6/(byte) printu::res#4 main::@7/(byte) printu::res#5 main::@8/(byte) printu::res#6 main::@9/(byte) printu::res#7 )
[167] (byte) printu::b#20 ← phi( main::@10/(byte) printu::b#8 main::@11/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@12/(byte) printu::b#10 main::@13/(byte) printu::b#11 main::@14/(byte) printu::b#12 main::@15/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@16/(byte) printu::b#14 main::@17/(byte) printu::b#15 main::@18/(byte) printu::b#16 main::@19/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@2/(byte) printu::b#0 main::@20/(byte) printu::b#18 main::@21/(byte) printu::b#19 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@4/(byte) printu::b#2 main::@5/(byte) printu::b#3 main::@6/(byte) printu::b#4 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@8/(byte) printu::b#6 main::@9/(byte) printu::b#7 ) [167] (byte) printu::b#20 ← phi( main::@10/(byte) printu::b#8 main::@11/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@12/(byte) printu::b#10 main::@13/(byte) printu::b#11 main::@14/(byte) printu::b#12 main::@15/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@16/(byte) printu::b#14 main::@17/(byte) printu::b#15 main::@18/(byte) printu::b#16 main::@19/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@2/(byte) printu::b#0 main::@20/(byte) printu::b#18 main::@21/(byte) printu::b#19 main::@3/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@4/(byte) printu::b#2 main::@5/(byte) printu::b#3 main::@6/(byte) printu::b#4 main::@7/(byte/signed byte/word/signed word/dword/signed dword) 55 main::@8/(byte) printu::b#6 main::@9/(byte) printu::b#7 )
[167] (byte[]) printu::op#20 ← phi( main::@10/(const string) main::op8 main::@11/(const string) main::op9 main::@12/(const string) main::op10 main::@13/(const string) main::op11 main::@14/(const string) main::op12 main::@15/(const string) main::op13 main::@16/(const string) main::op14 main::@17/(const string) main::op15 main::@18/(const string) main::op16 main::@19/(const string) main::op17 main::@2/(const string) main::op main::@20/(const string) main::op18 main::@21/(const string) main::op19 main::@3/(const string) main::op1 main::@4/(const string) main::op2 main::@5/(const string) main::op3 main::@6/(const string) main::op4 main::@7/(const string) main::op5 main::@8/(const string) main::op6 main::@9/(const string) main::op7 ) [167] (byte[]) printu::op#20 ← phi( main::@10/(const string) main::op8 main::@11/(const string) main::op8 main::@12/(const string) main::op8 main::@13/(const string) main::op8 main::@14/(const string) main::op12 main::@15/(const string) main::op12 main::@16/(const string) main::op12 main::@17/(const string) main::op12 main::@18/(const string) main::op16 main::@19/(const string) main::op16 main::@2/(const string) main::op main::@20/(const string) main::op16 main::@21/(const string) main::op16 main::@3/(const string) main::op main::@4/(const string) main::op main::@5/(const string) main::op main::@6/(const string) main::op4 main::@7/(const string) main::op4 main::@8/(const string) main::op4 main::@9/(const string) main::op4 )
[167] (byte) printu::a#20 ← phi( main::@10/(byte) printu::a#8 main::@11/(byte) printu::a#9 main::@12/(byte) printu::a#10 main::@13/(byte) printu::a#11 main::@14/(byte) printu::a#12 main::@15/(byte) printu::a#13 main::@16/(byte) printu::a#14 main::@17/(byte) printu::a#15 main::@18/(byte) printu::a#16 main::@19/(byte) printu::a#17 main::@2/(byte) printu::a#0 main::@20/(byte) printu::a#18 main::@21/(byte) printu::a#19 main::@3/(byte) printu::a#1 main::@4/(byte) printu::a#2 main::@5/(byte) printu::a#3 main::@6/(byte) printu::a#4 main::@7/(byte) printu::a#5 main::@8/(byte) printu::a#6 main::@9/(byte) printu::a#7 ) [167] (byte) printu::a#20 ← phi( main::@10/(byte) printu::a#8 main::@11/(byte) printu::a#9 main::@12/(byte) printu::a#10 main::@13/(byte) printu::a#11 main::@14/(byte) printu::a#12 main::@15/(byte) printu::a#13 main::@16/(byte) printu::a#14 main::@17/(byte) printu::a#15 main::@18/(byte) printu::a#16 main::@19/(byte) printu::a#17 main::@2/(byte) printu::a#0 main::@20/(byte) printu::a#18 main::@21/(byte) printu::a#19 main::@3/(byte) printu::a#1 main::@4/(byte) printu::a#2 main::@5/(byte) printu::a#3 main::@6/(byte) printu::a#4 main::@7/(byte) printu::a#5 main::@8/(byte) printu::a#6 main::@9/(byte) printu::a#7 )
[167] (byte*) print_char_cursor#95 ← phi( main::@10/(byte*~) print_char_cursor#143 main::@11/(byte*) print_char_cursor#55 main::@12/(byte*) print_char_cursor#55 main::@13/(byte*) print_char_cursor#55 main::@14/(byte*~) print_char_cursor#147 main::@15/(byte*) print_char_cursor#55 main::@16/(byte*) print_char_cursor#55 main::@17/(byte*) print_char_cursor#55 main::@18/(byte*~) print_char_cursor#151 main::@19/(byte*) print_char_cursor#55 main::@2/(byte*) print_char_cursor#120 main::@20/(byte*) print_char_cursor#55 main::@21/(byte*) print_char_cursor#55 main::@3/(byte*) print_char_cursor#55 main::@4/(byte*) print_char_cursor#55 main::@5/(byte*) print_char_cursor#55 main::@6/(byte*~) print_char_cursor#159 main::@7/(byte*) print_char_cursor#55 main::@8/(byte*) print_char_cursor#55 main::@9/(byte*) print_char_cursor#55 ) [167] (byte*) print_char_cursor#95 ← phi( main::@10/(byte*~) print_char_cursor#143 main::@11/(byte*) print_char_cursor#55 main::@12/(byte*) print_char_cursor#55 main::@13/(byte*) print_char_cursor#55 main::@14/(byte*~) print_char_cursor#147 main::@15/(byte*) print_char_cursor#55 main::@16/(byte*) print_char_cursor#55 main::@17/(byte*) print_char_cursor#55 main::@18/(byte*~) print_char_cursor#151 main::@19/(byte*) print_char_cursor#55 main::@2/(byte*) print_char_cursor#120 main::@20/(byte*) print_char_cursor#55 main::@21/(byte*) print_char_cursor#55 main::@3/(byte*) print_char_cursor#55 main::@4/(byte*) print_char_cursor#55 main::@5/(byte*) print_char_cursor#55 main::@6/(byte*~) print_char_cursor#159 main::@7/(byte*) print_char_cursor#55 main::@8/(byte*) print_char_cursor#55 main::@9/(byte*) print_char_cursor#55 )
[168] call print_char [168] call print_char
@ -3226,10 +3242,10 @@ main: {
//SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 //SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 //SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@3->printu#2] -- pbuz1=pbuc1
lda #<op1 lda #<op
sta printu.op sta printu.op
lda #>op1 lda #>op
sta printu.op+1 sta printu.op+1
//SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy //SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy
//SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy //SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy
@ -3276,10 +3292,10 @@ main: {
printu_from_b4: printu_from_b4:
//SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy //SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy
//SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy //SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy
//SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 //SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@4->printu#2] -- pbuz1=pbuc1
lda #<op2 lda #<op
sta printu.op sta printu.op
lda #>op2 lda #>op
sta printu.op+1 sta printu.op+1
//SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy //SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy
//SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy //SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy
@ -3324,10 +3340,10 @@ main: {
printu_from_b5: printu_from_b5:
//SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy //SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy
//SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy //SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy
//SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 //SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@5->printu#2] -- pbuz1=pbuc1
lda #<op3 lda #<op
sta printu.op sta printu.op
lda #>op3 lda #>op
sta printu.op+1 sta printu.op+1
//SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy //SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy
//SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy //SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy
@ -3434,10 +3450,10 @@ main: {
//SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 //SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 //SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@7->printu#2] -- pbuz1=pbuc1
lda #<op5 lda #<op4
sta printu.op sta printu.op
lda #>op5 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy //SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy
//SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy //SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy
@ -3484,10 +3500,10 @@ main: {
printu_from_b8: printu_from_b8:
//SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy //SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy
//SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy //SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy
//SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 //SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@8->printu#2] -- pbuz1=pbuc1
lda #<op6 lda #<op4
sta printu.op sta printu.op
lda #>op6 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy //SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy
//SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy //SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy
@ -3532,10 +3548,10 @@ main: {
printu_from_b9: printu_from_b9:
//SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy //SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy
//SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy //SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy
//SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 //SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@9->printu#2] -- pbuz1=pbuc1
lda #<op7 lda #<op4
sta printu.op sta printu.op
lda #>op7 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy //SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy
//SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy //SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy
@ -3644,10 +3660,10 @@ main: {
//SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 //SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 //SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@11->printu#2] -- pbuz1=pbuc1
lda #<op9 lda #<op8
sta printu.op sta printu.op
lda #>op9 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy //SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy
//SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy //SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy
@ -3694,10 +3710,10 @@ main: {
printu_from_b12: printu_from_b12:
//SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy //SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy
//SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy //SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy
//SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 //SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@12->printu#2] -- pbuz1=pbuc1
lda #<op10 lda #<op8
sta printu.op sta printu.op
lda #>op10 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy //SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy
//SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy //SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy
@ -3742,10 +3758,10 @@ main: {
printu_from_b13: printu_from_b13:
//SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy //SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy
//SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy //SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy
//SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 //SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@13->printu#2] -- pbuz1=pbuc1
lda #<op11 lda #<op8
sta printu.op sta printu.op
lda #>op11 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy //SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy
//SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy //SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy
@ -3852,10 +3868,10 @@ main: {
//SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 //SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 //SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@15->printu#2] -- pbuz1=pbuc1
lda #<op13 lda #<op12
sta printu.op sta printu.op
lda #>op13 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy //SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy
//SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy //SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy
@ -3902,10 +3918,10 @@ main: {
printu_from_b16: printu_from_b16:
//SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy //SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy
//SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy //SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy
//SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 //SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@16->printu#2] -- pbuz1=pbuc1
lda #<op14 lda #<op12
sta printu.op sta printu.op
lda #>op14 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy //SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy
//SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy //SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy
@ -3950,10 +3966,10 @@ main: {
printu_from_b17: printu_from_b17:
//SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy //SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy
//SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy //SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy
//SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 //SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@17->printu#2] -- pbuz1=pbuc1
lda #<op15 lda #<op12
sta printu.op sta printu.op
lda #>op15 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy //SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy
//SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy //SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy
@ -4060,10 +4076,10 @@ main: {
//SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 //SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 //SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@19->printu#2] -- pbuz1=pbuc1
lda #<op17 lda #<op16
sta printu.op sta printu.op
lda #>op17 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy //SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy
//SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy //SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy
@ -4110,10 +4126,10 @@ main: {
printu_from_b20: printu_from_b20:
//SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy //SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy
//SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy //SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy
//SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 //SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@20->printu#2] -- pbuz1=pbuc1
lda #<op18 lda #<op16
sta printu.op sta printu.op
lda #>op18 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy //SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy
//SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy //SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy
@ -4158,10 +4174,10 @@ main: {
printu_from_b21: printu_from_b21:
//SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy //SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy
//SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy //SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy
//SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 //SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@21->printu#2] -- pbuz1=pbuc1
lda #<op19 lda #<op16
sta printu.op sta printu.op
lda #>op19 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy //SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy
//SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy //SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy
@ -4212,25 +4228,10 @@ main: {
//SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy //SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy
jmp b1 jmp b1
op: .text "< @" op: .text "< @"
op1: .text "< @"
op2: .text "< @"
op3: .text "< @"
op4: .text "> @" op4: .text "> @"
op5: .text "> @"
op6: .text "> @"
op7: .text "> @"
op8: .text "<=@" op8: .text "<=@"
op9: .text "<=@"
op10: .text "<=@"
op11: .text "<=@"
op12: .text ">=@" op12: .text ">=@"
op13: .text ">=@"
op14: .text ">=@"
op15: .text ">=@"
op16: .text "==@" op16: .text "==@"
op17: .text "==@"
op18: .text "==@"
op19: .text "==@"
cs: .byte 7, $c7, $37, $97, $67 cs: .byte 7, $c7, $37, $97, $67
} }
//SEG436 print_ln //SEG436 print_ln
@ -4863,10 +4864,10 @@ main: {
//SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 //SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 //SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@3->printu#2] -- pbuz1=pbuc1
lda #<op1 lda #<op
sta printu.op sta printu.op
lda #>op1 lda #>op
sta printu.op+1 sta printu.op+1
//SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy //SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy
//SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy //SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy
@ -4907,10 +4908,10 @@ main: {
printu_from_b4: printu_from_b4:
//SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy //SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy
//SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy //SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy
//SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 //SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@4->printu#2] -- pbuz1=pbuc1
lda #<op2 lda #<op
sta printu.op sta printu.op
lda #>op2 lda #>op
sta printu.op+1 sta printu.op+1
//SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy //SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy
//SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy //SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy
@ -4949,10 +4950,10 @@ main: {
printu_from_b5: printu_from_b5:
//SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy //SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy
//SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy //SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy
//SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 //SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@5->printu#2] -- pbuz1=pbuc1
lda #<op3 lda #<op
sta printu.op sta printu.op
lda #>op3 lda #>op
sta printu.op+1 sta printu.op+1
//SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy //SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy
//SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy //SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy
@ -5047,10 +5048,10 @@ main: {
//SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 //SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 //SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@7->printu#2] -- pbuz1=pbuc1
lda #<op5 lda #<op4
sta printu.op sta printu.op
lda #>op5 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy //SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy
//SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy //SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy
@ -5091,10 +5092,10 @@ main: {
printu_from_b8: printu_from_b8:
//SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy //SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy
//SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy //SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy
//SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 //SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@8->printu#2] -- pbuz1=pbuc1
lda #<op6 lda #<op4
sta printu.op sta printu.op
lda #>op6 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy //SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy
//SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy //SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy
@ -5133,10 +5134,10 @@ main: {
printu_from_b9: printu_from_b9:
//SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy //SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy
//SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy //SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy
//SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 //SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@9->printu#2] -- pbuz1=pbuc1
lda #<op7 lda #<op4
sta printu.op sta printu.op
lda #>op7 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy //SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy
//SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy //SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy
@ -5233,10 +5234,10 @@ main: {
//SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 //SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 //SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@11->printu#2] -- pbuz1=pbuc1
lda #<op9 lda #<op8
sta printu.op sta printu.op
lda #>op9 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy //SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy
//SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy //SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy
@ -5277,10 +5278,10 @@ main: {
printu_from_b12: printu_from_b12:
//SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy //SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy
//SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy //SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy
//SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 //SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@12->printu#2] -- pbuz1=pbuc1
lda #<op10 lda #<op8
sta printu.op sta printu.op
lda #>op10 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy //SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy
//SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy //SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy
@ -5319,10 +5320,10 @@ main: {
printu_from_b13: printu_from_b13:
//SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy //SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy
//SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy //SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy
//SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 //SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@13->printu#2] -- pbuz1=pbuc1
lda #<op11 lda #<op8
sta printu.op sta printu.op
lda #>op11 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy //SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy
//SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy //SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy
@ -5417,10 +5418,10 @@ main: {
//SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 //SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 //SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@15->printu#2] -- pbuz1=pbuc1
lda #<op13 lda #<op12
sta printu.op sta printu.op
lda #>op13 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy //SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy
//SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy //SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy
@ -5461,10 +5462,10 @@ main: {
printu_from_b16: printu_from_b16:
//SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy //SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy
//SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy //SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy
//SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 //SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@16->printu#2] -- pbuz1=pbuc1
lda #<op14 lda #<op12
sta printu.op sta printu.op
lda #>op14 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy //SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy
//SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy //SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy
@ -5503,10 +5504,10 @@ main: {
printu_from_b17: printu_from_b17:
//SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy //SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy
//SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy //SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy
//SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 //SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@17->printu#2] -- pbuz1=pbuc1
lda #<op15 lda #<op12
sta printu.op sta printu.op
lda #>op15 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy //SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy
//SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy //SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy
@ -5601,10 +5602,10 @@ main: {
//SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 //SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 //SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@19->printu#2] -- pbuz1=pbuc1
lda #<op17 lda #<op16
sta printu.op sta printu.op
lda #>op17 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy //SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy
//SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy //SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy
@ -5645,10 +5646,10 @@ main: {
printu_from_b20: printu_from_b20:
//SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy //SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy
//SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy //SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy
//SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 //SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@20->printu#2] -- pbuz1=pbuc1
lda #<op18 lda #<op16
sta printu.op sta printu.op
lda #>op18 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy //SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy
//SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy //SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy
@ -5687,10 +5688,10 @@ main: {
printu_from_b21: printu_from_b21:
//SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy //SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy
//SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy //SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy
//SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 //SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@21->printu#2] -- pbuz1=pbuc1
lda #<op19 lda #<op16
sta printu.op sta printu.op
lda #>op19 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy //SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy
//SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy //SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy
@ -5741,25 +5742,10 @@ main: {
//SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy //SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy
jmp b1 jmp b1
op: .text "< @" op: .text "< @"
op1: .text "< @"
op2: .text "< @"
op3: .text "< @"
op4: .text "> @" op4: .text "> @"
op5: .text "> @"
op6: .text "> @"
op7: .text "> @"
op8: .text "<=@" op8: .text "<=@"
op9: .text "<=@"
op10: .text "<=@"
op11: .text "<=@"
op12: .text ">=@" op12: .text ">=@"
op13: .text ">=@"
op14: .text ">=@"
op15: .text ">=@"
op16: .text "==@" op16: .text "==@"
op17: .text "==@"
op18: .text "==@"
op19: .text "==@"
cs: .byte 7, $c7, $37, $97, $67 cs: .byte 7, $c7, $37, $97, $67
} }
//SEG436 print_ln //SEG436 print_ln
@ -6373,25 +6359,10 @@ FINAL SYMBOL TABLE
(byte) main::i#1 i zp ZP_BYTE:3 11.0 (byte) main::i#1 i zp ZP_BYTE:3 11.0
(byte) main::i#10 i zp ZP_BYTE:3 0.8684210526315792 (byte) main::i#10 i zp ZP_BYTE:3 0.8684210526315792
(const string) main::op op = (string) "< @" (const string) main::op op = (string) "< @"
(const string) main::op1 op1 = (string) "< @"
(const string) main::op10 op10 = (string) "<=@"
(const string) main::op11 op11 = (string) "<=@"
(const string) main::op12 op12 = (string) ">=@" (const string) main::op12 op12 = (string) ">=@"
(const string) main::op13 op13 = (string) ">=@"
(const string) main::op14 op14 = (string) ">=@"
(const string) main::op15 op15 = (string) ">=@"
(const string) main::op16 op16 = (string) "==@" (const string) main::op16 op16 = (string) "==@"
(const string) main::op17 op17 = (string) "==@"
(const string) main::op18 op18 = (string) "==@"
(const string) main::op19 op19 = (string) "==@"
(const string) main::op2 op2 = (string) "< @"
(const string) main::op3 op3 = (string) "< @"
(const string) main::op4 op4 = (string) "> @" (const string) main::op4 op4 = (string) "> @"
(const string) main::op5 op5 = (string) "> @"
(const string) main::op6 op6 = (string) "> @"
(const string) main::op7 op7 = (string) "> @"
(const string) main::op8 op8 = (string) "<=@" (const string) main::op8 op8 = (string) "<=@"
(const string) main::op9 op9 = (string) "<=@"
(byte) main::r (byte) main::r
(byte) main::r#40 reg byte x 3.6666666666666665 (byte) main::r#40 reg byte x 3.6666666666666665
(byte) main::r#41 reg byte x 5.5 (byte) main::r#41 reg byte x 5.5
@ -6680,10 +6651,10 @@ main: {
//SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1 //SEG52 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@3->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op1 [phi:main::@3->printu#2] -- pbuz1=pbuc1 //SEG53 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@3->printu#2] -- pbuz1=pbuc1
lda #<op1 lda #<op
sta printu.op sta printu.op
lda #>op1 lda #>op
sta printu.op+1 sta printu.op+1
//SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy //SEG54 [167] phi (byte) printu::a#20 = (byte) printu::a#1 [phi:main::@3->printu#3] -- register_copy
//SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy //SEG55 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@3->printu#4] -- register_copy
@ -6716,10 +6687,10 @@ main: {
//SEG69 [167] phi from main::@4 to printu [phi:main::@4->printu] //SEG69 [167] phi from main::@4 to printu [phi:main::@4->printu]
//SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy //SEG70 [167] phi (byte) printu::res#20 = (byte) printu::res#2 [phi:main::@4->printu#0] -- register_copy
//SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy //SEG71 [167] phi (byte) printu::b#20 = (byte) printu::b#2 [phi:main::@4->printu#1] -- register_copy
//SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op2 [phi:main::@4->printu#2] -- pbuz1=pbuc1 //SEG72 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@4->printu#2] -- pbuz1=pbuc1
lda #<op2 lda #<op
sta printu.op sta printu.op
lda #>op2 lda #>op
sta printu.op+1 sta printu.op+1
//SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy //SEG73 [167] phi (byte) printu::a#20 = (byte) printu::a#2 [phi:main::@4->printu#3] -- register_copy
//SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy //SEG74 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@4->printu#4] -- register_copy
@ -6750,10 +6721,10 @@ main: {
//SEG88 [167] phi from main::@5 to printu [phi:main::@5->printu] //SEG88 [167] phi from main::@5 to printu [phi:main::@5->printu]
//SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy //SEG89 [167] phi (byte) printu::res#20 = (byte) printu::res#3 [phi:main::@5->printu#0] -- register_copy
//SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy //SEG90 [167] phi (byte) printu::b#20 = (byte) printu::b#3 [phi:main::@5->printu#1] -- register_copy
//SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op3 [phi:main::@5->printu#2] -- pbuz1=pbuc1 //SEG91 [167] phi (byte[]) printu::op#20 = (const string) main::op [phi:main::@5->printu#2] -- pbuz1=pbuc1
lda #<op3 lda #<op
sta printu.op sta printu.op
lda #>op3 lda #>op
sta printu.op+1 sta printu.op+1
//SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy //SEG92 [167] phi (byte) printu::a#20 = (byte) printu::a#3 [phi:main::@5->printu#3] -- register_copy
//SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy //SEG93 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@5->printu#4] -- register_copy
@ -6828,10 +6799,10 @@ main: {
//SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1 //SEG133 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@7->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op5 [phi:main::@7->printu#2] -- pbuz1=pbuc1 //SEG134 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@7->printu#2] -- pbuz1=pbuc1
lda #<op5 lda #<op4
sta printu.op sta printu.op
lda #>op5 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy //SEG135 [167] phi (byte) printu::a#20 = (byte) printu::a#5 [phi:main::@7->printu#3] -- register_copy
//SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy //SEG136 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@7->printu#4] -- register_copy
@ -6864,10 +6835,10 @@ main: {
//SEG150 [167] phi from main::@8 to printu [phi:main::@8->printu] //SEG150 [167] phi from main::@8 to printu [phi:main::@8->printu]
//SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy //SEG151 [167] phi (byte) printu::res#20 = (byte) printu::res#6 [phi:main::@8->printu#0] -- register_copy
//SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy //SEG152 [167] phi (byte) printu::b#20 = (byte) printu::b#6 [phi:main::@8->printu#1] -- register_copy
//SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op6 [phi:main::@8->printu#2] -- pbuz1=pbuc1 //SEG153 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@8->printu#2] -- pbuz1=pbuc1
lda #<op6 lda #<op4
sta printu.op sta printu.op
lda #>op6 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy //SEG154 [167] phi (byte) printu::a#20 = (byte) printu::a#6 [phi:main::@8->printu#3] -- register_copy
//SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy //SEG155 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@8->printu#4] -- register_copy
@ -6898,10 +6869,10 @@ main: {
//SEG169 [167] phi from main::@9 to printu [phi:main::@9->printu] //SEG169 [167] phi from main::@9 to printu [phi:main::@9->printu]
//SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy //SEG170 [167] phi (byte) printu::res#20 = (byte) printu::res#7 [phi:main::@9->printu#0] -- register_copy
//SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy //SEG171 [167] phi (byte) printu::b#20 = (byte) printu::b#7 [phi:main::@9->printu#1] -- register_copy
//SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op7 [phi:main::@9->printu#2] -- pbuz1=pbuc1 //SEG172 [167] phi (byte[]) printu::op#20 = (const string) main::op4 [phi:main::@9->printu#2] -- pbuz1=pbuc1
lda #<op7 lda #<op4
sta printu.op sta printu.op
lda #>op7 lda #>op4
sta printu.op+1 sta printu.op+1
//SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy //SEG173 [167] phi (byte) printu::a#20 = (byte) printu::a#7 [phi:main::@9->printu#3] -- register_copy
//SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy //SEG174 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@9->printu#4] -- register_copy
@ -6978,10 +6949,10 @@ main: {
//SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1 //SEG214 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@11->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op9 [phi:main::@11->printu#2] -- pbuz1=pbuc1 //SEG215 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@11->printu#2] -- pbuz1=pbuc1
lda #<op9 lda #<op8
sta printu.op sta printu.op
lda #>op9 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy //SEG216 [167] phi (byte) printu::a#20 = (byte) printu::a#9 [phi:main::@11->printu#3] -- register_copy
//SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy //SEG217 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@11->printu#4] -- register_copy
@ -7014,10 +6985,10 @@ main: {
//SEG231 [167] phi from main::@12 to printu [phi:main::@12->printu] //SEG231 [167] phi from main::@12 to printu [phi:main::@12->printu]
//SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy //SEG232 [167] phi (byte) printu::res#20 = (byte) printu::res#10 [phi:main::@12->printu#0] -- register_copy
//SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy //SEG233 [167] phi (byte) printu::b#20 = (byte) printu::b#10 [phi:main::@12->printu#1] -- register_copy
//SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op10 [phi:main::@12->printu#2] -- pbuz1=pbuc1 //SEG234 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@12->printu#2] -- pbuz1=pbuc1
lda #<op10 lda #<op8
sta printu.op sta printu.op
lda #>op10 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy //SEG235 [167] phi (byte) printu::a#20 = (byte) printu::a#10 [phi:main::@12->printu#3] -- register_copy
//SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy //SEG236 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@12->printu#4] -- register_copy
@ -7048,10 +7019,10 @@ main: {
//SEG250 [167] phi from main::@13 to printu [phi:main::@13->printu] //SEG250 [167] phi from main::@13 to printu [phi:main::@13->printu]
//SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy //SEG251 [167] phi (byte) printu::res#20 = (byte) printu::res#11 [phi:main::@13->printu#0] -- register_copy
//SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy //SEG252 [167] phi (byte) printu::b#20 = (byte) printu::b#11 [phi:main::@13->printu#1] -- register_copy
//SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op11 [phi:main::@13->printu#2] -- pbuz1=pbuc1 //SEG253 [167] phi (byte[]) printu::op#20 = (const string) main::op8 [phi:main::@13->printu#2] -- pbuz1=pbuc1
lda #<op11 lda #<op8
sta printu.op sta printu.op
lda #>op11 lda #>op8
sta printu.op+1 sta printu.op+1
//SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy //SEG254 [167] phi (byte) printu::a#20 = (byte) printu::a#11 [phi:main::@13->printu#3] -- register_copy
//SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy //SEG255 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@13->printu#4] -- register_copy
@ -7126,10 +7097,10 @@ main: {
//SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1 //SEG295 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@15->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op13 [phi:main::@15->printu#2] -- pbuz1=pbuc1 //SEG296 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@15->printu#2] -- pbuz1=pbuc1
lda #<op13 lda #<op12
sta printu.op sta printu.op
lda #>op13 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy //SEG297 [167] phi (byte) printu::a#20 = (byte) printu::a#13 [phi:main::@15->printu#3] -- register_copy
//SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy //SEG298 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@15->printu#4] -- register_copy
@ -7162,10 +7133,10 @@ main: {
//SEG312 [167] phi from main::@16 to printu [phi:main::@16->printu] //SEG312 [167] phi from main::@16 to printu [phi:main::@16->printu]
//SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy //SEG313 [167] phi (byte) printu::res#20 = (byte) printu::res#14 [phi:main::@16->printu#0] -- register_copy
//SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy //SEG314 [167] phi (byte) printu::b#20 = (byte) printu::b#14 [phi:main::@16->printu#1] -- register_copy
//SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op14 [phi:main::@16->printu#2] -- pbuz1=pbuc1 //SEG315 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@16->printu#2] -- pbuz1=pbuc1
lda #<op14 lda #<op12
sta printu.op sta printu.op
lda #>op14 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy //SEG316 [167] phi (byte) printu::a#20 = (byte) printu::a#14 [phi:main::@16->printu#3] -- register_copy
//SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy //SEG317 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@16->printu#4] -- register_copy
@ -7196,10 +7167,10 @@ main: {
//SEG331 [167] phi from main::@17 to printu [phi:main::@17->printu] //SEG331 [167] phi from main::@17 to printu [phi:main::@17->printu]
//SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy //SEG332 [167] phi (byte) printu::res#20 = (byte) printu::res#15 [phi:main::@17->printu#0] -- register_copy
//SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy //SEG333 [167] phi (byte) printu::b#20 = (byte) printu::b#15 [phi:main::@17->printu#1] -- register_copy
//SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op15 [phi:main::@17->printu#2] -- pbuz1=pbuc1 //SEG334 [167] phi (byte[]) printu::op#20 = (const string) main::op12 [phi:main::@17->printu#2] -- pbuz1=pbuc1
lda #<op15 lda #<op12
sta printu.op sta printu.op
lda #>op15 lda #>op12
sta printu.op+1 sta printu.op+1
//SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy //SEG335 [167] phi (byte) printu::a#20 = (byte) printu::a#15 [phi:main::@17->printu#3] -- register_copy
//SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy //SEG336 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@17->printu#4] -- register_copy
@ -7274,10 +7245,10 @@ main: {
//SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1 //SEG376 [167] phi (byte) printu::b#20 = (byte/signed byte/word/signed word/dword/signed dword) 55 [phi:main::@19->printu#1] -- vbuz1=vbuc1
lda #$37 lda #$37
sta printu.b sta printu.b
//SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op17 [phi:main::@19->printu#2] -- pbuz1=pbuc1 //SEG377 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@19->printu#2] -- pbuz1=pbuc1
lda #<op17 lda #<op16
sta printu.op sta printu.op
lda #>op17 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy //SEG378 [167] phi (byte) printu::a#20 = (byte) printu::a#17 [phi:main::@19->printu#3] -- register_copy
//SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy //SEG379 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@19->printu#4] -- register_copy
@ -7310,10 +7281,10 @@ main: {
//SEG393 [167] phi from main::@20 to printu [phi:main::@20->printu] //SEG393 [167] phi from main::@20 to printu [phi:main::@20->printu]
//SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy //SEG394 [167] phi (byte) printu::res#20 = (byte) printu::res#18 [phi:main::@20->printu#0] -- register_copy
//SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy //SEG395 [167] phi (byte) printu::b#20 = (byte) printu::b#18 [phi:main::@20->printu#1] -- register_copy
//SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op18 [phi:main::@20->printu#2] -- pbuz1=pbuc1 //SEG396 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@20->printu#2] -- pbuz1=pbuc1
lda #<op18 lda #<op16
sta printu.op sta printu.op
lda #>op18 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy //SEG397 [167] phi (byte) printu::a#20 = (byte) printu::a#18 [phi:main::@20->printu#3] -- register_copy
//SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy //SEG398 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@20->printu#4] -- register_copy
@ -7344,10 +7315,10 @@ main: {
//SEG412 [167] phi from main::@21 to printu [phi:main::@21->printu] //SEG412 [167] phi from main::@21 to printu [phi:main::@21->printu]
//SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy //SEG413 [167] phi (byte) printu::res#20 = (byte) printu::res#19 [phi:main::@21->printu#0] -- register_copy
//SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy //SEG414 [167] phi (byte) printu::b#20 = (byte) printu::b#19 [phi:main::@21->printu#1] -- register_copy
//SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op19 [phi:main::@21->printu#2] -- pbuz1=pbuc1 //SEG415 [167] phi (byte[]) printu::op#20 = (const string) main::op16 [phi:main::@21->printu#2] -- pbuz1=pbuc1
lda #<op19 lda #<op16
sta printu.op sta printu.op
lda #>op19 lda #>op16
sta printu.op+1 sta printu.op+1
//SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy //SEG416 [167] phi (byte) printu::a#20 = (byte) printu::a#19 [phi:main::@21->printu#3] -- register_copy
//SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy //SEG417 [167] phi (byte*) print_char_cursor#95 = (byte*) print_char_cursor#55 [phi:main::@21->printu#4] -- register_copy
@ -7388,25 +7359,10 @@ main: {
//SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy //SEG435 [6] phi (byte) main::a#10 = (byte) main::a#1 [phi:main::@71->main::@1#3] -- register_copy
jmp b1 jmp b1
op: .text "< @" op: .text "< @"
op1: .text "< @"
op2: .text "< @"
op3: .text "< @"
op4: .text "> @" op4: .text "> @"
op5: .text "> @"
op6: .text "> @"
op7: .text "> @"
op8: .text "<=@" op8: .text "<=@"
op9: .text "<=@"
op10: .text "<=@"
op11: .text "<=@"
op12: .text ">=@" op12: .text ">=@"
op13: .text ">=@"
op14: .text ">=@"
op15: .text ">=@"
op16: .text "==@" op16: .text "==@"
op17: .text "==@"
op18: .text "==@"
op19: .text "==@"
cs: .byte 7, $c7, $37, $97, $67 cs: .byte 7, $c7, $37, $97, $67
} }
//SEG436 print_ln //SEG436 print_ln

View File

@ -81,25 +81,10 @@
(byte) main::i#1 i zp ZP_BYTE:3 11.0 (byte) main::i#1 i zp ZP_BYTE:3 11.0
(byte) main::i#10 i zp ZP_BYTE:3 0.8684210526315792 (byte) main::i#10 i zp ZP_BYTE:3 0.8684210526315792
(const string) main::op op = (string) "< @" (const string) main::op op = (string) "< @"
(const string) main::op1 op1 = (string) "< @"
(const string) main::op10 op10 = (string) "<=@"
(const string) main::op11 op11 = (string) "<=@"
(const string) main::op12 op12 = (string) ">=@" (const string) main::op12 op12 = (string) ">=@"
(const string) main::op13 op13 = (string) ">=@"
(const string) main::op14 op14 = (string) ">=@"
(const string) main::op15 op15 = (string) ">=@"
(const string) main::op16 op16 = (string) "==@" (const string) main::op16 op16 = (string) "==@"
(const string) main::op17 op17 = (string) "==@"
(const string) main::op18 op18 = (string) "==@"
(const string) main::op19 op19 = (string) "==@"
(const string) main::op2 op2 = (string) "< @"
(const string) main::op3 op3 = (string) "< @"
(const string) main::op4 op4 = (string) "> @" (const string) main::op4 op4 = (string) "> @"
(const string) main::op5 op5 = (string) "> @"
(const string) main::op6 op6 = (string) "> @"
(const string) main::op7 op7 = (string) "> @"
(const string) main::op8 op8 = (string) "<=@" (const string) main::op8 op8 = (string) "<=@"
(const string) main::op9 op9 = (string) "<=@"
(byte) main::r (byte) main::r
(byte) main::r#40 reg byte x 3.6666666666666665 (byte) main::r#40 reg byte x 3.6666666666666665
(byte) main::r#41 reg byte x 5.5 (byte) main::r#41 reg byte x 5.5

View File

@ -75,9 +75,6 @@ test_16s: {
cmp #$c cmp #$c
bne b1 bne b1
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
divisors: .word 5, -7, $b, -$d, -$11, $13 divisors: .word 5, -7, $b, -$d, -$11, $13
} }
@ -398,9 +395,6 @@ test_8s: {
cmp #6 cmp #6
bne b1 bne b1
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
divisors: .byte 5, 7, -$b, -$d, $11, $13 divisors: .byte 5, 7, -$b, -$d, $11, $13
} }
@ -598,9 +592,6 @@ test_16u: {
cmp #$c cmp #$c
bne b1 bne b1
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
divisors: .word 5, 7, $b, $d, $11, $13 divisors: .word 5, 7, $b, $d, $11, $13
} }
@ -684,9 +675,6 @@ test_8u: {
lda print_line_cursor+1 lda print_line_cursor+1
sta print_char_cursor+1 sta print_char_cursor+1
jmp b1 jmp b1
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
divisors: .byte 5, 7, $b, $d, $11, $13 divisors: .byte 5, 7, $b, $d, $11, $13
} }
@ -714,3 +702,6 @@ print_cls: {
rts rts
} }
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
str: .text " / @"
str2: .text " @"
str1: .text " = @"

View File

@ -153,7 +153,7 @@ print_char::@return: scope:[print_char] from print_char
[75] return [75] return
to:@return to:@return
print_str: scope:[print_str] from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8 print_str: scope:[print_str] from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8
[76] (byte*) print_str::str#15 ← phi( test_16s::@4/(const string) test_16s::str test_16s::@6/(const string) test_16s::str1 test_16s::@8/(const string) test_16s::str2 test_16u::@4/(const string) test_16u::str test_16u::@6/(const string) test_16u::str1 test_16u::@8/(const string) test_16u::str2 test_8s::@4/(const string) test_8s::str test_8s::@6/(const string) test_8s::str1 test_8s::@8/(const string) test_8s::str2 test_8u::@4/(const string) test_8u::str test_8u::@6/(const string) test_8u::str1 test_8u::@8/(const string) test_8u::str2 ) [76] (byte*) print_str::str#15 ← phi( test_16s::@4/(const string) str test_16s::@6/(const string) str1 test_16s::@8/(const string) str2 test_16u::@4/(const string) str test_16u::@6/(const string) str1 test_16u::@8/(const string) str2 test_8s::@4/(const string) str test_8s::@6/(const string) str1 test_8s::@8/(const string) str2 test_8u::@4/(const string) str test_8u::@6/(const string) str1 test_8u::@8/(const string) str2 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) [77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 )

View File

@ -3007,6 +3007,7 @@ Constant (const word) divr16s::remu#1 = ((word))divr16s::$7
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
if() condition always false - eliminating [256] if((const bool) divr16s::$1) goto divr16s::@1 if() condition always false - eliminating [256] if((const bool) divr16s::$1) goto divr16s::@1
Successful SSA optimization Pass2ConstantIfs Successful SSA optimization Pass2ConstantIfs
Successful SSA optimization Pass2ConstantStringConsolidation
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
Successful SSA optimization PassNEliminateUnusedVars Successful SSA optimization PassNEliminateUnusedVars
@ -3095,50 +3096,62 @@ Inlining constant with var siblings (const byte) test_8s::i#0
Inlining constant with var siblings (const byte) test_16s::i#0 Inlining constant with var siblings (const byte) test_16s::i#0
Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined test_8s::str1 = (const string) str1
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined test_8s::str2 = (const string) str2
Constant inlined print_str::str#12 = (const string) test_16s::str2
Constant inlined print_str::str#11 = (const string) test_16s::str1
Constant inlined print_str::str#10 = (const string) test_16s::str
Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined divr16s::$7 = -(const signed word) divr16s::rem#0
Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined divr8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined test_16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined test_8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8s::$3 = -(byte/signed byte/word/signed word/dword/signed dword) 13 Constant inlined test_8s::$3 = -(byte/signed byte/word/signed word/dword/signed dword) 13
Constant inlined test_8s::$2 = -(byte/signed byte/word/signed word/dword/signed dword) 11 Constant inlined test_8s::$2 = -(byte/signed byte/word/signed word/dword/signed dword) 11
Constant inlined test_8s::$1 = -(byte/signed byte/word/signed word/dword/signed dword) 127 Constant inlined test_8s::$1 = -(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined test_8s::$0 = -(byte/signed byte/word/signed word/dword/signed dword) 127 Constant inlined test_8s::$0 = -(byte/signed byte/word/signed word/dword/signed dword) 127
Constant inlined test_16s::str1 = (const string) str1
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined test_16s::str2 = (const string) str2
Constant inlined test_16s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr8u::rem#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#9 = (const string) str2
Constant inlined print_str::str#4 = (const string) str
Constant inlined print_str::str#3 = (const string) str2
Constant inlined div8s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined print_str::str#2 = (const string) str1
Constant inlined div8s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#1 = (const string) str
Constant inlined print_str::str#8 = (const string) str1
Constant inlined print_str::str#7 = (const string) str
Constant inlined test_8u::str = (const string) str
Constant inlined print_str::str#6 = (const string) str2
Constant inlined print_str::str#5 = (const string) str1
Constant inlined test_16s::str = (const string) str
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#12 = (const string) str2
Constant inlined print_str::str#11 = (const string) str1
Constant inlined print_str::str#10 = (const string) str
Constant inlined divr16s::$7 = -(const signed word) divr16s::rem#0
Constant inlined divr16s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined divr16s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8u::str2 = (const string) str2
Constant inlined divr16u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_8u::str1 = (const string) str1
Constant inlined test_8s::str = (const string) str
Constant inlined test_16s::$3 = -(byte/signed byte/word/signed word/dword/signed dword) 7 Constant inlined test_16s::$3 = -(byte/signed byte/word/signed word/dword/signed dword) 7
Constant inlined test_16s::$4 = -(byte/signed byte/word/signed word/dword/signed dword) 13 Constant inlined test_16s::$4 = -(byte/signed byte/word/signed word/dword/signed dword) 13
Constant inlined test_16s::$5 = -(byte/signed byte/word/signed word/dword/signed dword) 17 Constant inlined test_16s::$5 = -(byte/signed byte/word/signed word/dword/signed dword) 17
Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined test_16s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined divr8u::rem#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined divr8u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined divr8u::quotient#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_16u::str1 = (const string) str1
Constant inlined print_char::ch#2 = (byte) ' ' Constant inlined print_char::ch#2 = (byte) ' '
Constant inlined print_str::str#9 = (const string) test_8s::str2 Constant inlined test_16u::str = (const string) str
Constant inlined test_16u::str2 = (const string) str2
Constant inlined print_char::ch#1 = (byte) '-' Constant inlined print_char::ch#1 = (byte) '-'
Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined print_str::str#4 = (const string) test_16u::str
Constant inlined print_str::str#3 = (const string) test_8u::str2
Constant inlined div8s::neg#1 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined print_str::str#2 = (const string) test_8u::str1
Constant inlined div8s::neg#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#1 = (const string) test_8u::str
Constant inlined print_str::str#8 = (const string) test_8s::str1
Constant inlined test_16s::$0 = -(word/signed word/dword/signed dword) 32767 Constant inlined test_16s::$0 = -(word/signed word/dword/signed dword) 32767
Constant inlined print_str::str#7 = (const string) test_8s::str
Constant inlined test_16s::$1 = -(word/signed word/dword/signed dword) 32767 Constant inlined test_16s::$1 = -(word/signed word/dword/signed dword) 32767
Constant inlined print_str::str#6 = (const string) test_16u::str2
Constant inlined divr16s::remu#1 = ((word))-(const signed word) divr16s::rem#0 Constant inlined divr16s::remu#1 = ((word))-(const signed word) divr16s::rem#0
Constant inlined test_8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined test_8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined test_16s::$2 = -(word/signed word/dword/signed dword) 32767 Constant inlined test_16s::$2 = -(word/signed word/dword/signed dword) 32767
Constant inlined print_str::str#5 = (const string) test_16u::str1
Constant inlined divr16s::remu#2 = ((word))(const signed word) divr16s::rem#0 Constant inlined divr16s::remu#2 = ((word))(const signed word) divr16s::rem#0
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting test_16s::@12(between test_16s::@11 and test_16s::@1) Added new block during phi lifting test_16s::@12(between test_16s::@11 and test_16s::@1)
@ -3517,7 +3530,7 @@ print_char::@return: scope:[print_char] from print_char
[75] return [75] return
to:@return to:@return
print_str: scope:[print_str] from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8 print_str: scope:[print_str] from test_16s::@4 test_16s::@6 test_16s::@8 test_16u::@4 test_16u::@6 test_16u::@8 test_8s::@4 test_8s::@6 test_8s::@8 test_8u::@4 test_8u::@6 test_8u::@8
[76] (byte*) print_str::str#15 ← phi( test_16s::@4/(const string) test_16s::str test_16s::@6/(const string) test_16s::str1 test_16s::@8/(const string) test_16s::str2 test_16u::@4/(const string) test_16u::str test_16u::@6/(const string) test_16u::str1 test_16u::@8/(const string) test_16u::str2 test_8s::@4/(const string) test_8s::str test_8s::@6/(const string) test_8s::str1 test_8s::@8/(const string) test_8s::str2 test_8u::@4/(const string) test_8u::str test_8u::@6/(const string) test_8u::str1 test_8u::@8/(const string) test_8u::str2 ) [76] (byte*) print_str::str#15 ← phi( test_16s::@4/(const string) str test_16s::@6/(const string) str1 test_16s::@8/(const string) str2 test_16u::@4/(const string) str test_16u::@6/(const string) str1 test_16u::@8/(const string) str2 test_8s::@4/(const string) str test_8s::@6/(const string) str1 test_8s::@8/(const string) str2 test_8u::@4/(const string) str test_8u::@6/(const string) str1 test_8u::@8/(const string) str2 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 ) [77] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#18 print_str::@2/(byte*) print_char_cursor#1 )
@ -4630,7 +4643,7 @@ test_16s: {
//SEG53 [28] call print_str //SEG53 [28] call print_str
//SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG55 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -4658,7 +4671,7 @@ test_16s: {
//SEG64 [32] call print_str //SEG64 [32] call print_str
//SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG66 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -4686,7 +4699,7 @@ test_16s: {
//SEG75 [36] call print_str //SEG75 [36] call print_str
//SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG77 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -4733,9 +4746,6 @@ test_16s: {
breturn: breturn:
//SEG93 [43] return //SEG93 [43] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
divisors: .word 5, -7, $b, -$d, -$11, $13 divisors: .word 5, -7, $b, -$d, -$11, $13
} }
@ -5408,7 +5418,7 @@ test_8s: {
//SEG288 [144] call print_str //SEG288 [144] call print_str
//SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG290 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -5434,7 +5444,7 @@ test_8s: {
//SEG299 [148] call print_str //SEG299 [148] call print_str
//SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG301 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -5460,7 +5470,7 @@ test_8s: {
//SEG310 [152] call print_str //SEG310 [152] call print_str
//SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG312 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -5502,9 +5512,6 @@ test_8s: {
breturn: breturn:
//SEG328 [159] return //SEG328 [159] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
divisors: .byte 5, 7, -$b, -$d, $11, $13 divisors: .byte 5, 7, -$b, -$d, $11, $13
} }
@ -5943,7 +5950,7 @@ test_16u: {
//SEG469 [231] call print_str //SEG469 [231] call print_str
//SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG471 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -5971,7 +5978,7 @@ test_16u: {
//SEG480 [235] call print_str //SEG480 [235] call print_str
//SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG482 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -5999,7 +6006,7 @@ test_16u: {
//SEG491 [239] call print_str //SEG491 [239] call print_str
//SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG493 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -6046,9 +6053,6 @@ test_16u: {
breturn: breturn:
//SEG509 [246] return //SEG509 [246] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
divisors: .word 5, 7, $b, $d, $11, $13 divisors: .word 5, 7, $b, $d, $11, $13
} }
@ -6173,7 +6177,7 @@ test_8u: {
//SEG547 [265] call print_str //SEG547 [265] call print_str
//SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG549 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -6199,7 +6203,7 @@ test_8u: {
//SEG558 [269] call print_str //SEG558 [269] call print_str
//SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG560 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -6225,7 +6229,7 @@ test_8u: {
//SEG569 [273] call print_str //SEG569 [273] call print_str
//SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG571 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -6280,9 +6284,6 @@ test_8u: {
//SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy
//SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy
jmp b1 jmp b1
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
divisors: .byte 5, 7, $b, $d, $11, $13 divisors: .byte 5, 7, $b, $d, $11, $13
} }
@ -6327,6 +6328,9 @@ print_cls: {
rts rts
} }
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
str: .text " / @"
str2: .text " @"
str1: .text " = @"
REGISTER UPLIFT POTENTIAL REGISTERS REGISTER UPLIFT POTENTIAL REGISTERS
Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a Statement [17] (signed word) test_16s::dividend#0 ← *((const signed word[]) test_16s::dividends#0 + (byte) test_16s::i#10) [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ( main:2::test_16s:13 [ test_16s::i#10 test_16s::dividend#0 print_line_cursor#1 ] ) always clobbers reg byte a
@ -6893,7 +6897,7 @@ test_16s: {
//SEG53 [28] call print_str //SEG53 [28] call print_str
//SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG55 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -6921,7 +6925,7 @@ test_16s: {
//SEG64 [32] call print_str //SEG64 [32] call print_str
//SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG66 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -6949,7 +6953,7 @@ test_16s: {
//SEG75 [36] call print_str //SEG75 [36] call print_str
//SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG77 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -6996,9 +7000,6 @@ test_16s: {
breturn: breturn:
//SEG93 [43] return //SEG93 [43] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
divisors: .word 5, -7, $b, -$d, -$11, $13 divisors: .word 5, -7, $b, -$d, -$11, $13
} }
@ -7578,7 +7579,7 @@ test_8s: {
//SEG288 [144] call print_str //SEG288 [144] call print_str
//SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG290 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -7604,7 +7605,7 @@ test_8s: {
//SEG299 [148] call print_str //SEG299 [148] call print_str
//SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG301 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -7630,7 +7631,7 @@ test_8s: {
//SEG310 [152] call print_str //SEG310 [152] call print_str
//SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG312 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -7671,9 +7672,6 @@ test_8s: {
breturn: breturn:
//SEG328 [159] return //SEG328 [159] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
divisors: .byte 5, 7, -$b, -$d, $11, $13 divisors: .byte 5, 7, -$b, -$d, $11, $13
} }
@ -8043,7 +8041,7 @@ test_16u: {
//SEG469 [231] call print_str //SEG469 [231] call print_str
//SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG471 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -8071,7 +8069,7 @@ test_16u: {
//SEG480 [235] call print_str //SEG480 [235] call print_str
//SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG482 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -8099,7 +8097,7 @@ test_16u: {
//SEG491 [239] call print_str //SEG491 [239] call print_str
//SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG493 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -8146,9 +8144,6 @@ test_16u: {
breturn: breturn:
//SEG509 [246] return //SEG509 [246] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
divisors: .word 5, 7, $b, $d, $11, $13 divisors: .word 5, 7, $b, $d, $11, $13
} }
@ -8253,7 +8248,7 @@ test_8u: {
//SEG547 [265] call print_str //SEG547 [265] call print_str
//SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG549 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -8279,7 +8274,7 @@ test_8u: {
//SEG558 [269] call print_str //SEG558 [269] call print_str
//SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG560 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -8305,7 +8300,7 @@ test_8u: {
//SEG569 [273] call print_str //SEG569 [273] call print_str
//SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG571 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -8359,9 +8354,6 @@ test_8u: {
//SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy
//SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy
jmp b1 jmp b1
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
divisors: .byte 5, 7, $b, $d, $11, $13 divisors: .byte 5, 7, $b, $d, $11, $13
} }
@ -8406,6 +8398,9 @@ print_cls: {
rts rts
} }
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
str: .text " / @"
str2: .text " @"
str1: .text " = @"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b32 Removing instruction jmp b32
@ -9074,6 +9069,9 @@ FINAL SYMBOL TABLE
(signed byte~) rem8s#33 reg byte x 4.0 (signed byte~) rem8s#33 reg byte x 4.0
(byte) rem8u (byte) rem8u
(byte) rem8u#17 reg byte x 0.5 (byte) rem8u#17 reg byte x 0.5
(const string) str str = (string) " / @"
(const string) str1 str1 = (string) " = @"
(const string) str2 str2 = (string) " @"
(void()) test_16s() (void()) test_16s()
(label) test_16s::@1 (label) test_16s::@1
(label) test_16s::@10 (label) test_16s::@10
@ -9099,9 +9097,6 @@ FINAL SYMBOL TABLE
(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76 (byte) test_16s::i#10 i zp ZP_BYTE:2 1.76
(signed word) test_16s::res (signed word) test_16s::res
(signed word) test_16s::res#0 res zp ZP_WORD:14 2.2 (signed word) test_16s::res#0 res zp ZP_WORD:14 2.2
(const string) test_16s::str str = (string) " / @"
(const string) test_16s::str1 str1 = (string) " = @"
(const string) test_16s::str2 str2 = (string) " @"
(void()) test_16u() (void()) test_16u()
(label) test_16u::@1 (label) test_16u::@1
(label) test_16u::@10 (label) test_16u::@10
@ -9127,9 +9122,6 @@ FINAL SYMBOL TABLE
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76 (byte) test_16u::i#10 i zp ZP_BYTE:2 1.76
(word) test_16u::res (word) test_16u::res
(word) test_16u::res#0 res zp ZP_WORD:14 2.2 (word) test_16u::res#0 res zp ZP_WORD:14 2.2
(const string) test_16u::str str = (string) " / @"
(const string) test_16u::str1 str1 = (string) " = @"
(const string) test_16u::str2 str2 = (string) " @"
(void()) test_8s() (void()) test_8s()
(label) test_8s::@1 (label) test_8s::@1
(label) test_8s::@10 (label) test_8s::@10
@ -9155,9 +9147,6 @@ FINAL SYMBOL TABLE
(byte) test_8s::i#10 i zp ZP_BYTE:2 1.76 (byte) test_8s::i#10 i zp ZP_BYTE:2 1.76
(signed byte) test_8s::res (signed byte) test_8s::res
(signed byte) test_8s::res#0 res zp ZP_BYTE:16 2.2 (signed byte) test_8s::res#0 res zp ZP_BYTE:16 2.2
(const string) test_8s::str str = (string) " / @"
(const string) test_8s::str1 str1 = (string) " = @"
(const string) test_8s::str2 str2 = (string) " @"
(void()) test_8u() (void()) test_8u()
(label) test_8u::@1 (label) test_8u::@1
(label) test_8u::@10 (label) test_8u::@10
@ -9185,9 +9174,6 @@ FINAL SYMBOL TABLE
(byte) test_8u::rem (byte) test_8u::rem
(byte) test_8u::res (byte) test_8u::res
(byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446 (byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446
(const string) test_8u::str str = (string) " / @"
(const string) test_8u::str1 str1 = (string) " = @"
(const string) test_8u::str2 str2 = (string) " @"
zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ]
zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 print_cls::sc#2 print_cls::sc#1 ]
@ -9329,7 +9315,7 @@ test_16s: {
//SEG52 test_16s::@4 //SEG52 test_16s::@4
//SEG53 [28] call print_str //SEG53 [28] call print_str
//SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str] //SEG54 [76] phi from test_16s::@4 to print_str [phi:test_16s::@4->print_str]
//SEG55 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1 //SEG55 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16s::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -9350,7 +9336,7 @@ test_16s: {
//SEG63 test_16s::@6 //SEG63 test_16s::@6
//SEG64 [32] call print_str //SEG64 [32] call print_str
//SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str] //SEG65 [76] phi from test_16s::@6 to print_str [phi:test_16s::@6->print_str]
//SEG66 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1 //SEG66 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16s::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -9371,7 +9357,7 @@ test_16s: {
//SEG74 test_16s::@8 //SEG74 test_16s::@8
//SEG75 [36] call print_str //SEG75 [36] call print_str
//SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str] //SEG76 [76] phi from test_16s::@8 to print_str [phi:test_16s::@8->print_str]
//SEG77 [76] phi (byte*) print_str::str#15 = (const string) test_16s::str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1 //SEG77 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16s::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -9406,9 +9392,6 @@ test_16s: {
//SEG92 test_16s::@return //SEG92 test_16s::@return
//SEG93 [43] return //SEG93 [43] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff dividends: .word $7fff, $7fff, -$7fff, -$7fff, $7fff, -$7fff
divisors: .word 5, -7, $b, -$d, -$11, $13 divisors: .word 5, -7, $b, -$d, -$11, $13
} }
@ -9896,7 +9879,7 @@ test_8s: {
//SEG287 test_8s::@4 //SEG287 test_8s::@4
//SEG288 [144] call print_str //SEG288 [144] call print_str
//SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str] //SEG289 [76] phi from test_8s::@4 to print_str [phi:test_8s::@4->print_str]
//SEG290 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1 //SEG290 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8s::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -9915,7 +9898,7 @@ test_8s: {
//SEG298 test_8s::@6 //SEG298 test_8s::@6
//SEG299 [148] call print_str //SEG299 [148] call print_str
//SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str] //SEG300 [76] phi from test_8s::@6 to print_str [phi:test_8s::@6->print_str]
//SEG301 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1 //SEG301 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8s::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -9934,7 +9917,7 @@ test_8s: {
//SEG309 test_8s::@8 //SEG309 test_8s::@8
//SEG310 [152] call print_str //SEG310 [152] call print_str
//SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str] //SEG311 [76] phi from test_8s::@8 to print_str [phi:test_8s::@8->print_str]
//SEG312 [76] phi (byte*) print_str::str#15 = (const string) test_8s::str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1 //SEG312 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8s::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -9964,9 +9947,6 @@ test_8s: {
//SEG327 test_8s::@return //SEG327 test_8s::@return
//SEG328 [159] return //SEG328 [159] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f dividends: .byte $7f, -$7f, -$7f, $7f, $7f, $7f
divisors: .byte 5, 7, -$b, -$d, $11, $13 divisors: .byte 5, 7, -$b, -$d, $11, $13
} }
@ -10268,7 +10248,7 @@ test_16u: {
//SEG468 test_16u::@4 //SEG468 test_16u::@4
//SEG469 [231] call print_str //SEG469 [231] call print_str
//SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str] //SEG470 [76] phi from test_16u::@4 to print_str [phi:test_16u::@4->print_str]
//SEG471 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1 //SEG471 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_16u::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -10289,7 +10269,7 @@ test_16u: {
//SEG479 test_16u::@6 //SEG479 test_16u::@6
//SEG480 [235] call print_str //SEG480 [235] call print_str
//SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str] //SEG481 [76] phi from test_16u::@6 to print_str [phi:test_16u::@6->print_str]
//SEG482 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1 //SEG482 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_16u::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -10310,7 +10290,7 @@ test_16u: {
//SEG490 test_16u::@8 //SEG490 test_16u::@8
//SEG491 [239] call print_str //SEG491 [239] call print_str
//SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str] //SEG492 [76] phi from test_16u::@8 to print_str [phi:test_16u::@8->print_str]
//SEG493 [76] phi (byte*) print_str::str#15 = (const string) test_16u::str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1 //SEG493 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_16u::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -10345,9 +10325,6 @@ test_16u: {
//SEG508 test_16u::@return //SEG508 test_16u::@return
//SEG509 [246] return //SEG509 [246] return
rts rts
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff dividends: .word $ffff, $ffff, $ffff, $ffff, $ffff, $ffff
divisors: .word 5, 7, $b, $d, $11, $13 divisors: .word 5, 7, $b, $d, $11, $13
} }
@ -10435,7 +10412,7 @@ test_8u: {
//SEG546 test_8u::@4 //SEG546 test_8u::@4
//SEG547 [265] call print_str //SEG547 [265] call print_str
//SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str] //SEG548 [76] phi from test_8u::@4 to print_str [phi:test_8u::@4->print_str]
//SEG549 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1 //SEG549 [76] phi (byte*) print_str::str#15 = (const string) str [phi:test_8u::@4->print_str#0] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -10454,7 +10431,7 @@ test_8u: {
//SEG557 test_8u::@6 //SEG557 test_8u::@6
//SEG558 [269] call print_str //SEG558 [269] call print_str
//SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str] //SEG559 [76] phi from test_8u::@6 to print_str [phi:test_8u::@6->print_str]
//SEG560 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1 //SEG560 [76] phi (byte*) print_str::str#15 = (const string) str1 [phi:test_8u::@6->print_str#0] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -10473,7 +10450,7 @@ test_8u: {
//SEG568 test_8u::@8 //SEG568 test_8u::@8
//SEG569 [273] call print_str //SEG569 [273] call print_str
//SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str] //SEG570 [76] phi from test_8u::@8 to print_str [phi:test_8u::@8->print_str]
//SEG571 [76] phi (byte*) print_str::str#15 = (const string) test_8u::str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1 //SEG571 [76] phi (byte*) print_str::str#15 = (const string) str2 [phi:test_8u::@8->print_str#0] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -10515,9 +10492,6 @@ test_8u: {
//SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy //SEG592 [254] phi (byte*) print_char_cursor#138 = (byte*~) print_char_cursor#188 [phi:test_8u::@12->test_8u::@1#1] -- register_copy
//SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy //SEG593 [254] phi (byte) test_8u::i#10 = (byte) test_8u::i#1 [phi:test_8u::@12->test_8u::@1#2] -- register_copy
jmp b1 jmp b1
str: .text " / @"
str1: .text " = @"
str2: .text " @"
dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff dividends: .byte $ff, $ff, $ff, $ff, $ff, $ff
divisors: .byte 5, 7, $b, $d, $11, $13 divisors: .byte 5, 7, $b, $d, $11, $13
} }
@ -10556,4 +10530,7 @@ print_cls: {
rts rts
} }
print_hextab: .text "0123456789abcdef" print_hextab: .text "0123456789abcdef"
str: .text " / @"
str2: .text " @"
str1: .text " = @"

View File

@ -299,6 +299,9 @@
(signed byte~) rem8s#33 reg byte x 4.0 (signed byte~) rem8s#33 reg byte x 4.0
(byte) rem8u (byte) rem8u
(byte) rem8u#17 reg byte x 0.5 (byte) rem8u#17 reg byte x 0.5
(const string) str str = (string) " / @"
(const string) str1 str1 = (string) " = @"
(const string) str2 str2 = (string) " @"
(void()) test_16s() (void()) test_16s()
(label) test_16s::@1 (label) test_16s::@1
(label) test_16s::@10 (label) test_16s::@10
@ -324,9 +327,6 @@
(byte) test_16s::i#10 i zp ZP_BYTE:2 1.76 (byte) test_16s::i#10 i zp ZP_BYTE:2 1.76
(signed word) test_16s::res (signed word) test_16s::res
(signed word) test_16s::res#0 res zp ZP_WORD:14 2.2 (signed word) test_16s::res#0 res zp ZP_WORD:14 2.2
(const string) test_16s::str str = (string) " / @"
(const string) test_16s::str1 str1 = (string) " = @"
(const string) test_16s::str2 str2 = (string) " @"
(void()) test_16u() (void()) test_16u()
(label) test_16u::@1 (label) test_16u::@1
(label) test_16u::@10 (label) test_16u::@10
@ -352,9 +352,6 @@
(byte) test_16u::i#10 i zp ZP_BYTE:2 1.76 (byte) test_16u::i#10 i zp ZP_BYTE:2 1.76
(word) test_16u::res (word) test_16u::res
(word) test_16u::res#0 res zp ZP_WORD:14 2.2 (word) test_16u::res#0 res zp ZP_WORD:14 2.2
(const string) test_16u::str str = (string) " / @"
(const string) test_16u::str1 str1 = (string) " = @"
(const string) test_16u::str2 str2 = (string) " @"
(void()) test_8s() (void()) test_8s()
(label) test_8s::@1 (label) test_8s::@1
(label) test_8s::@10 (label) test_8s::@10
@ -380,9 +377,6 @@
(byte) test_8s::i#10 i zp ZP_BYTE:2 1.76 (byte) test_8s::i#10 i zp ZP_BYTE:2 1.76
(signed byte) test_8s::res (signed byte) test_8s::res
(signed byte) test_8s::res#0 res zp ZP_BYTE:16 2.2 (signed byte) test_8s::res#0 res zp ZP_BYTE:16 2.2
(const string) test_8s::str str = (string) " / @"
(const string) test_8s::str1 str1 = (string) " = @"
(const string) test_8s::str2 str2 = (string) " @"
(void()) test_8u() (void()) test_8u()
(label) test_8u::@1 (label) test_8u::@1
(label) test_8u::@10 (label) test_8u::@10
@ -410,9 +404,6 @@
(byte) test_8u::rem (byte) test_8u::rem
(byte) test_8u::res (byte) test_8u::res
(byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446 (byte) test_8u::res#0 res zp ZP_BYTE:17 2.4444444444444446
(const string) test_8u::str str = (string) " / @"
(const string) test_8u::str1 str1 = (string) " = @"
(const string) test_8u::str2 str2 = (string) " @"
zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ] zp ZP_BYTE:2 [ test_16s::i#10 test_16s::i#1 test_8s::i#10 test_8s::i#1 test_16u::i#10 test_16u::i#1 test_8u::i#10 test_8u::i#1 ]
zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 print_cls::sc#2 print_cls::sc#1 ] zp ZP_WORD:3 [ print_line_cursor#20 print_line_cursor#39 print_line_cursor#1 print_line_cursor#41 print_cls::sc#2 print_cls::sc#1 ]

View File

@ -123,7 +123,6 @@ mul16s_compare: {
jsr print_str jsr print_str
jsr print_ln jsr print_ln
jmp breturn jmp breturn
str: .text ".@"
str1: .text "signed word multiply results match!@" str1: .text "signed word multiply results match!@"
} }
// Print a newline // Print a newline
@ -230,10 +229,6 @@ mul16s_error: {
jsr print_ln jsr print_ln
rts rts
str: .text "signed word multiply mismatch @" str: .text "signed word multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
// Print a signed dword as HEX // Print a signed dword as HEX
// print_sdword(signed dword zeropage($b) dw) // print_sdword(signed dword zeropage($b) dw)
@ -880,7 +875,6 @@ mul16u_compare: {
jsr print_str jsr print_str
jsr print_ln jsr print_ln
jmp breturn jmp breturn
str: .text ".@"
str1: .text "word multiply results match!@" str1: .text "word multiply results match!@"
} }
// mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf) // mul16u_error(word zeropage(3) a, word zeropage($17) b, dword zeropage($b) ms, dword zeropage($19) mn, dword zeropage($11) mf)
@ -947,10 +941,6 @@ mul16u_error: {
jsr print_ln jsr print_ln
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
// Slow multiplication of unsigned words // Slow multiplication of unsigned words
// Calculate an unsigned multiplication by repeated addition // Calculate an unsigned multiplication by repeated addition
@ -1152,3 +1142,8 @@ print_cls: {
// >g(x) = >((( x - 255) * ( x - 255 ))/4) // >g(x) = >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mulf_sqr2_hi: .fill $200, 0 mulf_sqr2_hi: .fill $200, 0
str: .text ".@"
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"

View File

@ -125,7 +125,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
to:@return to:@return
print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8
[64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@17/(byte*~) print_char_cursor#185 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@17/(byte*~) print_char_cursor#192 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 ) [64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@17/(byte*~) print_char_cursor#185 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@17/(byte*~) print_char_cursor#192 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 )
[64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) mul16s_compare::str mul16s_compare::@17/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) mul16s_error::str1 mul16s_error::@4/(const string) mul16s_error::str2 mul16s_error::@6/(const string) mul16s_error::str3 mul16s_error::@8/(const string) mul16s_error::str4 mul16u_compare::@1/(const string) mul16u_compare::str mul16u_compare::@17/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) mul16u_error::str1 mul16u_error::@4/(const string) mul16u_error::str2 mul16u_error::@6/(const string) mul16u_error::str3 mul16u_error::@8/(const string) mul16u_error::str4 ) [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@17/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@17/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 ) [65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 )

View File

@ -3092,6 +3092,7 @@ Constant (const byte*) mulf_init::$18 = mulf_sqr1_lo#0+256
Constant (const byte*) mulf_init::$19 = mulf_sqr2_hi#0+511 Constant (const byte*) mulf_init::$19 = mulf_sqr2_hi#0+511
Constant (const byte*) mulf_init::$20 = mulf_sqr1_hi#0+256 Constant (const byte*) mulf_init::$20 = mulf_sqr1_hi#0+256
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantStringConsolidation
Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4 Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#4
Eliminating Noop Cast (word) mul16u::a#1 ← ((word)) (signed word) mul16s::a#0 Eliminating Noop Cast (word) mul16u::a#1 ← ((word)) (signed word) mul16s::a#0
Eliminating Noop Cast (word) mul16u::b#0 ← ((word)) (signed word) mul16s::b#0 Eliminating Noop Cast (word) mul16u::b#0 ← ((word)) (signed word) mul16s::b#0
@ -3196,7 +3197,11 @@ Inlining constant with var siblings (const byte) mul16s_compare::ok#1
Inlining constant with var siblings (const byte) mul16s_compare::ok#2 Inlining constant with var siblings (const byte) mul16s_compare::ok#2
Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0
Constant inlined mulf_init::sqr2_lo#0 = (const byte[512]) mulf_sqr2_lo#0 Constant inlined mulf_init::sqr2_lo#0 = (const byte[512]) mulf_sqr2_lo#0
Constant inlined mul16u_error::str1 = (const string) str1
Constant inlined mul16u_error::str3 = (const string) str3
Constant inlined mulf_init::sqr2_hi#0 = (const byte[512]) mulf_sqr2_hi#0 Constant inlined mulf_init::sqr2_hi#0 = (const byte[512]) mulf_sqr2_hi#0
Constant inlined mul16u_error::str2 = (const string) str2
Constant inlined mul16u_error::str4 = (const string) str4
Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined $0 = (const byte[]) print_hextab#0
Constant inlined muls16s::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls16s::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16u_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mul16u_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1
@ -3206,9 +3211,13 @@ Constant inlined muls16u::i#0 = (byte/signed byte/word/signed word/dword/signed
Constant inlined mul16u_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16u_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_init::$20 = (const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256 Constant inlined mulf_init::$20 = (const byte[512]) mulf_sqr1_hi#0+(word/signed word/dword/signed dword) 256
Constant inlined mul16u_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16u_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16s_error::str1 = (const string) str1
Constant inlined muls16u::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls16u::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16s_compare::a#0 = -(word/signed word/dword/signed dword) 32767 Constant inlined mul16s_compare::a#0 = -(word/signed word/dword/signed dword) 32767
Constant inlined mulf_init::x_255#0 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::x_255#0 = ((byte))-(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mul16s_error::str4 = (const string) str4
Constant inlined mul16s_error::str3 = (const string) str3
Constant inlined mul16s_error::str2 = (const string) str2
Constant inlined mulf_init::x_2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulf_init::x_2#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16u_compare::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16u_compare::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16s_compare::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16s_compare::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
@ -3218,29 +3227,30 @@ Constant inlined print_str::str#9 = (const string) mul16s_compare::str1
Constant inlined mulf_init::sqr1_hi#0 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::sqr1_hi#0 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mulf_init::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mulf_init::sqr1_lo#0 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::sqr1_lo#0 = (const byte[512]) mulf_sqr1_lo#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined print_str::str#4 = (const string) mul16u_error::str1 Constant inlined print_str::str#4 = (const string) str1
Constant inlined mulf_init::$15 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511 Constant inlined mulf_init::$15 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#3 = (const string) mul16u_error::str Constant inlined print_str::str#3 = (const string) mul16u_error::str
Constant inlined print_str::str#2 = (const string) mul16u_compare::str1 Constant inlined print_str::str#2 = (const string) mul16u_compare::str1
Constant inlined print_str::str#1 = (const string) mul16u_compare::str Constant inlined print_str::str#1 = (const string) str
Constant inlined mulf_init::$18 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256 Constant inlined mulf_init::$18 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256
Constant inlined print_str::str#8 = (const string) mul16s_compare::str Constant inlined print_str::str#8 = (const string) str
Constant inlined mulf_init::$19 = (const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511 Constant inlined mulf_init::$19 = (const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#7 = (const string) mul16u_error::str4 Constant inlined print_str::str#7 = (const string) str4
Constant inlined print_str::str#6 = (const string) mul16u_error::str3 Constant inlined print_str::str#6 = (const string) str3
Constant inlined mulf_init::$17 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511 Constant inlined mulf_init::$17 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#5 = (const string) mul16u_error::str2 Constant inlined print_str::str#5 = (const string) str2
Constant inlined mulf_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulf_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls16s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls16s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined print_str::str#13 = (const string) mul16s_error::str3 Constant inlined mul16s_compare::str = (const string) str
Constant inlined print_str::str#12 = (const string) mul16s_error::str2 Constant inlined print_str::str#13 = (const string) str3
Constant inlined print_str::str#11 = (const string) mul16s_error::str1 Constant inlined print_str::str#12 = (const string) str2
Constant inlined print_str::str#11 = (const string) str1
Constant inlined print_str::str#10 = (const string) mul16s_error::str Constant inlined print_str::str#10 = (const string) mul16s_error::str
Constant inlined muls16s::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls16s::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16s_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mul16s_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mul16s_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16s_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#14 = (const string) mul16s_error::str4 Constant inlined print_str::str#14 = (const string) str4
Constant inlined mul16s_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16s_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul16u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul16s_compare::b#0 = -(word/signed word/dword/signed dword) 32767 Constant inlined mul16s_compare::b#0 = -(word/signed word/dword/signed dword) 32767
@ -3252,6 +3262,7 @@ Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword
Constant inlined mulf_init::$8 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512 Constant inlined mulf_init::$8 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512
Constant inlined print_char::ch#1 = (byte) '-' Constant inlined print_char::ch#1 = (byte) '-'
Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined mul16u_compare::str = (const string) str
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting mul16s_compare::@20(between mul16s_compare::@10 and mul16s_compare::@1) Added new block during phi lifting mul16s_compare::@20(between mul16s_compare::@10 and mul16s_compare::@1)
Added new block during phi lifting mul16s_compare::@21(between mul16s_compare::@5 and mul16s_compare::@2) Added new block during phi lifting mul16s_compare::@21(between mul16s_compare::@5 and mul16s_compare::@2)
@ -3629,7 +3640,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
to:@return to:@return
print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8 print_str: scope:[print_str] from mul16s_compare::@1 mul16s_compare::@17 mul16s_error mul16s_error::@2 mul16s_error::@4 mul16s_error::@6 mul16s_error::@8 mul16u_compare::@1 mul16u_compare::@17 mul16u_error mul16u_error::@2 mul16u_error::@4 mul16u_error::@6 mul16u_error::@8
[64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@17/(byte*~) print_char_cursor#185 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@17/(byte*~) print_char_cursor#192 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 ) [64] (byte*) print_char_cursor#148 ← phi( mul16s_compare::@1/(byte*) print_char_cursor#143 mul16s_compare::@17/(byte*~) print_char_cursor#185 mul16s_error/(byte*) print_char_cursor#128 mul16s_error::@2/(byte*) print_char_cursor#20 mul16s_error::@4/(byte*) print_char_cursor#20 mul16s_error::@6/(byte*) print_char_cursor#20 mul16s_error::@8/(byte*) print_char_cursor#20 mul16u_compare::@1/(byte*) print_char_cursor#139 mul16u_compare::@17/(byte*~) print_char_cursor#192 mul16u_error/(byte*) print_char_cursor#128 mul16u_error::@2/(byte*) print_char_cursor#20 mul16u_error::@4/(byte*) print_char_cursor#20 mul16u_error::@6/(byte*) print_char_cursor#20 mul16u_error::@8/(byte*) print_char_cursor#20 )
[64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) mul16s_compare::str mul16s_compare::@17/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) mul16s_error::str1 mul16s_error::@4/(const string) mul16s_error::str2 mul16s_error::@6/(const string) mul16s_error::str3 mul16s_error::@8/(const string) mul16s_error::str4 mul16u_compare::@1/(const string) mul16u_compare::str mul16u_compare::@17/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) mul16u_error::str1 mul16u_error::@4/(const string) mul16u_error::str2 mul16u_error::@6/(const string) mul16u_error::str3 mul16u_error::@8/(const string) mul16u_error::str4 ) [64] (byte*) print_str::str#17 ← phi( mul16s_compare::@1/(const string) str mul16s_compare::@17/(const string) mul16s_compare::str1 mul16s_error/(const string) mul16s_error::str mul16s_error::@2/(const string) str1 mul16s_error::@4/(const string) str2 mul16s_error::@6/(const string) str3 mul16s_error::@8/(const string) str4 mul16u_compare::@1/(const string) str mul16u_compare::@17/(const string) mul16u_compare::str1 mul16u_error/(const string) mul16u_error::str mul16u_error::@2/(const string) str1 mul16u_error::@4/(const string) str2 mul16u_error::@6/(const string) str3 mul16u_error::@8/(const string) str4 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 ) [65] (byte*) print_char_cursor#128 ← phi( print_str/(byte*) print_char_cursor#148 print_str::@2/(byte*) print_char_cursor#1 )
@ -4825,7 +4836,7 @@ mul16s_compare: {
//SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy
//SEG42 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 //SEG42 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -5140,7 +5151,6 @@ mul16s_compare: {
b4_from_b22: b4_from_b22:
//SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy //SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy
jmp b4 jmp b4
str: .text ".@"
str1: .text "signed word multiply results match!@" str1: .text "signed word multiply results match!@"
} }
//SEG124 print_ln //SEG124 print_ln
@ -5258,7 +5268,7 @@ mul16s_error: {
//SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] //SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy
//SEG159 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG159 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -5286,7 +5296,7 @@ mul16s_error: {
//SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] //SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy
//SEG170 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG170 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -5318,7 +5328,7 @@ mul16s_error: {
//SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] //SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy
//SEG181 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG181 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -5350,7 +5360,7 @@ mul16s_error: {
//SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] //SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy
//SEG192 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG192 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -5390,10 +5400,6 @@ mul16s_error: {
//SEG205 [93] return //SEG205 [93] return
rts rts
str: .text "signed word multiply mismatch @" str: .text "signed word multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG206 print_sdword //SEG206 print_sdword
// Print a signed dword as HEX // Print a signed dword as HEX
@ -6373,7 +6379,7 @@ mul16u_compare: {
//SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy
//SEG436 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -6700,7 +6706,6 @@ mul16u_compare: {
b4_from_b22: b4_from_b22:
//SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy //SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy
jmp b4 jmp b4
str: .text ".@"
str1: .text "word multiply results match!@" str1: .text "word multiply results match!@"
} }
//SEG524 mul16u_error //SEG524 mul16u_error
@ -6744,7 +6749,7 @@ mul16u_error: {
//SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy
//SEG540 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -6773,7 +6778,7 @@ mul16u_error: {
//SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy
//SEG552 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -6806,7 +6811,7 @@ mul16u_error: {
//SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy
//SEG564 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -6839,7 +6844,7 @@ mul16u_error: {
//SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy
//SEG576 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -6884,10 +6889,6 @@ mul16u_error: {
//SEG590 [271] return //SEG590 [271] return
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG591 muls16u //SEG591 muls16u
// Slow multiplication of unsigned words // Slow multiplication of unsigned words
@ -7243,6 +7244,11 @@ print_cls: {
// >g(x) = >((( x - 255) * ( x - 255 ))/4) // >g(x) = >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mulf_sqr2_hi: .fill $200, 0 mulf_sqr2_hi: .fill $200, 0
str: .text ".@"
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"
REGISTER UPLIFT POTENTIAL REGISTERS REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -7887,7 +7893,7 @@ mul16s_compare: {
//SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy
//SEG42 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 //SEG42 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -8092,7 +8098,6 @@ mul16s_compare: {
b4_from_b22: b4_from_b22:
//SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy //SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy
jmp b4 jmp b4
str: .text ".@"
str1: .text "signed word multiply results match!@" str1: .text "signed word multiply results match!@"
} }
//SEG124 print_ln //SEG124 print_ln
@ -8206,7 +8211,7 @@ mul16s_error: {
//SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] //SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy
//SEG159 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG159 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -8234,7 +8239,7 @@ mul16s_error: {
//SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] //SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy
//SEG170 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG170 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -8258,7 +8263,7 @@ mul16s_error: {
//SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] //SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy
//SEG181 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG181 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -8290,7 +8295,7 @@ mul16s_error: {
//SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] //SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy
//SEG192 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG192 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -8330,10 +8335,6 @@ mul16s_error: {
//SEG205 [93] return //SEG205 [93] return
rts rts
str: .text "signed word multiply mismatch @" str: .text "signed word multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG206 print_sdword //SEG206 print_sdword
// Print a signed dword as HEX // Print a signed dword as HEX
@ -9231,7 +9232,7 @@ mul16u_compare: {
//SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str]
print_str_from_b1: print_str_from_b1:
//SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy
//SEG436 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -9456,7 +9457,6 @@ mul16u_compare: {
b4_from_b22: b4_from_b22:
//SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy //SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy
jmp b4 jmp b4
str: .text ".@"
str1: .text "word multiply results match!@" str1: .text "word multiply results match!@"
} }
//SEG524 mul16u_error //SEG524 mul16u_error
@ -9496,7 +9496,7 @@ mul16u_error: {
//SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy
//SEG540 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -9525,7 +9525,7 @@ mul16u_error: {
//SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy
//SEG552 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -9550,7 +9550,7 @@ mul16u_error: {
//SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy
//SEG564 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -9583,7 +9583,7 @@ mul16u_error: {
//SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy
//SEG576 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -9628,10 +9628,6 @@ mul16u_error: {
//SEG590 [271] return //SEG590 [271] return
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG591 muls16u //SEG591 muls16u
// Slow multiplication of unsigned words // Slow multiplication of unsigned words
@ -9970,6 +9966,11 @@ print_cls: {
// >g(x) = >((( x - 255) * ( x - 255 ))/4) // >g(x) = >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mulf_sqr2_hi: .fill $200, 0 mulf_sqr2_hi: .fill $200, 0
str: .text ".@"
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b40 Removing instruction jmp b40
@ -10384,7 +10385,7 @@ Removing unreachable instruction jmp b4
Removing unreachable instruction jmp b4 Removing unreachable instruction jmp b4
Succesful ASM optimization Pass5UnreachableCodeElimination Succesful ASM optimization Pass5UnreachableCodeElimination
Fixing long branch [110] bne b1 to beq Fixing long branch [110] bne b1 to beq
Fixing long branch [863] bne b1 to beq Fixing long branch [858] bne b1 to beq
FINAL SYMBOL TABLE FINAL SYMBOL TABLE
(label) @40 (label) @40
@ -10463,7 +10464,6 @@ FINAL SYMBOL TABLE
(byte) mul16s_compare::ok (byte) mul16s_compare::ok
(byte) mul16s_compare::ok#3 reg byte x 202.0 (byte) mul16s_compare::ok#3 reg byte x 202.0
(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664 (byte) mul16s_compare::ok#4 reg byte x 33.666666666666664
(const string) mul16s_compare::str str = (string) ".@"
(const string) mul16s_compare::str1 str1 = (string) "signed word multiply results match!@" (const string) mul16s_compare::str1 str1 = (string) "signed word multiply results match!@"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf) (void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1 (label) mul16s_error::@1
@ -10488,10 +10488,6 @@ FINAL SYMBOL TABLE
(signed dword) mul16s_error::ms (signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077 (signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
(const string) mul16s_error::str str = (string) "signed word multiply mismatch @" (const string) mul16s_error::str str = (string) "signed word multiply mismatch @"
(const string) mul16s_error::str1 str1 = (string) "*@"
(const string) mul16s_error::str2 str2 = (string) " slow:@"
(const string) mul16s_error::str3 str3 = (string) " / normal:@"
(const string) mul16s_error::str4 str4 = (string) " / fast:@"
(dword()) mul16u((word) mul16u::a , (word) mul16u::b) (dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte/word~) mul16u::$1 reg byte a 2002.0 (byte/word~) mul16u::$1 reg byte a 2002.0
(label) mul16u::@1 (label) mul16u::@1
@ -10560,7 +10556,6 @@ FINAL SYMBOL TABLE
(byte) mul16u_compare::ok (byte) mul16u_compare::ok
(byte) mul16u_compare::ok#3 reg byte x 202.0 (byte) mul16u_compare::ok#3 reg byte x 202.0
(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664 (byte) mul16u_compare::ok#4 reg byte x 33.666666666666664
(const string) mul16u_compare::str str = (string) ".@"
(const string) mul16u_compare::str1 str1 = (string) "word multiply results match!@" (const string) mul16u_compare::str1 str1 = (string) "word multiply results match!@"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf) (void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1 (label) mul16u_error::@1
@ -10585,10 +10580,6 @@ FINAL SYMBOL TABLE
(dword) mul16u_error::ms (dword) mul16u_error::ms
(dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077 (dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
(const string) mul16u_error::str str = (string) "multiply mismatch @" (const string) mul16u_error::str str = (string) "multiply mismatch @"
(const string) mul16u_error::str1 str1 = (string) "*@"
(const string) mul16u_error::str2 str2 = (string) " slow:@"
(const string) mul16u_error::str3 str3 = (string) " / normal:@"
(const string) mul16u_error::str4 str4 = (string) " / fast:@"
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0
(word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0
@ -10824,6 +10815,11 @@ FINAL SYMBOL TABLE
(word) print_word::w#3 w zp ZP_WORD:3 4.0 (word) print_word::w#3 w zp ZP_WORD:3 4.0
(word) print_word::w#4 w zp ZP_WORD:3 4.0 (word) print_word::w#4 w zp ZP_WORD:3 4.0
(word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666 (word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666
(const string) str str = (string) ".@"
(const string) str1 str1 = (string) "*@"
(const string) str2 str2 = (string) " slow:@"
(const string) str3 str3 = (string) " / normal:@"
(const string) str4 str4 = (string) " / fast:@"
zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ] zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ]
@ -10936,7 +10932,7 @@ mul16s_compare: {
//SEG39 [15] call print_str //SEG39 [15] call print_str
//SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str] //SEG40 [64] phi from mul16s_compare::@1 to print_str [phi:mul16s_compare::@1->print_str]
//SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy //SEG41 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#143 [phi:mul16s_compare::@1->print_str#0] -- register_copy
//SEG42 [64] phi (byte*) print_str::str#17 = (const string) mul16s_compare::str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1 //SEG42 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16s_compare::@1->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -11104,7 +11100,6 @@ mul16s_compare: {
//SEG121 mul16s_compare::@22 //SEG121 mul16s_compare::@22
//SEG122 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4] //SEG122 [38] phi from mul16s_compare::@22 to mul16s_compare::@4 [phi:mul16s_compare::@22->mul16s_compare::@4]
//SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy //SEG123 [38] phi (byte) mul16s_compare::ok#3 = (byte) mul16s_compare::ok#4 [phi:mul16s_compare::@22->mul16s_compare::@4#0] -- register_copy
str: .text ".@"
str1: .text "signed word multiply results match!@" str1: .text "signed word multiply results match!@"
} }
//SEG124 print_ln //SEG124 print_ln
@ -11199,7 +11194,7 @@ mul16s_error: {
//SEG156 [76] call print_str //SEG156 [76] call print_str
//SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str] //SEG157 [64] phi from mul16s_error::@2 to print_str [phi:mul16s_error::@2->print_str]
//SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy //SEG158 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@2->print_str#0] -- register_copy
//SEG159 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG159 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16s_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -11220,7 +11215,7 @@ mul16s_error: {
//SEG167 [80] call print_str //SEG167 [80] call print_str
//SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str] //SEG168 [64] phi from mul16s_error::@4 to print_str [phi:mul16s_error::@4->print_str]
//SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy //SEG169 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@4->print_str#0] -- register_copy
//SEG170 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG170 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16s_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -11237,7 +11232,7 @@ mul16s_error: {
//SEG178 [84] call print_str //SEG178 [84] call print_str
//SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str] //SEG179 [64] phi from mul16s_error::@6 to print_str [phi:mul16s_error::@6->print_str]
//SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy //SEG180 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@6->print_str#0] -- register_copy
//SEG181 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG181 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16s_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -11262,7 +11257,7 @@ mul16s_error: {
//SEG189 [88] call print_str //SEG189 [88] call print_str
//SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str] //SEG190 [64] phi from mul16s_error::@8 to print_str [phi:mul16s_error::@8->print_str]
//SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy //SEG191 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16s_error::@8->print_str#0] -- register_copy
//SEG192 [64] phi (byte*) print_str::str#17 = (const string) mul16s_error::str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG192 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16s_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -11293,10 +11288,6 @@ mul16s_error: {
//SEG205 [93] return //SEG205 [93] return
rts rts
str: .text "signed word multiply mismatch @" str: .text "signed word multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG206 print_sdword //SEG206 print_sdword
// Print a signed dword as HEX // Print a signed dword as HEX
@ -12075,7 +12066,7 @@ mul16u_compare: {
//SEG433 [205] call print_str //SEG433 [205] call print_str
//SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str] //SEG434 [64] phi from mul16u_compare::@1 to print_str [phi:mul16u_compare::@1->print_str]
//SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy //SEG435 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#139 [phi:mul16u_compare::@1->print_str#0] -- register_copy
//SEG436 [64] phi (byte*) print_str::str#17 = (const string) mul16u_compare::str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1 //SEG436 [64] phi (byte*) print_str::str#17 = (const string) str [phi:mul16u_compare::@1->print_str#1] -- pbuz1=pbuc1
lda #<str lda #<str
sta print_str.str sta print_str.str
lda #>str lda #>str
@ -12261,7 +12252,6 @@ mul16u_compare: {
//SEG521 mul16u_compare::@22 //SEG521 mul16u_compare::@22
//SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4] //SEG522 [228] phi from mul16u_compare::@22 to mul16u_compare::@4 [phi:mul16u_compare::@22->mul16u_compare::@4]
//SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy //SEG523 [228] phi (byte) mul16u_compare::ok#3 = (byte) mul16u_compare::ok#4 [phi:mul16u_compare::@22->mul16u_compare::@4#0] -- register_copy
str: .text ".@"
str1: .text "word multiply results match!@" str1: .text "word multiply results match!@"
} }
//SEG524 mul16u_error //SEG524 mul16u_error
@ -12293,7 +12283,7 @@ mul16u_error: {
//SEG537 [254] call print_str //SEG537 [254] call print_str
//SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str] //SEG538 [64] phi from mul16u_error::@2 to print_str [phi:mul16u_error::@2->print_str]
//SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy //SEG539 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@2->print_str#0] -- register_copy
//SEG540 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG540 [64] phi (byte*) print_str::str#17 = (const string) str1 [phi:mul16u_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -12315,7 +12305,7 @@ mul16u_error: {
//SEG549 [258] call print_str //SEG549 [258] call print_str
//SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str] //SEG550 [64] phi from mul16u_error::@4 to print_str [phi:mul16u_error::@4->print_str]
//SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy //SEG551 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@4->print_str#0] -- register_copy
//SEG552 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG552 [64] phi (byte*) print_str::str#17 = (const string) str2 [phi:mul16u_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -12333,7 +12323,7 @@ mul16u_error: {
//SEG561 [262] call print_str //SEG561 [262] call print_str
//SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str] //SEG562 [64] phi from mul16u_error::@6 to print_str [phi:mul16u_error::@6->print_str]
//SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy //SEG563 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@6->print_str#0] -- register_copy
//SEG564 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG564 [64] phi (byte*) print_str::str#17 = (const string) str3 [phi:mul16u_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -12359,7 +12349,7 @@ mul16u_error: {
//SEG573 [266] call print_str //SEG573 [266] call print_str
//SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str] //SEG574 [64] phi from mul16u_error::@8 to print_str [phi:mul16u_error::@8->print_str]
//SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy //SEG575 [64] phi (byte*) print_char_cursor#148 = (byte*) print_char_cursor#20 [phi:mul16u_error::@8->print_str#0] -- register_copy
//SEG576 [64] phi (byte*) print_str::str#17 = (const string) mul16u_error::str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG576 [64] phi (byte*) print_str::str#17 = (const string) str4 [phi:mul16u_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -12395,10 +12385,6 @@ mul16u_error: {
//SEG590 [271] return //SEG590 [271] return
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG591 muls16u //SEG591 muls16u
// Slow multiplication of unsigned words // Slow multiplication of unsigned words
@ -12692,4 +12678,9 @@ print_cls: {
// >g(x) = >((( x - 255) * ( x - 255 ))/4) // >g(x) = >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mulf_sqr2_hi: .fill $200, 0 mulf_sqr2_hi: .fill $200, 0
str: .text ".@"
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"

View File

@ -74,7 +74,6 @@
(byte) mul16s_compare::ok (byte) mul16s_compare::ok
(byte) mul16s_compare::ok#3 reg byte x 202.0 (byte) mul16s_compare::ok#3 reg byte x 202.0
(byte) mul16s_compare::ok#4 reg byte x 33.666666666666664 (byte) mul16s_compare::ok#4 reg byte x 33.666666666666664
(const string) mul16s_compare::str str = (string) ".@"
(const string) mul16s_compare::str1 str1 = (string) "signed word multiply results match!@" (const string) mul16s_compare::str1 str1 = (string) "signed word multiply results match!@"
(void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf) (void()) mul16s_error((signed word) mul16s_error::a , (signed word) mul16s_error::b , (signed dword) mul16s_error::ms , (signed dword) mul16s_error::mn , (signed dword) mul16s_error::mf)
(label) mul16s_error::@1 (label) mul16s_error::@1
@ -99,10 +98,6 @@
(signed dword) mul16s_error::ms (signed dword) mul16s_error::ms
(signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077 (signed dword) mul16s_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
(const string) mul16s_error::str str = (string) "signed word multiply mismatch @" (const string) mul16s_error::str str = (string) "signed word multiply mismatch @"
(const string) mul16s_error::str1 str1 = (string) "*@"
(const string) mul16s_error::str2 str2 = (string) " slow:@"
(const string) mul16s_error::str3 str3 = (string) " / normal:@"
(const string) mul16s_error::str4 str4 = (string) " / fast:@"
(dword()) mul16u((word) mul16u::a , (word) mul16u::b) (dword()) mul16u((word) mul16u::a , (word) mul16u::b)
(byte/word~) mul16u::$1 reg byte a 2002.0 (byte/word~) mul16u::$1 reg byte a 2002.0
(label) mul16u::@1 (label) mul16u::@1
@ -171,7 +166,6 @@
(byte) mul16u_compare::ok (byte) mul16u_compare::ok
(byte) mul16u_compare::ok#3 reg byte x 202.0 (byte) mul16u_compare::ok#3 reg byte x 202.0
(byte) mul16u_compare::ok#4 reg byte x 33.666666666666664 (byte) mul16u_compare::ok#4 reg byte x 33.666666666666664
(const string) mul16u_compare::str str = (string) ".@"
(const string) mul16u_compare::str1 str1 = (string) "word multiply results match!@" (const string) mul16u_compare::str1 str1 = (string) "word multiply results match!@"
(void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf) (void()) mul16u_error((word) mul16u_error::a , (word) mul16u_error::b , (dword) mul16u_error::ms , (dword) mul16u_error::mn , (dword) mul16u_error::mf)
(label) mul16u_error::@1 (label) mul16u_error::@1
@ -196,10 +190,6 @@
(dword) mul16u_error::ms (dword) mul16u_error::ms
(dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077 (dword) mul16u_error::ms#0 ms zp ZP_DWORD:11 0.3076923076923077
(const string) mul16u_error::str str = (string) "multiply mismatch @" (const string) mul16u_error::str str = (string) "multiply mismatch @"
(const string) mul16u_error::str1 str1 = (string) "*@"
(const string) mul16u_error::str2 str2 = (string) " slow:@"
(const string) mul16u_error::str3 str3 = (string) " / normal:@"
(const string) mul16u_error::str4 str4 = (string) " / fast:@"
(signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b) (signed dword()) mulf16s((signed word) mulf16s::a , (signed word) mulf16s::b)
(word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0 (word~) mulf16s::$11 $11 zp ZP_WORD:3 20.0
(word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0 (word~) mulf16s::$12 $12 zp ZP_WORD:9 4.0
@ -435,6 +425,11 @@
(word) print_word::w#3 w zp ZP_WORD:3 4.0 (word) print_word::w#3 w zp ZP_WORD:3 4.0
(word) print_word::w#4 w zp ZP_WORD:3 4.0 (word) print_word::w#4 w zp ZP_WORD:3 4.0
(word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666 (word) print_word::w#5 w zp ZP_WORD:3 4.666666666666666
(const string) str str = (string) ".@"
(const string) str1 str1 = (string) "*@"
(const string) str2 str2 = (string) " slow:@"
(const string) str3 str3 = (string) " / normal:@"
(const string) str4 str4 = (string) " / fast:@"
zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_BYTE:2 [ mul16s_compare::i#12 mul16s_compare::i#1 mul16u_compare::i#12 mul16u_compare::i#1 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ] zp ZP_WORD:3 [ mul16s_compare::a#2 mul16s_compare::a#6 mul16s_compare::a#1 muls16s::a#0 mul16s::a#0 mulf16s::a#0 mul16s_error::a#0 print_word::w#5 print_word::w#3 print_word::w#4 print_word::w#1 print_word::w#2 print_word::w#11 print_sword::w#4 print_sword::w#3 print_sword::w#1 print_sword::w#2 print_sword::w#0 mul16u_error::a#0 muls16u::i#2 muls16u::i#1 mulf_init::sqr1_lo#2 mulf_init::sqr1_lo#1 mulf_init::sqr2_lo#2 mulf_init::sqr2_lo#1 print_cls::sc#2 print_cls::sc#1 mulf16s::$5 mulf16s::$11 mul16s::$5 mul16s::$11 ]

View File

@ -183,10 +183,6 @@ mul8s_error: {
jsr print_ln jsr print_ln
rts rts
str: .text "signed multiply mismatch @" str: .text "signed multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
// Print a signed word as HEX // Print a signed word as HEX
// print_sword(signed word zeropage(8) w) // print_sword(signed word zeropage(8) w)
@ -588,10 +584,6 @@ mul8u_error: {
jsr print_ln jsr print_ln
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
// Fast multiply two unsigned bytes to a word result // Fast multiply two unsigned bytes to a word result
// mulf8u(byte register(A) a, byte register(X) b) // mulf8u(byte register(A) a, byte register(X) b)
@ -931,3 +923,7 @@ print_cls: {
// >((( x - 255) * ( x - 255 ))/4) // >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mula_sqr2_hi: .fill $200, 0 mula_sqr2_hi: .fill $200, 0
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"

View File

@ -121,7 +121,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
to:@return to:@return
print_str: scope:[print_str] from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_str: scope:[print_str] from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7
[63] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*~) print_char_cursor#192 mul8s_error/(byte*~) print_char_cursor#193 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@11/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@5/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 ) [63] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*~) print_char_cursor#192 mul8s_error/(byte*~) print_char_cursor#193 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@11/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@5/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 )
[63] (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) mul8s_error::str1 mul8s_error::@4/(const string) mul8s_error::str2 mul8s_error::@6/(const string) mul8s_error::str3 mul8s_error::@8/(const string) mul8s_error::str4 mul8u_compare::@11/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) mul8u_error::str1 mul8u_error::@4/(const string) mul8u_error::str2 mul8u_error::@6/(const string) mul8u_error::str3 mul8u_error::@8/(const string) mul8u_error::str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@5/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@7/(const string) mulf_tables_cmp::str1 ) [63] (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) str1 mul8s_error::@4/(const string) str2 mul8s_error::@6/(const string) str3 mul8s_error::@8/(const string) str4 mul8u_compare::@11/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) str1 mul8u_error::@4/(const string) str2 mul8u_error::@6/(const string) str3 mul8u_error::@8/(const string) str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@5/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@7/(const string) mulf_tables_cmp::str1 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[64] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 ) [64] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 )

View File

@ -3235,6 +3235,7 @@ Constant (const byte*) mulf_tables_cmp::asm_sqr#0 = mula_sqr1_lo#0
Constant (const byte*) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo#0 Constant (const byte*) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo#0
Constant (const byte*) mulf_tables_cmp::$9 = mulf_sqr1_lo#0+mulf_tables_cmp::$8 Constant (const byte*) mulf_tables_cmp::$9 = mulf_sqr1_lo#0+mulf_tables_cmp::$8
Successful SSA optimization Pass2ConstantIdentification Successful SSA optimization Pass2ConstantIdentification
Successful SSA optimization Pass2ConstantStringConsolidation
Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0) w= *(mulf8u_prepared::resL#0) Fixing inline constructor with mulf8u_prepared::$0 ← *(mulf8u_prepared::memB#0) w= *(mulf8u_prepared::resL#0)
Successful SSA optimization Pass2FixInlineConstructors Successful SSA optimization Pass2FixInlineConstructors
Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#5 Eliminating Noop Cast (word) print_word::w#0 ← ((word)) (signed word) print_sword::w#5
@ -3370,7 +3371,7 @@ Constant inlined mul8s_compare::ok#0 = (byte/signed byte/word/signed word/dword/
Constant inlined mul8s_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul8s_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls8s::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls8s::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls8s::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_str::str#9 = (const string) mul8u_error::str4 Constant inlined print_str::str#9 = (const string) str4
Constant inlined mul8u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul8u::res#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mulf_init::sqr1_hi#0 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::sqr1_hi#0 = (const byte[512]) mulf_sqr1_hi#0+(byte/signed byte/word/signed word/dword/signed dword) 1
Constant inlined mulf_init::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::$10 = -(byte/signed byte/word/signed word/dword/signed dword) 1
@ -3382,27 +3383,31 @@ Constant inlined print_str::str#3 = (const string) mulf_tables_cmp::str2
Constant inlined print_str::str#2 = (const string) mulf_tables_cmp::str1 Constant inlined print_str::str#2 = (const string) mulf_tables_cmp::str1
Constant inlined print_str::str#1 = (const string) mulf_tables_cmp::str Constant inlined print_str::str#1 = (const string) mulf_tables_cmp::str
Constant inlined mulf_init::$18 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256 Constant inlined mulf_init::$18 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 256
Constant inlined print_str::str#8 = (const string) mul8u_error::str3 Constant inlined print_str::str#8 = (const string) str3
Constant inlined mulf_init::$19 = (const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511 Constant inlined mulf_init::$19 = (const byte[512]) mulf_sqr2_hi#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#7 = (const string) mul8u_error::str2 Constant inlined print_str::str#7 = (const string) str2
Constant inlined print_str::str#6 = (const string) mul8u_error::str1 Constant inlined print_str::str#6 = (const string) str1
Constant inlined mulf_init::$17 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511 Constant inlined mulf_init::$17 = (const byte[512]) mulf_sqr2_lo#0+(word/signed word/dword/signed dword) 511
Constant inlined print_str::str#5 = (const string) mul8u_error::str Constant inlined print_str::str#5 = (const string) mul8u_error::str
Constant inlined mulf_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulf_init::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000
Constant inlined print_str::str#13 = (const string) mul8s_error::str2 Constant inlined print_str::str#13 = (const string) str2
Constant inlined print_str::str#12 = (const string) mul8s_error::str1 Constant inlined print_str::str#12 = (const string) str1
Constant inlined print_str::str#11 = (const string) mul8s_error::str Constant inlined print_str::str#11 = (const string) mul8s_error::str
Constant inlined print_str::str#10 = (const string) mul8s_compare::str Constant inlined print_str::str#10 = (const string) mul8s_compare::str
Constant inlined print_str::str#15 = (const string) mul8s_error::str4 Constant inlined print_str::str#15 = (const string) str4
Constant inlined print_str::str#14 = (const string) mul8s_error::str3 Constant inlined print_str::str#14 = (const string) str3
Constant inlined mul8u_compare::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul8u_compare::a#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8s_compare::a#0 = -(byte/word/signed word/dword/signed dword) 128 Constant inlined mul8s_compare::a#0 = -(byte/word/signed word/dword/signed dword) 128
Constant inlined mulf_tables_cmp::$9 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined mulf_tables_cmp::$9 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined mulf_tables_cmp::$8 = (word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined mulf_tables_cmp::$8 = (word/signed word/dword/signed dword) 512*(byte/signed byte/word/signed word/dword/signed dword) 4
Constant inlined mulf_init::sqr#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulf_init::sqr#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined muls8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls8u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8s_error::str1 = (const string) str1
Constant inlined mul8s_error::str2 = (const string) str2
Constant inlined mul8s_error::str3 = (const string) str3
Constant inlined muls8u::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined muls8u::m#0 = (byte/signed byte/word/signed word/dword/signed dword) 0
Constant inlined mul8s_error::str4 = (const string) str4
Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined print_cls::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024
Constant inlined mulf_init::$8 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512 Constant inlined mulf_init::$8 = (const byte[512]) mulf_sqr1_lo#0+(word/signed word/dword/signed dword) 512
Constant inlined print_char::ch#2 = (byte) ' ' Constant inlined print_char::ch#2 = (byte) ' '
@ -3410,6 +3415,10 @@ Constant inlined muls8s::j#0 = (byte/signed byte/word/signed word/dword/signed d
Constant inlined mulf_tables_cmp::asm_sqr#0 = (const byte[512]) mula_sqr1_lo#0 Constant inlined mulf_tables_cmp::asm_sqr#0 = (const byte[512]) mula_sqr1_lo#0
Constant inlined print_char::ch#1 = (byte) '-' Constant inlined print_char::ch#1 = (byte) '-'
Constant inlined print_char::ch#0 = (byte) '-' Constant inlined print_char::ch#0 = (byte) '-'
Constant inlined mul8u_error::str1 = (const string) str1
Constant inlined mul8u_error::str2 = (const string) str2
Constant inlined mul8u_error::str3 = (const string) str3
Constant inlined mul8u_error::str4 = (const string) str4
Successful SSA optimization Pass2ConstantInlining Successful SSA optimization Pass2ConstantInlining
Added new block during phi lifting mul8s_compare::@18(between mul8s_compare::@10 and mul8s_compare::@1) Added new block during phi lifting mul8s_compare::@18(between mul8s_compare::@10 and mul8s_compare::@1)
Added new block during phi lifting mul8s_compare::@19(between mul8s_compare::@5 and mul8s_compare::@2) Added new block during phi lifting mul8s_compare::@19(between mul8s_compare::@5 and mul8s_compare::@2)
@ -3782,7 +3791,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1
to:@return to:@return
print_str: scope:[print_str] from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7 print_str: scope:[print_str] from mul8s_compare::@11 mul8s_error mul8s_error::@2 mul8s_error::@4 mul8s_error::@6 mul8s_error::@8 mul8u_compare::@11 mul8u_error mul8u_error::@2 mul8u_error::@4 mul8u_error::@6 mul8u_error::@8 mulf_tables_cmp::@3 mulf_tables_cmp::@5 mulf_tables_cmp::@7
[63] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*~) print_char_cursor#192 mul8s_error/(byte*~) print_char_cursor#193 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@11/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@5/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 ) [63] (byte*) print_char_cursor#152 ← phi( mul8s_compare::@11/(byte*~) print_char_cursor#192 mul8s_error/(byte*~) print_char_cursor#193 mul8s_error::@2/(byte*) print_char_cursor#18 mul8s_error::@4/(byte*) print_char_cursor#18 mul8s_error::@6/(byte*) print_char_cursor#18 mul8s_error::@8/(byte*) print_char_cursor#18 mul8u_compare::@11/(byte*) print_char_cursor#31 mul8u_error/(byte*) print_char_cursor#31 mul8u_error::@2/(byte*) print_char_cursor#18 mul8u_error::@4/(byte*) print_char_cursor#18 mul8u_error::@6/(byte*) print_char_cursor#18 mul8u_error::@8/(byte*) print_char_cursor#18 mulf_tables_cmp::@3/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@5/((byte*))(word/signed word/dword/signed dword) 1024 mulf_tables_cmp::@7/(byte*) print_char_cursor#18 )
[63] (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) mul8s_error::str1 mul8s_error::@4/(const string) mul8s_error::str2 mul8s_error::@6/(const string) mul8s_error::str3 mul8s_error::@8/(const string) mul8s_error::str4 mul8u_compare::@11/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) mul8u_error::str1 mul8u_error::@4/(const string) mul8u_error::str2 mul8u_error::@6/(const string) mul8u_error::str3 mul8u_error::@8/(const string) mul8u_error::str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@5/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@7/(const string) mulf_tables_cmp::str1 ) [63] (byte*) print_str::str#18 ← phi( mul8s_compare::@11/(const string) mul8s_compare::str mul8s_error/(const string) mul8s_error::str mul8s_error::@2/(const string) str1 mul8s_error::@4/(const string) str2 mul8s_error::@6/(const string) str3 mul8s_error::@8/(const string) str4 mul8u_compare::@11/(const string) mul8u_compare::str mul8u_error/(const string) mul8u_error::str mul8u_error::@2/(const string) str1 mul8u_error::@4/(const string) str2 mul8u_error::@6/(const string) str3 mul8u_error::@8/(const string) str4 mulf_tables_cmp::@3/(const string) mulf_tables_cmp::str mulf_tables_cmp::@5/(const string) mulf_tables_cmp::str2 mulf_tables_cmp::@7/(const string) mulf_tables_cmp::str1 )
to:print_str::@1 to:print_str::@1
print_str::@1: scope:[print_str] from print_str print_str::@2 print_str::@1: scope:[print_str] from print_str print_str::@2
[64] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 ) [64] (byte*) print_char_cursor#132 ← phi( print_str/(byte*) print_char_cursor#152 print_str::@2/(byte*) print_char_cursor#1 )
@ -5386,7 +5395,7 @@ mul8s_error: {
//SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy
//SEG145 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG145 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -5412,7 +5421,7 @@ mul8s_error: {
//SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy
//SEG156 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG156 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -5440,7 +5449,7 @@ mul8s_error: {
//SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy
//SEG167 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG167 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -5468,7 +5477,7 @@ mul8s_error: {
//SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy
//SEG178 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG178 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -5504,10 +5513,6 @@ mul8s_error: {
//SEG191 [92] return //SEG191 [92] return
rts rts
str: .text "signed multiply mismatch @" str: .text "signed multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG192 print_sword //SEG192 print_sword
// Print a signed word as HEX // Print a signed word as HEX
@ -6515,7 +6520,7 @@ mul8u_error: {
//SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy
//SEG506 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG506 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -6542,7 +6547,7 @@ mul8u_error: {
//SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy
//SEG518 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG518 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -6571,7 +6576,7 @@ mul8u_error: {
//SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy
//SEG530 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG530 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -6600,7 +6605,7 @@ mul8u_error: {
//SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy
//SEG542 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG542 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -6637,10 +6642,6 @@ mul8u_error: {
//SEG556 [269] return //SEG556 [269] return
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG557 mulf8u //SEG557 mulf8u
// Fast multiply two unsigned bytes to a word result // Fast multiply two unsigned bytes to a word result
@ -7275,6 +7276,10 @@ print_cls: {
// >((( x - 255) * ( x - 255 ))/4) // >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mula_sqr2_hi: .fill $200, 0 mula_sqr2_hi: .fill $200, 0
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"
REGISTER UPLIFT POTENTIAL REGISTERS REGISTER UPLIFT POTENTIAL REGISTERS
Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [4] *((const byte*) BGCOL#0) ← (byte/signed byte/word/signed word/dword/signed dword) 5 [ ] ( main:2 [ ] ) always clobbers reg byte a
@ -8155,7 +8160,7 @@ mul8s_error: {
//SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy
//SEG145 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG145 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -8180,7 +8185,7 @@ mul8s_error: {
//SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy
//SEG156 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG156 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -8204,7 +8209,7 @@ mul8s_error: {
//SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy
//SEG167 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG167 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -8232,7 +8237,7 @@ mul8s_error: {
//SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy
//SEG178 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG178 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -8268,10 +8273,6 @@ mul8s_error: {
//SEG191 [92] return //SEG191 [92] return
rts rts
str: .text "signed multiply mismatch @" str: .text "signed multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG192 print_sword //SEG192 print_sword
// Print a signed word as HEX // Print a signed word as HEX
@ -9122,7 +9123,7 @@ mul8u_error: {
//SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
print_str_from_b2: print_str_from_b2:
//SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy
//SEG506 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG506 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -9148,7 +9149,7 @@ mul8u_error: {
//SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
print_str_from_b4: print_str_from_b4:
//SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy
//SEG518 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG518 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -9173,7 +9174,7 @@ mul8u_error: {
//SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
print_str_from_b6: print_str_from_b6:
//SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy
//SEG530 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG530 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -9202,7 +9203,7 @@ mul8u_error: {
//SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
print_str_from_b8: print_str_from_b8:
//SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy
//SEG542 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG542 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -9239,10 +9240,6 @@ mul8u_error: {
//SEG556 [269] return //SEG556 [269] return
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG557 mulf8u //SEG557 mulf8u
// Fast multiply two unsigned bytes to a word result // Fast multiply two unsigned bytes to a word result
@ -9837,6 +9834,10 @@ print_cls: {
// >((( x - 255) * ( x - 255 ))/4) // >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mula_sqr2_hi: .fill $200, 0 mula_sqr2_hi: .fill $200, 0
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"
ASSEMBLER OPTIMIZATIONS ASSEMBLER OPTIMIZATIONS
Removing instruction jmp b42 Removing instruction jmp b42
@ -10388,10 +10389,6 @@ FINAL SYMBOL TABLE
(signed word) mul8s_error::ms (signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077 (signed word) mul8s_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(const string) mul8s_error::str str = (string) "signed multiply mismatch @" (const string) mul8s_error::str str = (string) "signed multiply mismatch @"
(const string) mul8s_error::str1 str1 = (string) "*@"
(const string) mul8s_error::str2 str2 = (string) " slow:@"
(const string) mul8s_error::str3 str3 = (string) " / normal:@"
(const string) mul8s_error::str4 str4 = (string) " / fast:@"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) (word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0 (byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1 (label) mul8u::@1
@ -10475,10 +10472,6 @@ FINAL SYMBOL TABLE
(word) mul8u_error::ms (word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077 (word) mul8u_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(const string) mul8u_error::str str = (string) "multiply mismatch @" (const string) mul8u_error::str str = (string) "multiply mismatch @"
(const string) mul8u_error::str1 str1 = (string) "*@"
(const string) mul8u_error::str2 str2 = (string) " slow:@"
(const string) mul8u_error::str3 str3 = (string) " / normal:@"
(const string) mul8u_error::str4 str4 = (string) " / fast:@"
(byte[512]) mula_sqr1_hi (byte[512]) mula_sqr1_hi
(const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) } (const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) }
(byte[512]) mula_sqr1_lo (byte[512]) mula_sqr1_lo
@ -10765,6 +10758,10 @@ FINAL SYMBOL TABLE
(word) print_word::w#4 w zp ZP_WORD:8 4.0 (word) print_word::w#4 w zp ZP_WORD:8 4.0
(word) print_word::w#5 w zp ZP_WORD:8 4.0 (word) print_word::w#5 w zp ZP_WORD:8 4.0
(word) print_word::w#6 w zp ZP_WORD:8 5.333333333333333 (word) print_word::w#6 w zp ZP_WORD:8 5.333333333333333
(const string) str1 str1 = (string) "*@"
(const string) str2 str2 = (string) " slow:@"
(const string) str3 str3 = (string) " / normal:@"
(const string) str4 str4 = (string) " / fast:@"
zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mulf8s_prepared::b#0 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mulf8s_prepared::b#0 ]
@ -11114,7 +11111,7 @@ mul8s_error: {
//SEG142 [75] call print_str //SEG142 [75] call print_str
//SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str] //SEG143 [63] phi from mul8s_error::@2 to print_str [phi:mul8s_error::@2->print_str]
//SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy //SEG144 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@2->print_str#0] -- register_copy
//SEG145 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG145 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8s_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -11132,7 +11129,7 @@ mul8s_error: {
//SEG153 [79] call print_str //SEG153 [79] call print_str
//SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str] //SEG154 [63] phi from mul8s_error::@4 to print_str [phi:mul8s_error::@4->print_str]
//SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy //SEG155 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@4->print_str#0] -- register_copy
//SEG156 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG156 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8s_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -11149,7 +11146,7 @@ mul8s_error: {
//SEG164 [83] call print_str //SEG164 [83] call print_str
//SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str] //SEG165 [63] phi from mul8s_error::@6 to print_str [phi:mul8s_error::@6->print_str]
//SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy //SEG166 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@6->print_str#0] -- register_copy
//SEG167 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG167 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8s_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -11170,7 +11167,7 @@ mul8s_error: {
//SEG175 [87] call print_str //SEG175 [87] call print_str
//SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str] //SEG176 [63] phi from mul8s_error::@8 to print_str [phi:mul8s_error::@8->print_str]
//SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy //SEG177 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8s_error::@8->print_str#0] -- register_copy
//SEG178 [63] phi (byte*) print_str::str#18 = (const string) mul8s_error::str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG178 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8s_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -11197,10 +11194,6 @@ mul8s_error: {
//SEG191 [92] return //SEG191 [92] return
rts rts
str: .text "signed multiply mismatch @" str: .text "signed multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG192 print_sword //SEG192 print_sword
// Print a signed word as HEX // Print a signed word as HEX
@ -11880,7 +11873,7 @@ mul8u_error: {
//SEG503 [252] call print_str //SEG503 [252] call print_str
//SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str] //SEG504 [63] phi from mul8u_error::@2 to print_str [phi:mul8u_error::@2->print_str]
//SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy //SEG505 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@2->print_str#0] -- register_copy
//SEG506 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1 //SEG506 [63] phi (byte*) print_str::str#18 = (const string) str1 [phi:mul8u_error::@2->print_str#1] -- pbuz1=pbuc1
lda #<str1 lda #<str1
sta print_str.str sta print_str.str
lda #>str1 lda #>str1
@ -11899,7 +11892,7 @@ mul8u_error: {
//SEG515 [256] call print_str //SEG515 [256] call print_str
//SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str] //SEG516 [63] phi from mul8u_error::@4 to print_str [phi:mul8u_error::@4->print_str]
//SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy //SEG517 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@4->print_str#0] -- register_copy
//SEG518 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1 //SEG518 [63] phi (byte*) print_str::str#18 = (const string) str2 [phi:mul8u_error::@4->print_str#1] -- pbuz1=pbuc1
lda #<str2 lda #<str2
sta print_str.str sta print_str.str
lda #>str2 lda #>str2
@ -11917,7 +11910,7 @@ mul8u_error: {
//SEG527 [260] call print_str //SEG527 [260] call print_str
//SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str] //SEG528 [63] phi from mul8u_error::@6 to print_str [phi:mul8u_error::@6->print_str]
//SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy //SEG529 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@6->print_str#0] -- register_copy
//SEG530 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1 //SEG530 [63] phi (byte*) print_str::str#18 = (const string) str3 [phi:mul8u_error::@6->print_str#1] -- pbuz1=pbuc1
lda #<str3 lda #<str3
sta print_str.str sta print_str.str
lda #>str3 lda #>str3
@ -11939,7 +11932,7 @@ mul8u_error: {
//SEG539 [264] call print_str //SEG539 [264] call print_str
//SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str] //SEG540 [63] phi from mul8u_error::@8 to print_str [phi:mul8u_error::@8->print_str]
//SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy //SEG541 [63] phi (byte*) print_char_cursor#152 = (byte*) print_char_cursor#18 [phi:mul8u_error::@8->print_str#0] -- register_copy
//SEG542 [63] phi (byte*) print_str::str#18 = (const string) mul8u_error::str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1 //SEG542 [63] phi (byte*) print_str::str#18 = (const string) str4 [phi:mul8u_error::@8->print_str#1] -- pbuz1=pbuc1
lda #<str4 lda #<str4
sta print_str.str sta print_str.str
lda #>str4 lda #>str4
@ -11967,10 +11960,6 @@ mul8u_error: {
//SEG556 [269] return //SEG556 [269] return
rts rts
str: .text "multiply mismatch @" str: .text "multiply mismatch @"
str1: .text "*@"
str2: .text " slow:@"
str3: .text " / normal:@"
str4: .text " / fast:@"
} }
//SEG557 mulf8u //SEG557 mulf8u
// Fast multiply two unsigned bytes to a word result // Fast multiply two unsigned bytes to a word result
@ -12483,4 +12472,8 @@ print_cls: {
// >((( x - 255) * ( x - 255 ))/4) // >((( x - 255) * ( x - 255 ))/4)
.align $100 .align $100
mula_sqr2_hi: .fill $200, 0 mula_sqr2_hi: .fill $200, 0
str4: .text " / fast:@"
str3: .text " / normal:@"
str1: .text "*@"
str2: .text " slow:@"

View File

@ -90,10 +90,6 @@
(signed word) mul8s_error::ms (signed word) mul8s_error::ms
(signed word) mul8s_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077 (signed word) mul8s_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(const string) mul8s_error::str str = (string) "signed multiply mismatch @" (const string) mul8s_error::str str = (string) "signed multiply mismatch @"
(const string) mul8s_error::str1 str1 = (string) "*@"
(const string) mul8s_error::str2 str2 = (string) " slow:@"
(const string) mul8s_error::str3 str3 = (string) " / normal:@"
(const string) mul8s_error::str4 str4 = (string) " / fast:@"
(word()) mul8u((byte) mul8u::a , (byte) mul8u::b) (word()) mul8u((byte) mul8u::a , (byte) mul8u::b)
(byte~) mul8u::$1 reg byte a 2002.0 (byte~) mul8u::$1 reg byte a 2002.0
(label) mul8u::@1 (label) mul8u::@1
@ -177,10 +173,6 @@
(word) mul8u_error::ms (word) mul8u_error::ms
(word) mul8u_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077 (word) mul8u_error::ms#0 ms zp ZP_WORD:8 0.3076923076923077
(const string) mul8u_error::str str = (string) "multiply mismatch @" (const string) mul8u_error::str str = (string) "multiply mismatch @"
(const string) mul8u_error::str1 str1 = (string) "*@"
(const string) mul8u_error::str2 str2 = (string) " slow:@"
(const string) mul8u_error::str3 str3 = (string) " / normal:@"
(const string) mul8u_error::str4 str4 = (string) " / fast:@"
(byte[512]) mula_sqr1_hi (byte[512]) mula_sqr1_hi
(const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) } (const byte[512]) mula_sqr1_hi#0 mula_sqr1_hi = { fill( 512, 0) }
(byte[512]) mula_sqr1_lo (byte[512]) mula_sqr1_lo
@ -467,6 +459,10 @@
(word) print_word::w#4 w zp ZP_WORD:8 4.0 (word) print_word::w#4 w zp ZP_WORD:8 4.0
(word) print_word::w#5 w zp ZP_WORD:8 4.0 (word) print_word::w#5 w zp ZP_WORD:8 4.0
(word) print_word::w#6 w zp ZP_WORD:8 5.333333333333333 (word) print_word::w#6 w zp ZP_WORD:8 5.333333333333333
(const string) str1 str1 = (string) "*@"
(const string) str2 str2 = (string) " slow:@"
(const string) str3 str3 = (string) " / normal:@"
(const string) str4 str4 = (string) " / fast:@"
zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ] zp ZP_BYTE:2 [ mul8s_compare::a#7 mul8s_compare::a#1 muls8s::a#0 mul8s::a#0 mul8u_compare::a#7 mul8u_compare::a#1 muls8u::a#0 mulf_init::x_2#3 mulf_init::x_2#2 mulf_init::x_2#1 mulf_init::dir#2 mulf_init::dir#3 ]
zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mulf8s_prepared::b#0 ] zp ZP_BYTE:3 [ mul8s_compare::b#10 mul8s_compare::b#1 mul8s_error::b#0 mul8u_compare::b#10 mul8u_compare::b#1 mul8u_error::b#0 mulf8s_prepared::b#0 ]