diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index b9ca38731..67f7cb47d 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -120,7 +120,6 @@ public class Compiler { new Pass1FixLValuesLoHi(program).execute(); new Pass1AssertNoLValueIntermediate(program).execute(); new Pass1AddTypePromotions(program).execute(); - new Pass1AssertArrayLengths(program).execute(); new Pass1AssertNoRecursion(program).execute(); getLog().append("INITIAL CONTROL FLOW GRAPH"); @@ -241,6 +240,7 @@ public class Compiler { private void pass3Analysis() { new Pass3AssertRValues(program).check(); + new Pass3AssertArrayLengths(program).check(); new Pass3AssertNoMulDivMod(program).check(); new Pass3BlockSequencePlanner(program).plan(); // Phi lifting ensures that all variables in phi-blocks are in different live range equivalence classes diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmDataFill.java b/src/main/java/dk/camelot64/kickc/asm/AsmDataFill.java index 85b980c72..ffc4b0291 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmDataFill.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmDataFill.java @@ -1,20 +1,20 @@ package dk.camelot64.kickc.asm; -import dk.camelot64.kickc.fragment.AsmFormat; - /** A labelled numeric data directive. */ public class AsmDataFill implements AsmLine { private String label; private AsmDataNumeric.Type type; + private String sizeAsm; private int size; private String fillValue; private int index; - public AsmDataFill(String label, AsmDataNumeric.Type type, int size, String fillValue) { + public AsmDataFill(String label, AsmDataNumeric.Type type, String sizeAsm, int size, String fillValue) { this.label = label; this.type = type; + this.sizeAsm = sizeAsm; this.size = size; this.fillValue = fillValue; } @@ -38,7 +38,7 @@ public class AsmDataFill implements AsmLine { StringBuilder asm = new StringBuilder(); asm.append(label + ": "); asm.append(".fill "); - asm.append(AsmFormat.getAsmNumber(size * type.bytes)); + asm.append(sizeAsm); asm.append(", "); asm.append(fillValue); return asm.toString(); diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java b/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java index 781825824..88afd8253 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java @@ -108,8 +108,8 @@ public class AsmProgram { * @param type The type of the data * @param size The size of data to fill */ - public void addDataFilled(String label, AsmDataNumeric.Type type, int size, String fillValue) { - addLine(new AsmDataFill(label, type, size, fillValue)); + public void addDataFilled(String label, AsmDataNumeric.Type type, String sizeAsm, int size, String fillValue) { + addLine(new AsmDataFill(label, type, sizeAsm, size, fillValue)); } /** diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1_neq_vwuc1_then_la1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1_neq_vwuc1_then_la1.asm new file mode 100644 index 000000000..7c4f49271 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/vwsz1_neq_vwuc1_then_la1.asm @@ -0,0 +1,6 @@ +lda {z1}+1 +cmp #>{c1} +bne {la1} +lda {z1} +cmp #<{c1} +bne {la1} \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java index 4efab35c1..738b40754 100644 --- a/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java @@ -1,16 +1,16 @@ package dk.camelot64.kickc.model.types; +import dk.camelot64.kickc.model.values.RValue; + /** * A fixed size array of another type */ public class SymbolTypeArray extends SymbolTypePointer { - /** - * The fixed size of the array. Can by null, if the type is not known yet. (It will be constant before the compilation is done) - */ - private Integer size; + /** The fixed size of the array. Can be null, if the size is not bound. (It will be constant before the compilation is done) */ + private RValue size; - public SymbolTypeArray(SymbolType elementType, Integer size) { + public SymbolTypeArray(SymbolType elementType, RValue size) { super(elementType); this.size = size; } @@ -20,11 +20,11 @@ public class SymbolTypeArray extends SymbolTypePointer { this.size = null; } - public Integer getSize() { + public RValue getSize() { return size; } - public void setSize(Integer size) { + public void setSize(RValue size) { this.size = size; } @@ -32,9 +32,9 @@ public class SymbolTypeArray extends SymbolTypePointer { public String getTypeName() { SymbolType elementType = getElementType(); if(elementType instanceof SymbolTypeMulti) { - return "(" + elementType.getTypeName() + ")" + "[" + (size == null ? "" : size) + "]"; + return "(" + elementType.getTypeName() + ")" + "[" + (size == null ? "" : size.toString()) + "]"; } else { - return elementType.getTypeName() + "[" + (size == null ? "" : size) + "]"; + return elementType.getTypeName() + "[" + (size == null ? "" : size.toString()) + "]"; } } @@ -43,9 +43,7 @@ public class SymbolTypeArray extends SymbolTypePointer { if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; if(!super.equals(o)) return false; - SymbolTypeArray that = (SymbolTypeArray) o; - return size != null ? size.equals(that.size) : that.size == null; } @@ -60,4 +58,5 @@ public class SymbolTypeArray extends SymbolTypePointer { public String toString() { return getTypeName(); } + } diff --git a/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java index cf66513d4..640eaf12a 100644 --- a/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java @@ -172,6 +172,8 @@ public class SymbolTypeInference { } } else if(rValue instanceof ConstantArrayList) { return new SymbolTypeArray(((ConstantArrayList) rValue).getElementType()); + } else if(rValue instanceof ArrayFilled) { + return new SymbolTypeArray(((ArrayFilled) rValue).getElementType(), ((ArrayFilled) rValue).getSize()); } else if(rValue instanceof ConstantArrayFilled) { return new SymbolTypeArray(((ConstantArrayFilled) rValue).getElementType(), ((ConstantArrayFilled) rValue).getSize()); } else if(rValue instanceof ConstantVarPointer) { diff --git a/src/main/java/dk/camelot64/kickc/model/values/ArrayFilled.java b/src/main/java/dk/camelot64/kickc/model/values/ArrayFilled.java new file mode 100644 index 000000000..1288368a2 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/values/ArrayFilled.java @@ -0,0 +1,47 @@ +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.types.SymbolType; + +/** + * An zero-filled array. The size of the array is currently non-constant, but must be resolved to a constant before pass 3. + * The array is allocated in the code memory (as a .fill() ). + */ +public class ArrayFilled implements RValue { + + private RValue size; + + private SymbolType elementType; + + public ArrayFilled(SymbolType elementType, RValue size) { + this.size = size; + this.elementType = elementType; + } + + public SymbolType getElementType() { + return elementType; + } + + public RValue getSize() { + return size; + } + + public void setSize(RValue size) { + this.size = size; + } + + @Override + public String toString() { + return toString(null); + } + + @Override + public String toString(Program program) { + StringBuilder out = new StringBuilder(); + out.append("{ fill( "); + out.append(size.toString()); + out.append(", 0) }"); + return out.toString(); + } + +} diff --git a/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java index 482b69f12..db9d30a30 100644 --- a/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java @@ -10,11 +10,11 @@ import dk.camelot64.kickc.model.types.SymbolTypeArray; */ public class ConstantArrayFilled implements ConstantValue { - private int size; + private ConstantValue size; private SymbolType elementType; - public ConstantArrayFilled(SymbolType elementType, int size) { + public ConstantArrayFilled(SymbolType elementType, ConstantValue size) { this.size = size; this.elementType = elementType; } @@ -28,10 +28,14 @@ public class ConstantArrayFilled implements ConstantValue { return elementType; } - public int getSize() { + public ConstantValue getSize() { return size; } + public void setSize(ConstantValue size) { + this.size = size; + } + @Override public ConstantLiteral calculateLiteral(ProgramScope scope) { throw new ConstantNotLiteral("Cannot calculate literal array"); @@ -46,7 +50,7 @@ public class ConstantArrayFilled implements ConstantValue { public String toString(Program program) { StringBuilder out = new StringBuilder(); out.append("{ fill( "); - out.append(size); + out.append(size.toString()); out.append(", 0) }"); return out.toString(); } diff --git a/src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java index ed5dbea22..f0e3a2df8 100644 --- a/src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java @@ -32,7 +32,7 @@ public class ConstantVarPointer implements ConstantValue { @Override public ConstantLiteral calculateLiteral(ProgramScope scope) { - throw new CompileError("Cannot calculate literal var pointer"); + throw new ConstantNotLiteral("Cannot calculate literal var pointer"); } @Override diff --git a/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java b/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java index 8b6eb274a..05c2e3d8b 100644 --- a/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java +++ b/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java @@ -51,6 +51,12 @@ public class AliasReplacer implements ValueReplacer.Replacer { if(alias != null) { return new ConstantCastValue(constantCastValue.getToType(), alias); } + } else if(rValue instanceof ConstantArrayFilled) { + ConstantArrayFilled arrayFilled = (ConstantArrayFilled) rValue; + ConstantValue alias = (ConstantValue) getReplacement(arrayFilled.getSize(), aliases); + if(alias != null) { + return new ConstantArrayFilled(arrayFilled.getElementType(), alias); + } } else if(rValue instanceof ConstantBinary) { ConstantBinary constantBinary = (ConstantBinary) rValue; ConstantValue aliasLeft = (ConstantValue) getReplacement(constantBinary.getLeft(), aliases); diff --git a/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java b/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java deleted file mode 100644 index b6cc427ae..000000000 --- a/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java +++ /dev/null @@ -1,188 +0,0 @@ -package dk.camelot64.kickc.passes; - -import dk.camelot64.kickc.NumberParser; -import dk.camelot64.kickc.model.operators.Operator; -import dk.camelot64.kickc.model.operators.Operators; -import dk.camelot64.kickc.model.values.*; -import dk.camelot64.kickc.parser.KickCBaseVisitor; -import dk.camelot64.kickc.parser.KickCParser; -import org.antlr.v4.runtime.tree.TerminalNode; - -/** Capable of evaluating constants directly on the parse tree. */ -public class ParseTreeConstantEvaluator extends KickCBaseVisitor { - - /** - * Attempt to evaluate a constant expression. - * - * @param expr The expression to evaluate - * @return The constant value of the expression. null if the expression is not constant. - */ - public static ConstantValue evaluate(KickCParser.ExprContext expr) { - return (new ParseTreeConstantEvaluator()).visit(expr); - } - - static ConstantValue calculateBinary(Operator operator, ConstantValue c1, ConstantValue c2) { - switch(operator.getOperator()) { - case "-": { - if(c1 instanceof ConstantInteger && c2 instanceof ConstantInteger) { - return new ConstantInteger(getInteger(c1) - getInteger(c2)); - } else { - return new ConstantDouble(getDouble(c1) - getDouble(c2)); - } - } - case "+": { - if(c1 instanceof ConstantInteger && c2 instanceof ConstantInteger) { - return new ConstantInteger(getInteger(c1) + getInteger(c2)); - } else { - return new ConstantDouble(getDouble(c1) + getDouble(c2)); - } - } - case "*": { - if(c1 instanceof ConstantInteger && c2 instanceof ConstantInteger) { - return new ConstantInteger(getInteger(c1) * getInteger(c2)); - } else { - return new ConstantDouble(getDouble(c1) * getDouble(c2)); - } - } - case "/": { - if(c1 instanceof ConstantInteger && c2 instanceof ConstantInteger) { - return new ConstantInteger(getInteger(c1) / getInteger(c2)); - } else { - return new ConstantDouble(getDouble(c1) / getDouble(c2)); - } - } - case "*idx": { - // Cannot be directly propagated - return null; - } - default: - throw new RuntimeException("Unhandled Binary Operator " + operator.getOperator()); - } - } - - private static Long getInteger(ConstantValue constant) { - if(constant instanceof ConstantInteger) { - return ((ConstantInteger) constant).getValue(); - } else { - throw new RuntimeException("Type Mismatch. Constant is not an integer number " + constant); - } - } - - private static Double getDouble(ConstantValue constant) { - if(constant instanceof ConstantDouble) { - return ((ConstantDouble) constant).getValue(); - } else if(constant instanceof ConstantInteger) { - return ((ConstantInteger) constant).getValue().doubleValue(); - } else { - throw new RuntimeException("Type Mismatch. Constant is not a number " + constant); - } - } - - public static ConstantValue calculateUnary(Operator operator, ConstantValue c) { - switch(operator.getOperator()) { - case "-": { - if(c instanceof ConstantInteger) { - ConstantInteger cInt = (ConstantInteger) c; - return new ConstantInteger(-cInt.getValue()); - } else if(c instanceof ConstantDouble) { - ConstantDouble cDoub = (ConstantDouble) c; - return new ConstantDouble(-cDoub.getValue()); - } else { - throw new RuntimeException("Type mismatch. Unary Minus cannot handle value " + c); - } - } - case "+": { - return c; - } - case "++": { - ConstantInteger cInt = (ConstantInteger) c; - return new ConstantInteger(cInt.getValue() + 1); - } - case "--": { - ConstantInteger cInt = (ConstantInteger) c; - return new ConstantInteger(cInt.getValue() - 1); - } - case "*": { // pointer dereference - return null; - } - default: - throw new RuntimeException("Unhandled Unary Operator " + operator.getOperator()); - } - } - - @Override - public ConstantValue visitExprNumber(KickCParser.ExprNumberContext ctx) { - Number number = NumberParser.parseLiteral(ctx.getText()); - if(number instanceof Long) { - return new ConstantInteger((Long) number); - } else if(number instanceof Integer) { - return new ConstantInteger(number.longValue()); - } else { - return new ConstantDouble((Double) number); - } - } - - @Override - public ConstantValue visitExprString(KickCParser.ExprStringContext ctx) { - return new ConstantString(ctx.getText()); - } - - @Override - public ConstantValue visitExprBool(KickCParser.ExprBoolContext ctx) { - return new ConstantBool(Boolean.getBoolean(ctx.getText())); - } - - @Override - public ConstantValue visitExprPar(KickCParser.ExprParContext ctx) { - return visit(ctx.expr()); - } - - @Override - public ConstantValue visitExprCast(KickCParser.ExprCastContext ctx) { - return visit(ctx.expr()); - } - - @Override - public ConstantValue visitExprCall(KickCParser.ExprCallContext ctx) { - throw new NotConstantException(); - } - - @Override - public ConstantValue visitExprArray(KickCParser.ExprArrayContext ctx) { - throw new NotConstantException(); - } - - @Override - public ConstantValue visitExprId(KickCParser.ExprIdContext ctx) { - throw new NotConstantException(); - } - - @Override - public ConstantValue visitInitList(KickCParser.InitListContext ctx) { - throw new NotConstantException(); - } - - @Override - public ConstantValue visitExprUnary(KickCParser.ExprUnaryContext ctx) { - ConstantValue sub = visit(ctx.expr()); - String op = ((TerminalNode) ctx.getChild(0)).getSymbol().getText(); - Operator operator = Operators.getUnary(op); - return calculateUnary(operator, sub); - } - - @Override - public ConstantValue visitExprBinary(KickCParser.ExprBinaryContext ctx) { - ConstantValue left = this.visit(ctx.expr(0)); - ConstantValue right = this.visit(ctx.expr(1)); - String op = ((TerminalNode) ctx.getChild(1)).getSymbol().getText(); - Operator operator = Operators.getBinary(op); - return calculateBinary(operator, left, right); - } - - /** Thrown if the expression is not a constant. */ - public static class NotConstantException extends RuntimeException { - public NotConstantException() { - } - } - -} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java index 157b2c1a7..6b60eb343 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java @@ -154,7 +154,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { String kickAsmCode = m.group(1).replaceAll("\r", ""); sequence.addStatement(new StatementKickAsm(kickAsmCode, new StatementSource(ctx))); } - if(ctx.kasmParams()!=null) { + if(ctx.kasmParams() != null) { this.visitKasmParams(ctx.kasmParams()); } return null; @@ -167,7 +167,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { resourceName = resourceName.substring(1, resourceName.length() - 1); File resourceFile = Compiler.loadFile(resourceName, program); program.addAsmResourceFile(resourceFile.toPath()); - program.getLog().append("Added resource "+resourceFile.getPath().replace('\\', '/')); + program.getLog().append("Added resource " + resourceFile.getPath().replace('\\', '/')); } return null; } @@ -189,11 +189,11 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { } else if(type instanceof SymbolTypeArray) { // Add an zero-array initializer SymbolTypeArray typeArray = (SymbolTypeArray) type; - Integer size = typeArray.getSize(); - if(size == null) { - throw new CompileError("Error! Cannot determine array size. " + lValue.toString(program), new StatementSource(ctx)); + RValue size = typeArray.getSize(); + if(size==null) { + throw new CompileError("Error! Array has no declared size. " + lValue.toString(program), new StatementSource(ctx)); } - Statement stmt = new StatementAssignment(lValue.getRef(), new ConstantArrayFilled(typeArray.getElementType(), size), new StatementSource(ctx)); + Statement stmt = new StatementAssignment(lValue.getRef(), new ArrayFilled(typeArray.getElementType(), size), new StatementSource(ctx)); sequence.addStatement(stmt); } return null; @@ -309,7 +309,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { PrePostModifierHandler.addPreModifiers(this, ctx.expr()); RValue rValue = (RValue) this.visit(ctx.expr()); - if(elseStmt==null) { + if(elseStmt == null) { // If without else - skip the entire section if condition not met VariableRef notExprVar = getCurrentSymbols().addVariableIntermediate().getRef(); sequence.addStatement(new StatementAssignment(notExprVar, null, Operators.LOGIC_NOT, rValue, new StatementSource(ctx))); @@ -460,6 +460,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { /** * Get the variable of a for-loop. + * * @param forDeclCtx The variable declaration * @return The variable of the for loop */ @@ -542,12 +543,8 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { public SymbolType visitTypeArray(KickCParser.TypeArrayContext ctx) { SymbolType elementType = (SymbolType) visit(ctx.typeDecl()); if(ctx.expr() != null) { - ConstantValue size = ParseTreeConstantEvaluator.evaluate(ctx.expr()); - if(size instanceof ConstantInteger) { - return new SymbolTypeArray(elementType, ((ConstantInteger) size).getValue().intValue()); - } else { - throw new RuntimeException("Array size not a constant integer " + ctx.getText()); - } + RValue sizeVal = (RValue) visit(ctx.expr()); + return new SymbolTypeArray(elementType, sizeVal); } else { return new SymbolTypeArray(elementType); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java deleted file mode 100644 index dee963f9b..000000000 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java +++ /dev/null @@ -1,52 +0,0 @@ -package dk.camelot64.kickc.passes; - -import dk.camelot64.kickc.model.*; -import dk.camelot64.kickc.model.values.*; -import dk.camelot64.kickc.model.statements.Statement; -import dk.camelot64.kickc.model.statements.StatementAssignment; -import dk.camelot64.kickc.model.symbols.Variable; -import dk.camelot64.kickc.model.types.SymbolTypeArray; - -/** - * Asserts that all arrays with lengths and initializers have matching lengths. - */ -public class Pass1AssertArrayLengths extends Pass1Base { - - public Pass1AssertArrayLengths(Program program) { - super(program); - } - - @Override - public boolean step() { - for(ControlFlowBlock block : getGraph().getAllBlocks()) { - for(Statement statement : block.getStatements()) { - if(statement instanceof StatementAssignment) { - StatementAssignment assignment = (StatementAssignment) statement; - LValue lValue = assignment.getlValue(); - if(lValue instanceof VariableRef) { - Variable variable = getScope().getVariable((VariableRef) lValue); - if(variable.getType() instanceof SymbolTypeArray) { - Integer declaredSize = ((SymbolTypeArray) variable.getType()).getSize(); - if(declaredSize != null) { - if(assignment.getrValue1() == null && assignment.getOperator() == null) { - RValue value = assignment.getrValue2(); - if(value instanceof ValueList) { - if(((ValueList) value).getList().size() != declaredSize) { - throw new CompileError("Error! Array length mismatch " + statement.toString(getProgram(), false), statement.getSource()); - } - } else if(value instanceof ConstantString) { - if(((ConstantString) value).getValue().length() != declaredSize) { - throw new CompileError("Error! Array length mismatch " + statement.toString(getProgram(), false), statement.getSource()); - } - } - } - } - } - } - } - } - } - return false; - } - -} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java index 8e755ac8d..17c64d44a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java @@ -16,19 +16,19 @@ public class Pass2AssertSymbols extends Pass2SsaAssertion { @Override public void check() throws AssertionFailed { - SymbolFinder symbolFinder = new SymbolFinder(getSymbols()); + SymbolFinder symbolFinder = new SymbolFinder(getScope()); symbolFinder.visitGraph(getGraph()); HashSet codeSymbols = symbolFinder.getSymbols(); // Check that all symbols found in the code is also oin the symbol tabel for(Symbol codeSymbol : codeSymbols) { if(codeSymbol.getFullName().equals(SymbolRef.PROCEXIT_BLOCK_NAME)) continue; - Symbol tableSymbol = getSymbols().getSymbol(codeSymbol.getFullName()); + Symbol tableSymbol = getScope().getSymbol(codeSymbol.getFullName()); if(tableSymbol == null) { throw new AssertionFailed("Compile process error. Symbol found in code, but not in symbol table. " + codeSymbol.getFullName()); } } // Check that all symbols in the symbol table is also in the code - HashSet tableSymbols = getAllSymbols(getSymbols()); + HashSet tableSymbols = getAllSymbols(getScope()); for(Symbol tableSymbol : tableSymbols) { if(tableSymbol instanceof VariableUnversioned) continue; if(tableSymbol instanceof ConstantVar) continue; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java index 043814a85..0ce4917a3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java @@ -31,8 +31,8 @@ public class Pass2AssertTypeMatch extends Pass2SsaAssertion { private void checkAssignment(StatementAssignment statement) { LValue lValue = statement.getlValue(); - SymbolType lValueType = SymbolTypeInference.inferType(getSymbols(), lValue); - SymbolType rValueType = SymbolTypeInference.inferTypeRValue(getSymbols(), statement); + SymbolType lValueType = SymbolTypeInference.inferType(getScope(), lValue); + SymbolType rValueType = SymbolTypeInference.inferTypeRValue(getScope(), statement); if(SymbolTypeInference.typeMatch(lValueType, rValueType)) { return; } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java index 96b382c6f..e5520444d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java @@ -57,10 +57,10 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization { SymbolType constType = variableType; if(!valueType.equals(variableType)) { - if(SymbolTypeInference.typeMatch(valueType, variableType)) { - constType = valueType; - } else if(SymbolTypeInference.typeMatch(variableType, valueType)) { + if(SymbolTypeInference.typeMatch(variableType, valueType)) { constType = variableType; + } else if(SymbolTypeInference.typeMatch(valueType, variableType)) { + constType = valueType; } else { throw new CompileError( "Constant variable has a non-matching type \n variable: " + variable.toString(getProgram()) + @@ -223,6 +223,11 @@ public class Pass2ConstantIdentification extends Pass2SsaOptimization { if(castConstant !=null) { return new ConstantCastValue(castValue.getToType(), castConstant); } + } else if(rValue instanceof ArrayFilled) { + ArrayFilled arrayFilled = (ArrayFilled) rValue; + if(arrayFilled.getSize() instanceof ConstantValue) { + return new ConstantArrayFilled(arrayFilled.getElementType(), (ConstantValue) arrayFilled.getSize()); + } } return null; } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java index a669060cb..edb946cf9 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.types.SymbolTypeArray; import dk.camelot64.kickc.model.values.*; import dk.camelot64.kickc.model.symbols.ConstantVar; import dk.camelot64.kickc.model.symbols.ProgramScope; @@ -62,13 +63,25 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization { } /** - * Replace any alias within the constant defimtions inside the symbol table + * Replace any alias within the constant defintions inside the symbol table * * @param inline The replacements to make */ private void replaceInSymbolTable(Map inline) { Collection allConstants = getProgram().getScope().getAllConstants(true); for(ConstantVar constantVar : allConstants) { + + // First check if the type is an array - and replace inside the type if it is + SymbolType constantType = constantVar.getType(); + if(constantType instanceof SymbolTypeArray) { + SymbolTypeArray arrayType = (SymbolTypeArray) constantType; + RValue arraySize = arrayType.getSize(); + RValue sizeReplacement = AliasReplacer.getReplacement(arraySize, inline); + if(sizeReplacement != null) { + arrayType.setSize(sizeReplacement); + } + } + ConstantValue constantValue = constantVar.getValue(); RValue replacement = AliasReplacer.getReplacement(constantValue, inline); if(replacement != null) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2RangeResolving.java b/src/main/java/dk/camelot64/kickc/passes/Pass2RangeResolving.java index 39980ab4e..4f3f58a11 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2RangeResolving.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2RangeResolving.java @@ -83,8 +83,6 @@ public class Pass2RangeResolving extends Pass2SsaOptimization { replaceable.set(beyondLastVal); } else if(rangeValue instanceof RangeNext) { StatementAssignment assignment = (StatementAssignment) currentStmt; - - ConstantValue nextVal; if(firstInt <= lastInt) { assignment.setrValue2(assignment.getrValue1()); assignment.setrValue1(null); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java index 6b2d949cd..ad0a63eab 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java @@ -18,7 +18,7 @@ public abstract class Pass2SsaAssertion { return program.getGraph(); } - public ProgramScope getSymbols() { + public ProgramScope getScope() { return program.getScope(); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java b/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java new file mode 100644 index 000000000..868f8a1c2 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3AssertArrayLengths.java @@ -0,0 +1,74 @@ +package dk.camelot64.kickc.passes; + +import dk.camelot64.kickc.model.CompileError; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; +import dk.camelot64.kickc.model.values.*; + +import java.util.Collection; + +/** + * Asserts that all arrays with lengths and initializers have matching lengths. + */ +public class Pass3AssertArrayLengths extends Pass2SsaAssertion { + + public Pass3AssertArrayLengths(Program program) { + super(program); + } + + @Override + public void check() throws AssertionFailed { + Collection allConstants = getScope().getAllConstants(true); + for(ConstantVar constantVar : allConstants) { + SymbolType constantType = constantVar.getType(); + if(constantType instanceof SymbolTypeArray) { + RValue declaredSize = ((SymbolTypeArray) constantType).getSize(); + if(declaredSize != null) { + if(!(declaredSize instanceof ConstantValue)) { + throw new CompileError("Error! Array declared size is not constant " + constantType.toString()); + } + ConstantLiteral declaredSizeVal = ((ConstantValue) declaredSize).calculateLiteral(getScope()); + if(!(declaredSizeVal instanceof ConstantInteger)) { + throw new CompileError("Error! Array declared size is not integer " + constantType.toString()); + } + Integer declaredSizeInt = ((ConstantInteger) declaredSizeVal).getInteger().intValue(); + // A constant size was found - Check that a value with the same size is present + ConstantValue constantValue = constantVar.getValue(); + if(constantValue == null) { + throw new CompileError("Error! Array with a size not initialized " + constantVar.toString(getProgram())); + } else if(constantValue instanceof ConstantArrayFilled) { + ConstantValue assignedSize = ((ConstantArrayFilled) constantValue).getSize(); + ConstantLiteral assignedSizeVal = assignedSize.calculateLiteral(getScope()); + if(!(assignedSizeVal instanceof ConstantInteger)) { + throw new CompileError("Error! Array declared size is not integer " + constantType.toString()); + } + Integer assignedSizeInt = ((ConstantInteger) declaredSizeVal).getInteger().intValue(); + if(!assignedSizeInt.equals(declaredSizeInt)) { + throw new CompileError("Error! Array length mismatch " + constantVar.toString(getProgram())); + } + } else if(constantValue instanceof ConstantArrayList) { + Integer assignedSizeVal = ((ConstantArrayList) constantValue).getElements().size(); + if(!assignedSizeVal.equals(declaredSizeInt)) { + throw new CompileError("Error! Array length mismatch " + constantVar.toString(getProgram())); + } + } else { + ConstantLiteral constantLiteral = constantValue.calculateLiteral(getScope()); + if(constantLiteral instanceof ConstantString) { + Integer assignedSizeVal = ((ConstantString) constantLiteral).getString().length(); + if(!assignedSizeVal.equals(declaredSizeInt)) { + throw new CompileError("Error! Array length mismatch " + constantVar.toString(getProgram())); + } + } else if(constantLiteral instanceof ConstantPointer) { + // Constant Pointers are OK for sized arrays + } else { + throw new AssertionFailed("Error! Array with a size unknown initialization value " + constantVar.toString(getProgram())); + } + } + } + } + } + } + +} diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index 74db7335e..1ece100e9 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -3,6 +3,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.asm.*; import dk.camelot64.kickc.fragment.*; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.operators.Operators; import dk.camelot64.kickc.model.values.*; import dk.camelot64.kickc.model.statements.*; import dk.camelot64.kickc.model.symbols.ConstantVar; @@ -116,7 +117,8 @@ public class Pass4CodeGeneration { Collection scopeConstants = scope.getAllConstants(false); Set added = new LinkedHashSet<>(); for(ConstantVar constantVar : scopeConstants) { - if(!(constantVar.getValue() instanceof ConstantArrayList || constantVar.getValue() instanceof ConstantArrayFilled || constantVar.getType().equals(SymbolType.STRING))) { + + if(!hasData(constantVar)) { String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName(); if(asmName != null && !added.contains(asmName)) { added.add(asmName); @@ -142,6 +144,25 @@ public class Pass4CodeGeneration { } } + private boolean hasData(ConstantVar constantVar) { + ConstantValue constantValue = constantVar.getValue(); + if(constantValue instanceof ConstantArrayList) { + return true; + } else if(constantValue instanceof ConstantArrayFilled) { + return true; + } else { + try { + ConstantLiteral literal = constantValue.calculateLiteral(getScope()); + if(literal instanceof ConstantString) { + return true; + } + } catch(ConstantNotLiteral e) { + // can't calculate literal value, so it is not data + } + } + return false; + } + /** * Determines whether to use a .label instead of .const for a constant. * This can be necessary because KickAssembler does not allow constant references between scopes. @@ -247,26 +268,43 @@ public class Pass4CodeGeneration { } else if(constantVar.getValue() instanceof ConstantArrayFilled) { String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName(); ConstantArrayFilled constantArrayFilled = (ConstantArrayFilled) constantVar.getValue(); + ConstantValue arraySize = constantArrayFilled.getSize(); + ConstantLiteral arraySizeConst = arraySize.calculateLiteral(getScope()); + if(!(arraySizeConst instanceof ConstantInteger)) { + throw new Pass2SsaAssertion.AssertionFailed("Error! Array size is not constant integer " + constantVar.toString(program)); + } + Integer size = ((ConstantInteger) arraySizeConst).getInteger().intValue(); if(SymbolType.isByte(constantArrayFilled.getElementType())) { - asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, constantArrayFilled.getSize(), "0"); + String asmSize = AsmFormat.getAsmConstant(program, arraySize, 99, scopeRef); + asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmSize, size, "0"); added.add(asmName); } else if(SymbolType.isSByte(constantArrayFilled.getElementType())) { - asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, constantArrayFilled.getSize(), "0"); + String asmSize = AsmFormat.getAsmConstant(program, arraySize, 99, scopeRef); + asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.BYTE, asmSize, size, "0"); added.add(asmName); } else if(SymbolType.isWord(constantArrayFilled.getElementType())) { - asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.WORD, constantArrayFilled.getSize(), "0"); + String asmSize = AsmFormat.getAsmConstant(program, new ConstantBinary(new ConstantInteger(2L), Operators.MULTIPLY, arraySize), 99, scopeRef); + asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.WORD, asmSize, size, "0"); added.add(asmName); } else if(SymbolType.isSWord(constantArrayFilled.getElementType())) { - asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.WORD, constantArrayFilled.getSize(), "0"); + String asmSize = AsmFormat.getAsmConstant(program, new ConstantBinary(new ConstantInteger(2L), Operators.MULTIPLY, arraySize), 99, scopeRef); + asm.addDataFilled(asmName.replace("#", "_").replace("$", "_"), AsmDataNumeric.Type.WORD, asmSize, size, "0"); added.add(asmName); } else { throw new RuntimeException("Unhandled constant array element type " + constantArrayFilled.toString(program)); } - } else if(constantVar.getType().equals(SymbolType.STRING)) { - String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName(); - String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getValue(), 99, scopeRef); - asm.addDataString(asmName.replace("#", "_").replace("$", "_"), asmConstant); - added.add(asmName); + } else { + try { + ConstantLiteral literal = constantVar.getValue().calculateLiteral(getScope()); + if(literal instanceof ConstantString) { + String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName(); + String asmConstant = AsmFormat.getAsmConstant(program, constantVar.getValue(), 99, scopeRef); + asm.addDataString(asmName.replace("#", "_").replace("$", "_"), asmConstant); + added.add(asmName); + } + } catch(ConstantNotLiteral e) { + // can't calculate literal value, so it is not data - just return + } } } } diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java b/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java index 941cc8ad0..e53804891 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java @@ -68,8 +68,10 @@ public class PassNVariableReferenceInfos extends Pass2Base { used.addAll(getReferenced(elem)); } return used; + } else if(rValue instanceof ArrayFilled) { + return getReferenced(((ArrayFilled) rValue).getSize()); } else if(rValue instanceof ConstantArrayFilled) { - return new ArrayList<>(); + return getReferenced(((ConstantArrayFilled) rValue).getSize()); } else if(rValue instanceof ConstantUnary) { return getReferenced(((ConstantUnary) rValue).getOperand()); } else if(rValue instanceof ConstantRef) { diff --git a/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java b/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java index 86b5128b2..5386e4d56 100644 --- a/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java +++ b/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java @@ -129,12 +129,15 @@ public class ValueReplacer { subValues.add(new ReplaceableConstantBinaryRight((ConstantBinary) value)); } else if(value instanceof ConstantUnary) { subValues.add(new ReplaceableConstantUnaryValue((ConstantUnary) value)); + } else if(value instanceof ArrayFilled) { + subValues.add(new ReplaceableArrayFilledSize((ArrayFilled) value)); + } else if(value instanceof ConstantArrayFilled) { + subValues.add(new ReplaceableConstantArrayFilledSize((ConstantArrayFilled) value)); } else if( value == null || value instanceof VariableRef || value instanceof ConstantLiteral || value instanceof ConstantRef || - value instanceof ConstantArrayFilled || value instanceof LvalueIntermediate ) { // No sub values @@ -146,6 +149,46 @@ public class ValueReplacer { } + /** Replaceable value inside a array filled expression. */ + public static class ReplaceableArrayFilledSize extends ReplaceableValue { + private final ArrayFilled array; + + ReplaceableArrayFilledSize(ArrayFilled array) { + this.array = array; + } + + @Override + public RValue get() { + return array.getSize(); + } + + @Override + public void set(RValue val) { + array.setSize(val); + } + + } + + /** Replaceable value inside a constant array filled expression. */ + public static class ReplaceableConstantArrayFilledSize extends ReplaceableValue { + private final ConstantArrayFilled array; + + ReplaceableConstantArrayFilledSize(ConstantArrayFilled array) { + this.array = array; + } + + @Override + public RValue get() { + return array.getSize(); + } + + @Override + public void set(RValue val) { + array.setSize((ConstantValue) val); + } + + } + /** Replaceable value inside a constant unary expression. */ public static class ReplaceableConstantUnaryValue extends ReplaceableValue { private final ConstantUnary unary; diff --git a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java index bc0b5b807..1b1afa1f4 100644 --- a/src/test/java/dk/camelot64/kickc/test/TestPrograms.java +++ b/src/test/java/dk/camelot64/kickc/test/TestPrograms.java @@ -46,6 +46,16 @@ public class TestPrograms { AsmFragmentTemplateUsages.logUsages(log, false, false, false, false, false, false); } + @Test + public void testForRangedWords() throws IOException, URISyntaxException { + compileAndCompare("forrangedwords"); + } + + @Test + public void testArrayLengthSymbolic() throws IOException, URISyntaxException { + compileAndCompare("array-length-symbolic"); + } + @Test public void testForRangeSymbolic() throws IOException, URISyntaxException { compileAndCompare("forrangesymbolic"); @@ -808,7 +818,7 @@ public class TestPrograms { @Test public void testArrayUninitialized() throws IOException, URISyntaxException { - assertError("array-uninitialized", "Cannot determine array size."); + assertError("array-uninitialized", "Array has no declared size."); } @Test diff --git a/src/test/java/dk/camelot64/kickc/test/kc/array-length-mismatch.kc b/src/test/java/dk/camelot64/kickc/test/kc/array-length-mismatch.kc index 5fb4b39c2..09637a49c 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/array-length-mismatch.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/array-length-mismatch.kc @@ -1,3 +1,6 @@ byte[3] b = { 1, 2 }; -void main() {} \ No newline at end of file +void main() { + byte* SCREEN = $400; + SCREEN[0] = b[0]; +} \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/kc/array-length-symbolic.kc b/src/test/java/dk/camelot64/kickc/test/kc/array-length-symbolic.kc new file mode 100644 index 000000000..45b114c2b --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/kc/array-length-symbolic.kc @@ -0,0 +1,17 @@ +// Illustrates symbolic array lengths + +byte ITEM_COUNT = 3; +byte ITEM_SIZE = 5; + +byte[ITEM_COUNT*ITEM_SIZE] items = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +// Fills the array item by item with $is, where i is the item# and s is the sub# +void main() { + byte* cur_item = items; + for( byte item: 0..ITEM_COUNT-1) { + for( byte sub: 0..ITEM_SIZE-1) { + cur_item[sub] = item<<4|sub; + } + cur_item += ITEM_SIZE; + } +} \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/kc/array-uninitialized.kc b/src/test/java/dk/camelot64/kickc/test/kc/array-uninitialized.kc index e566a4096..7736432c2 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/array-uninitialized.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/array-uninitialized.kc @@ -1,2 +1,6 @@ byte[] b; +void main() { + byte* SCREEN = $400; + SCREEN[0] = b[0]; +} diff --git a/src/test/java/dk/camelot64/kickc/test/kc/forrangedwords.kc b/src/test/java/dk/camelot64/kickc/test/kc/forrangedwords.kc new file mode 100644 index 000000000..0f9584502 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/kc/forrangedwords.kc @@ -0,0 +1,12 @@ + +void main() { + byte* SCREEN = $0400; + for( word w: 0..$ffff) { + SCREEN[0] = w; + } + for( signed word sw: -$7fff..$7ffe) { + SCREEN[3] = sw; + } +} \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/kc/string-length-mismatch.kc b/src/test/java/dk/camelot64/kickc/test/kc/string-length-mismatch.kc index bbc6a0943..25211c7e2 100644 --- a/src/test/java/dk/camelot64/kickc/test/kc/string-length-mismatch.kc +++ b/src/test/java/dk/camelot64/kickc/test/kc/string-length-mismatch.kc @@ -1,3 +1,6 @@ byte[3] b = "qwe!"; -void main() {} \ No newline at end of file +void main() { + byte* SCREEN = $400; + SCREEN[0] = b[0]; +} \ No newline at end of file diff --git a/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.asm b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.asm new file mode 100644 index 000000000..25765fb26 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.asm @@ -0,0 +1,40 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + .const ITEM_COUNT = 2 + .const ITEM_SIZE = 5 + jsr main +main: { + .label cur_item = 2 + lda #items + sta cur_item+1 + ldx #0 + b1: + ldy #0 + b2: + txa + asl + asl + asl + asl + sty $ff + ora $ff + sta (cur_item),y + iny + cpy #ITEM_SIZE-1+1 + bne b2 + lda cur_item + clc + adc #ITEM_SIZE + sta cur_item + bcc !+ + inc cur_item+1 + !: + inx + cpx #ITEM_COUNT-1+1 + bne b1 + rts +} + items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.cfg b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.cfg new file mode 100644 index 000000000..9df706ca2 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.cfg @@ -0,0 +1,32 @@ +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@3 + [5] (byte*) main::cur_item#4 ← phi( main/(const byte[$0]) items#0 main::@3/(byte*) main::cur_item#1 ) [ main::item#4 main::cur_item#4 ] ( main:2 [ main::item#4 main::cur_item#4 ] ) + [5] (byte) main::item#4 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::item#1 ) [ main::item#4 main::cur_item#4 ] ( main:2 [ main::item#4 main::cur_item#4 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@2 + [6] (byte) main::sub#2 ← phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::sub#1 ) [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) + [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) + [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ) + [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) + [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) + [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) + to:main::@3 +main::@3: scope:[main] from main::@2 + [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) + [13] (byte) main::item#1 ← ++ (byte) main::item#4 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) + [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@3 + [15] return [ ] ( main:2 [ ] ) + to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.log b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.log new file mode 100644 index 000000000..d1a706fd0 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.log @@ -0,0 +1,745 @@ +PARSING src/test/java/dk/camelot64/kickc/test/kc/array-length-symbolic.kc +// Illustrates symbolic array lengths + +byte ITEM_COUNT = 2; +byte ITEM_SIZE = 5; + +byte[ITEM_COUNT*ITEM_SIZE] items = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +// Fills the array item by item with $is, where i is the item# and s is the sub# +void main() { + byte* cur_item = items; + for( byte item: 0..ITEM_COUNT-1) { + for( byte sub: 0..ITEM_SIZE-1) { + cur_item[sub] = item<<4|sub; + } + cur_item += ITEM_SIZE; + } +} +SYMBOLS +(byte~) $0 +(label) @1 +(label) @begin +(label) @end +(byte) ITEM_COUNT +(byte) ITEM_SIZE +(byte[$0]) items +(void()) main() +(byte/signed word/word/dword/signed dword~) main::$0 +(byte/signed word/word/dword/signed dword~) main::$1 +(byte~) main::$2 +(byte~) main::$3 +(bool~) main::$4 +(bool~) main::$5 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@return +(byte*) main::cur_item +(byte) main::item +(byte) main::sub + +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + (byte) ITEM_COUNT ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) ITEM_SIZE ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte~) $0 ← (byte) ITEM_COUNT * (byte) ITEM_SIZE + (byte[$0]) items ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + to:@1 +main: scope:[main] from + (byte*) main::cur_item ← (byte[$0]) items + (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) ITEM_COUNT - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::item ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) ITEM_SIZE - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::sub ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@2 + (byte~) main::$2 ← (byte) main::item << (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub + *((byte*) main::cur_item + (byte) main::sub) ← (byte~) main::$3 + (byte) main::sub ← (byte) main::sub + rangenext(0,main::$1) + (bool~) main::$4 ← (byte) main::sub != rangelast(0,main::$1) + if((bool~) main::$4) goto main::@2 + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte*) main::cur_item ← (byte*) main::cur_item + (byte) ITEM_SIZE + (byte) main::item ← (byte) main::item + rangenext(0,main::$0) + (bool~) main::$5 ← (byte) main::item != rangelast(0,main::$0) + if((bool~) main::$5) goto main::@1 + to:main::@4 +main::@4: scope:[main] from main::@3 + to:main::@return +main::@return: scope:[main] from main::@4 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +Eliminating unused variable (byte~) $0 and assignment [2] (byte~) $0 ← (byte) ITEM_COUNT * (byte) ITEM_SIZE +Removing empty block main::@4 +PROCEDURE MODIFY VARIABLE ANALYSIS + +Completing Phi functions... +Completing Phi functions... +Completing Phi functions... + +CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + (byte) ITEM_COUNT#0 ← (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) ITEM_SIZE#0 ← (byte/signed byte/word/signed word/dword/signed dword) 5 + (byte[$0]) items#0 ← { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } + to:@1 +main: scope:[main] from @1 + (byte) ITEM_SIZE#3 ← phi( @1/(byte) ITEM_SIZE#5 ) + (byte) ITEM_COUNT#1 ← phi( @1/(byte) ITEM_COUNT#2 ) + (byte*) main::cur_item#0 ← (byte[$0]) items#0 + (byte/signed word/word/dword/signed dword~) main::$0 ← (byte) ITEM_COUNT#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::item#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@3 + (byte*) main::cur_item#4 ← phi( main/(byte*) main::cur_item#0 main::@3/(byte*) main::cur_item#1 ) + (byte) main::item#4 ← phi( main/(byte) main::item#0 main::@3/(byte) main::item#1 ) + (byte) ITEM_SIZE#1 ← phi( main/(byte) ITEM_SIZE#3 main::@3/(byte) ITEM_SIZE#2 ) + (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) ITEM_SIZE#1 - (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::sub#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@2 +main::@2: scope:[main] from main::@1 main::@2 + (byte) ITEM_SIZE#4 ← phi( main::@1/(byte) ITEM_SIZE#1 main::@2/(byte) ITEM_SIZE#4 ) + (byte*) main::cur_item#2 ← phi( main::@1/(byte*) main::cur_item#4 main::@2/(byte*) main::cur_item#2 ) + (byte) main::sub#2 ← phi( main::@1/(byte) main::sub#0 main::@2/(byte) main::sub#1 ) + (byte) main::item#2 ← phi( main::@1/(byte) main::item#4 main::@2/(byte) main::item#2 ) + (byte~) main::$2 ← (byte) main::item#2 << (byte/signed byte/word/signed word/dword/signed dword) 4 + (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 + *((byte*) main::cur_item#2 + (byte) main::sub#2) ← (byte~) main::$3 + (byte) main::sub#1 ← (byte) main::sub#2 + rangenext(0,main::$1) + (bool~) main::$4 ← (byte) main::sub#1 != rangelast(0,main::$1) + if((bool~) main::$4) goto main::@2 + to:main::@3 +main::@3: scope:[main] from main::@2 + (byte) main::item#3 ← phi( main::@2/(byte) main::item#2 ) + (byte) ITEM_SIZE#2 ← phi( main::@2/(byte) ITEM_SIZE#4 ) + (byte*) main::cur_item#3 ← phi( main::@2/(byte*) main::cur_item#2 ) + (byte*) main::cur_item#1 ← (byte*) main::cur_item#3 + (byte) ITEM_SIZE#2 + (byte) main::item#1 ← (byte) main::item#3 + rangenext(0,main::$0) + (bool~) main::$5 ← (byte) main::item#1 != rangelast(0,main::$0) + if((bool~) main::$5) goto main::@1 + to:main::@return +main::@return: scope:[main] from main::@3 + return + to:@return +@1: scope:[] from @begin + (byte) ITEM_SIZE#5 ← phi( @begin/(byte) ITEM_SIZE#0 ) + (byte) ITEM_COUNT#2 ← phi( @begin/(byte) ITEM_COUNT#0 ) + call main + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @begin +(label) @end +(byte) ITEM_COUNT +(byte) ITEM_COUNT#0 +(byte) ITEM_COUNT#1 +(byte) ITEM_COUNT#2 +(byte) ITEM_SIZE +(byte) ITEM_SIZE#0 +(byte) ITEM_SIZE#1 +(byte) ITEM_SIZE#2 +(byte) ITEM_SIZE#3 +(byte) ITEM_SIZE#4 +(byte) ITEM_SIZE#5 +(byte[$0]) items +(byte[$0]) items#0 +(void()) main() +(byte/signed word/word/dword/signed dword~) main::$0 +(byte/signed word/word/dword/signed dword~) main::$1 +(byte~) main::$2 +(byte~) main::$3 +(bool~) main::$4 +(bool~) main::$5 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@return +(byte*) main::cur_item +(byte*) main::cur_item#0 +(byte*) main::cur_item#1 +(byte*) main::cur_item#2 +(byte*) main::cur_item#3 +(byte*) main::cur_item#4 +(byte) main::item +(byte) main::item#0 +(byte) main::item#1 +(byte) main::item#2 +(byte) main::item#3 +(byte) main::item#4 +(byte) main::sub +(byte) main::sub#0 +(byte) main::sub#1 +(byte) main::sub#2 + +OPTIMIZING CONTROL FLOW GRAPH +Culled Empty Block (label) @2 +Succesful SSA optimization Pass2CullEmptyBlocks +Not aliassing across scopes: ITEM_COUNT#1 ITEM_COUNT#2 +Not aliassing across scopes: ITEM_SIZE#3 ITEM_SIZE#5 +Not aliassing across scopes: main::cur_item#0 items#0 +Alias (byte*) main::cur_item#2 = (byte*) main::cur_item#3 +Alias (byte) ITEM_SIZE#2 = (byte) ITEM_SIZE#4 +Alias (byte) main::item#2 = (byte) main::item#3 +Alias (byte) ITEM_COUNT#0 = (byte) ITEM_COUNT#2 +Alias (byte) ITEM_SIZE#0 = (byte) ITEM_SIZE#5 +Succesful SSA optimization Pass2AliasElimination +Not aliassing across scopes: ITEM_COUNT#1 ITEM_COUNT#0 +Not aliassing across scopes: ITEM_SIZE#3 ITEM_SIZE#0 +Not aliassing across scopes: main::cur_item#0 items#0 +Self Phi Eliminated (byte) main::item#2 +Self Phi Eliminated (byte*) main::cur_item#2 +Self Phi Eliminated (byte) ITEM_SIZE#2 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) ITEM_COUNT#1 (byte) ITEM_COUNT#0 +Redundant Phi (byte) ITEM_SIZE#3 (byte) ITEM_SIZE#0 +Redundant Phi (byte) main::item#2 (byte) main::item#4 +Redundant Phi (byte*) main::cur_item#2 (byte*) main::cur_item#4 +Redundant Phi (byte) ITEM_SIZE#2 (byte) ITEM_SIZE#1 +Succesful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) main::$4 if((byte) main::sub#1!=rangelast(0,main::$1)) goto main::@2 +Simple Condition (bool~) main::$5 if((byte) main::item#1!=rangelast(0,main::$0)) goto main::@1 +Succesful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte) ITEM_COUNT#0 = 2 +Constant (const byte) ITEM_SIZE#0 = 5 +Constant (const byte[$0]) items#0 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } +Constant (const byte) main::item#0 = 0 +Constant (const byte) main::sub#0 = 0 +Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte[$0]) main::cur_item#0 = items#0 +Constant (const byte/signed word/word/dword/signed dword) main::$0 = ITEM_COUNT#0-1 +Succesful SSA optimization Pass2ConstantIdentification +Resolved ranged next value main::item#1 ← ++ main::item#4 to ++ +Resolved ranged comparison value if(main::item#1!=rangelast(0,main::$0)) goto main::@1 to (const byte/signed word/word/dword/signed dword) main::$0+(byte/signed byte/word/signed word/dword/signed dword) 1 +Self Phi Eliminated (byte) ITEM_SIZE#1 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte) ITEM_SIZE#1 (const byte) ITEM_SIZE#0 +Succesful SSA optimization Pass2RedundantPhiElimination +Constant (const byte/signed word/word/dword/signed dword) main::$1 = ITEM_SIZE#0-1 +Succesful SSA optimization Pass2ConstantIdentification +Resolved ranged next value main::sub#1 ← ++ main::sub#2 to ++ +Resolved ranged comparison value if(main::sub#1!=rangelast(0,main::$1)) goto main::@2 to (const byte/signed word/word/dword/signed dword) main::$1+(byte/signed byte/word/signed word/dword/signed dword) 1 +OPTIMIZING CONTROL FLOW GRAPH +Inlining constant with var siblings (const byte) main::item#0 +Inlining constant with var siblings (const byte) main::item#0 +Inlining constant with var siblings (const byte) main::sub#0 +Inlining constant with var siblings (const byte) main::sub#0 +Inlining constant with var siblings (const byte[$0]) main::cur_item#0 +Inlining constant with var siblings (const byte[$0]) main::cur_item#0 +Constant inlined main::sub#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::$1 = (const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined main::cur_item#0 = (const byte[$0]) items#0 +Constant inlined main::$0 = (const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1 +Constant inlined main::item#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Succesful SSA optimization Pass2ConstantInlining +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return +Added new block during phi lifting main::@5(between main::@3 and main::@1) +Added new block during phi lifting main::@6(between main::@2 and main::@2) +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return main::@5 main::@6 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:2 + +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Created 3 initial phi equivalence classes +Coalesced [16] main::item#5 ← main::item#1 +Coalesced [17] main::cur_item#5 ← main::cur_item#1 +Coalesced [18] main::sub#3 ← main::sub#1 +Coalesced down to 3 phi equivalence classes +Culled Empty Block (label) main::@5 +Culled Empty Block (label) main::@6 +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@3 main::@return +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@3 + [5] (byte*) main::cur_item#4 ← phi( main/(const byte[$0]) items#0 main::@3/(byte*) main::cur_item#1 ) [ main::item#4 main::cur_item#4 ] ( main:2 [ main::item#4 main::cur_item#4 ] ) + [5] (byte) main::item#4 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@3/(byte) main::item#1 ) [ main::item#4 main::cur_item#4 ] ( main:2 [ main::item#4 main::cur_item#4 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@2 + [6] (byte) main::sub#2 ← phi( main::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::sub#1 ) [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) + [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) + [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ) + [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) + [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) + [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) + to:main::@3 +main::@3: scope:[main] from main::@2 + [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) + [13] (byte) main::item#1 ← ++ (byte) main::item#4 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) + [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@3 + [15] return [ ] ( main:2 [ ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@1 dominated by @1 @begin +@end dominated by @1 @begin @end +main dominated by @1 @begin main +main::@1 dominated by @1 @begin main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@3 dominated by @1 @begin main::@1 main::@2 main main::@3 +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main main::@3 + +NATURAL LOOPS +Found back edge: Loop head: main::@2 tails: main::@2 blocks: null +Found back edge: Loop head: main::@1 tails: main::@3 blocks: null +Populated: Loop head: main::@2 tails: main::@2 blocks: main::@2 +Populated: Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@2 main::@1 +Loop head: main::@2 tails: main::@2 blocks: main::@2 +Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@2 main::@1 + +NATURAL LOOPS WITH DEPTH +Found 0 loops in scope [] +Found 2 loops in scope [main] + Loop head: main::@2 tails: main::@2 blocks: main::@2 + Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@2 main::@1 +Loop head: main::@2 tails: main::@2 blocks: main::@2 depth: 2 +Loop head: main::@1 tails: main::@3 blocks: main::@3 main::@2 main::@1 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(byte) ITEM_COUNT +(byte) ITEM_SIZE +(byte[$0]) items +(void()) main() +(byte~) main::$2 202.0 +(byte~) main::$3 202.0 +(byte*) main::cur_item +(byte*) main::cur_item#1 7.333333333333333 +(byte*) main::cur_item#4 17.571428571428573 +(byte) main::item +(byte) main::item#1 16.5 +(byte) main::item#4 15.375 +(byte) main::sub +(byte) main::sub#1 151.5 +(byte) main::sub#2 101.0 + +Initial phi equivalence classes +[ main::item#4 main::item#1 ] +[ main::cur_item#4 main::cur_item#1 ] +[ main::sub#2 main::sub#1 ] +Added variable main::$2 to zero page equivalence class [ main::$2 ] +Added variable main::$3 to zero page equivalence class [ main::$3 ] +Complete equivalence classes +[ main::item#4 main::item#1 ] +[ main::cur_item#4 main::cur_item#1 ] +[ main::sub#2 main::sub#1 ] +[ main::$2 ] +[ main::$3 ] +Allocated zp ZP_BYTE:2 [ main::item#4 main::item#1 ] +Allocated zp ZP_WORD:3 [ main::cur_item#4 main::cur_item#1 ] +Allocated zp ZP_BYTE:5 [ main::sub#2 main::sub#1 ] +Allocated zp ZP_BYTE:6 [ main::$2 ] +Allocated zp ZP_BYTE:7 [ main::$3 ] + +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const ITEM_COUNT = 2 + .const ITEM_SIZE = 5 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label _2 = 6 + .label _3 = 7 + .label sub = 5 + .label cur_item = 3 + .label item = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte*) main::cur_item#4 = (const byte[$0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + lda #items + sta cur_item+1 + //SEG12 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuz1=vbuc1 + lda #0 + sta item + jmp b1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + b1_from_b3: + //SEG14 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy + jmp b1 + //SEG16 main::@1 + b1: + //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + //SEG18 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuz1=vbuc1 + lda #0 + sta sub + jmp b2 + //SEG19 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + b2_from_b2: + //SEG20 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy + jmp b2 + //SEG21 main::@2 + b2: + //SEG22 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) -- vbuz1=vbuz2_rol_4 + lda item + asl + asl + asl + asl + sta _2 + //SEG23 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ) -- vbuz1=vbuz2_bor_vbuz3 + lda _2 + ora sub + sta _3 + //SEG24 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) -- pbuz1_derefidx_vbuz2=vbuz3 + lda _3 + ldy sub + sta (cur_item),y + //SEG25 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) -- vbuz1=_inc_vbuz1 + inc sub + //SEG26 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda sub + cmp #ITEM_SIZE-1+1 + bne b2_from_b2 + jmp b3 + //SEG27 main::@3 + b3: + //SEG28 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda cur_item + clc + adc #ITEM_SIZE + sta cur_item + bcc !+ + inc cur_item+1 + !: + //SEG29 [13] (byte) main::item#1 ← ++ (byte) main::item#4 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) -- vbuz1=_inc_vbuz1 + inc item + //SEG30 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) -- vbuz1_neq_vbuc1_then_la1 + lda item + cmp #ITEM_COUNT-1+1 + bne b1_from_b3 + jmp breturn + //SEG31 main::@return + breturn: + //SEG32 [15] return [ ] ( main:2 [ ] ) + rts +} + items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) always clobbers reg byte a +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::item#4 main::item#1 ] +Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::sub#2 main::sub#1 ] +Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) always clobbers reg byte a +Statement [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) always clobbers reg byte a +Potential registers zp ZP_BYTE:2 [ main::item#4 main::item#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , +Potential registers zp ZP_WORD:3 [ main::cur_item#4 main::cur_item#1 ] : zp ZP_WORD:3 , +Potential registers zp ZP_BYTE:5 [ main::sub#2 main::sub#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:6 [ main::$2 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ main::$3 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 252.5: zp ZP_BYTE:5 [ main::sub#2 main::sub#1 ] 202: zp ZP_BYTE:6 [ main::$2 ] 202: zp ZP_BYTE:7 [ main::$3 ] 31.88: zp ZP_BYTE:2 [ main::item#4 main::item#1 ] 24.9: zp ZP_WORD:3 [ main::cur_item#4 main::cur_item#1 ] +Uplift Scope [] + +Uplifting [main] best 4418 combination reg byte y [ main::sub#2 main::sub#1 ] reg byte a [ main::$2 ] reg byte a [ main::$3 ] reg byte x [ main::item#4 main::item#1 ] zp ZP_WORD:3 [ main::cur_item#4 main::cur_item#1 ] +Limited combination testing to 100 combinations of 144 possible. +Uplifting [] best 4418 combination +Allocated (was zp ZP_WORD:3) zp ZP_WORD:2 [ main::cur_item#4 main::cur_item#1 ] + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const ITEM_COUNT = 2 + .const ITEM_SIZE = 5 +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label cur_item = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (byte*) main::cur_item#4 = (const byte[$0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + lda #items + sta cur_item+1 + //SEG12 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + ldx #0 + jmp b1 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + b1_from_b3: + //SEG14 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy + jmp b1 + //SEG16 main::@1 + b1: + //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + //SEG18 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + ldy #0 + jmp b2 + //SEG19 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + b2_from_b2: + //SEG20 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy + jmp b2 + //SEG21 main::@2 + b2: + //SEG22 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) -- vbuaa=vbuxx_rol_4 + txa + asl + asl + asl + asl + //SEG23 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ) -- vbuaa=vbuaa_bor_vbuyy + sty $ff + ora $ff + //SEG24 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) -- pbuz1_derefidx_vbuyy=vbuaa + sta (cur_item),y + //SEG25 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG26 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + cpy #ITEM_SIZE-1+1 + bne b2_from_b2 + jmp b3 + //SEG27 main::@3 + b3: + //SEG28 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda cur_item + clc + adc #ITEM_SIZE + sta cur_item + bcc !+ + inc cur_item+1 + !: + //SEG29 [13] (byte) main::item#1 ← ++ (byte) main::item#4 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG30 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #ITEM_COUNT-1+1 + bne b1_from_b3 + jmp breturn + //SEG31 main::@return + breturn: + //SEG32 [15] return [ ] ( main:2 [ ] ) + rts +} + items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp b3 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Replacing label b2_from_b2 with b2 +Replacing label b1_from_b3 with b1 +Removing instruction bbegin: +Removing instruction b1_from_bbegin: +Removing instruction main_from_b1: +Removing instruction bend_from_b1: +Removing instruction b1_from_b3: +Removing instruction b2_from_b1: +Removing instruction b2_from_b2: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b1: +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction b3: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing instruction jmp b1 +Removing instruction jmp b2 +Succesful ASM optimization Pass5NextJumpElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(byte) ITEM_COUNT +(const byte) ITEM_COUNT#0 ITEM_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) ITEM_SIZE +(const byte) ITEM_SIZE#0 ITEM_SIZE = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte[$0]) items +(const byte[$0]) items#0 items = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } +(void()) main() +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@return +(byte*) main::cur_item +(byte*) main::cur_item#1 cur_item zp ZP_WORD:2 7.333333333333333 +(byte*) main::cur_item#4 cur_item zp ZP_WORD:2 17.571428571428573 +(byte) main::item +(byte) main::item#1 reg byte x 16.5 +(byte) main::item#4 reg byte x 15.375 +(byte) main::sub +(byte) main::sub#1 reg byte y 151.5 +(byte) main::sub#2 reg byte y 101.0 + +reg byte x [ main::item#4 main::item#1 ] +zp ZP_WORD:2 [ main::cur_item#4 main::cur_item#1 ] +reg byte y [ main::sub#2 main::sub#1 ] +reg byte a [ main::$2 ] +reg byte a [ main::$3 ] + + +FINAL ASSEMBLER +Score: 3422 + +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels + .const ITEM_COUNT = 2 + .const ITEM_SIZE = 5 +//SEG2 @begin +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 @1 +//SEG5 [2] call main [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main +main: { + .label cur_item = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi (byte*) main::cur_item#4 = (const byte[$0]) items#0 [phi:main->main::@1#0] -- pbuz1=pbuc1 + lda #items + sta cur_item+1 + //SEG12 [5] phi (byte) main::item#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#1] -- vbuxx=vbuc1 + ldx #0 + //SEG13 [5] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG14 [5] phi (byte*) main::cur_item#4 = (byte*) main::cur_item#1 [phi:main::@3->main::@1#0] -- register_copy + //SEG15 [5] phi (byte) main::item#4 = (byte) main::item#1 [phi:main::@3->main::@1#1] -- register_copy + //SEG16 main::@1 + b1: + //SEG17 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [6] phi (byte) main::sub#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main::@1->main::@2#0] -- vbuyy=vbuc1 + ldy #0 + //SEG19 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG20 [6] phi (byte) main::sub#2 = (byte) main::sub#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG21 main::@2 + b2: + //SEG22 [7] (byte~) main::$2 ← (byte) main::item#4 << (byte/signed byte/word/signed word/dword/signed dword) 4 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$2 ] ) -- vbuaa=vbuxx_rol_4 + txa + asl + asl + asl + asl + //SEG23 [8] (byte~) main::$3 ← (byte~) main::$2 | (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 main::$3 ] ) -- vbuaa=vbuaa_bor_vbuyy + sty $ff + ora $ff + //SEG24 [9] *((byte*) main::cur_item#4 + (byte) main::sub#2) ← (byte~) main::$3 [ main::item#4 main::cur_item#4 main::sub#2 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#2 ] ) -- pbuz1_derefidx_vbuyy=vbuaa + sta (cur_item),y + //SEG25 [10] (byte) main::sub#1 ← ++ (byte) main::sub#2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) -- vbuyy=_inc_vbuyy + iny + //SEG26 [11] if((byte) main::sub#1!=(const byte) ITEM_SIZE#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@2 [ main::item#4 main::cur_item#4 main::sub#1 ] ( main:2 [ main::item#4 main::cur_item#4 main::sub#1 ] ) -- vbuyy_neq_vbuc1_then_la1 + cpy #ITEM_SIZE-1+1 + bne b2 + //SEG27 main::@3 + //SEG28 [12] (byte*) main::cur_item#1 ← (byte*) main::cur_item#4 + (const byte) ITEM_SIZE#0 [ main::item#4 main::cur_item#1 ] ( main:2 [ main::item#4 main::cur_item#1 ] ) -- pbuz1=pbuz1_plus_vbuc1 + lda cur_item + clc + adc #ITEM_SIZE + sta cur_item + bcc !+ + inc cur_item+1 + !: + //SEG29 [13] (byte) main::item#1 ← ++ (byte) main::item#4 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) -- vbuxx=_inc_vbuxx + inx + //SEG30 [14] if((byte) main::item#1!=(const byte) ITEM_COUNT#0-(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1) goto main::@1 [ main::item#1 main::cur_item#1 ] ( main:2 [ main::item#1 main::cur_item#1 ] ) -- vbuxx_neq_vbuc1_then_la1 + cpx #ITEM_COUNT-1+1 + bne b1 + //SEG31 main::@return + //SEG32 [15] return [ ] ( main:2 [ ] ) + rts +} + items: .byte 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + diff --git a/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.sym b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.sym new file mode 100644 index 000000000..a8e9bcdf4 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/array-length-symbolic.sym @@ -0,0 +1,31 @@ +(label) @1 +(label) @begin +(label) @end +(byte) ITEM_COUNT +(const byte) ITEM_COUNT#0 ITEM_COUNT = (byte/signed byte/word/signed word/dword/signed dword) 2 +(byte) ITEM_SIZE +(const byte) ITEM_SIZE#0 ITEM_SIZE = (byte/signed byte/word/signed word/dword/signed dword) 5 +(byte[$0]) items +(const byte[$0]) items#0 items = { (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0, (byte/signed byte/word/signed word/dword/signed dword) 0 } +(void()) main() +(byte~) main::$2 reg byte a 202.0 +(byte~) main::$3 reg byte a 202.0 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@return +(byte*) main::cur_item +(byte*) main::cur_item#1 cur_item zp ZP_WORD:2 7.333333333333333 +(byte*) main::cur_item#4 cur_item zp ZP_WORD:2 17.571428571428573 +(byte) main::item +(byte) main::item#1 reg byte x 16.5 +(byte) main::item#4 reg byte x 15.375 +(byte) main::sub +(byte) main::sub#1 reg byte y 151.5 +(byte) main::sub#2 reg byte y 101.0 + +reg byte x [ main::item#4 main::item#1 ] +zp ZP_WORD:2 [ main::cur_item#4 main::cur_item#1 ] +reg byte y [ main::sub#2 main::sub#1 ] +reg byte a [ main::$2 ] +reg byte a [ main::$3 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.cfg b/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.cfg index 21d23f4cd..da5dccd16 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.cfg @@ -11,7 +11,7 @@ main: scope:[main] from @1 [4] *((const byte[3]) b#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 'c' [ ] ( main:2 [ ] ) [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ ] ( main:2 [ ] ) [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) - [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const string) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) to:main::@return main::@return: scope:[main] from main [8] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.log b/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.log index 5b067bd92..346b900d3 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.log @@ -114,7 +114,7 @@ Redundant Phi (byte*) SCREEN#1 (byte*) SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination Constant (const byte[3]) b#0 = { fill( 3, 0) } Constant (const byte[]) c#0 = { 'c', 'm', 'l' } -Constant (const string) d#0 = $0 +Constant (const byte[]) d#0 = $0 Constant (const byte*) SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) main::$0 = SCREEN#0+1 @@ -127,7 +127,7 @@ Consolidated array index constant in *(d#0+2) Succesful SSA optimization Pass2ConstantAdditionElimination OPTIMIZING CONTROL FLOW GRAPH Constant inlined main::$1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined $0 = (const string) d#0 +Constant inlined $0 = (const byte[]) d#0 Constant inlined main::$0 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @1 @end main main::@return @@ -161,7 +161,7 @@ main: scope:[main] from @1 [4] *((const byte[3]) b#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 'c' [ ] ( main:2 [ ] ) [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ ] ( main:2 [ ] ) [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) - [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const string) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) to:main::@return main::@return: scope:[main] from main [8] return [ ] ( main:2 [ ] ) @@ -223,7 +223,7 @@ main: { //SEG11 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda c+1 sta SCREEN+1 - //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const string) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda d+2 sta SCREEN+2 jmp breturn @@ -240,7 +240,7 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte[3]) b#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) 'c' [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) SCREEN#0) ← *((const byte[3]) b#0+(byte/signed byte/word/signed word/dword/signed dword) 0) [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const string) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) always clobbers reg byte a REGISTER UPLIFT SCOPES Uplift Scope [main] @@ -281,7 +281,7 @@ main: { //SEG11 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda c+1 sta SCREEN+1 - //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const string) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda d+2 sta SCREEN+2 jmp breturn @@ -321,7 +321,7 @@ FINAL SYMBOL TABLE (byte[]) c (const byte[]) c#0 c = { (byte) 'c', (byte) 'm', (byte) 'l' } (byte[]) d -(const string) d#0 d = (string) "cml" +(const byte[]) d#0 d = (string) "cml" (void()) main() (label) main::@return @@ -353,7 +353,7 @@ main: { //SEG11 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← *((const byte[]) c#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda c+1 sta SCREEN+1 - //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const string) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 + //SEG12 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← *((const byte[]) d#0+(byte/signed byte/word/signed word/dword/signed dword) 2) [ ] ( main:2 [ ] ) -- _deref_pbuc1=_deref_pbuc2 lda d+2 sta SCREEN+2 //SEG13 main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.sym b/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.sym index 8f17f0392..b1294d6ef 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/arrays-init.sym @@ -8,7 +8,7 @@ (byte[]) c (const byte[]) c#0 c = { (byte) 'c', (byte) 'm', (byte) 'l' } (byte[]) d -(const string) d#0 d = (string) "cml" +(const byte[]) d#0 d = (string) "cml" (void()) main() (label) main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bresenham.log b/src/test/java/dk/camelot64/kickc/test/ref/bresenham.log index ca48c04c6..705f161ce 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bresenham.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/bresenham.log @@ -26,10 +26,11 @@ void main() { } while (x<(x1+1)); } SYMBOLS +(word/signed word/dword/signed dword~) $0 (label) @1 (label) @begin (label) @end -(byte[1000]) SCREEN +(byte[$0]) SCREEN (byte) STAR (void()) main() (byte~) main::$0 @@ -64,11 +65,12 @@ SYMBOLS (byte) main::y1 (byte) main::yd -Promoting word/signed word/dword/signed dword to byte[1000] in SCREEN ← ((byte*)) 1024 +Promoting word/signed word/dword/signed dword to byte[$0] in SCREEN ← ((byte*)) 1024 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte) STAR ← (byte/signed byte/word/signed word/dword/signed dword) 81 - (byte[1000]) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte[$0]) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:@1 main: scope:[main] from (byte) main::x0 ← (byte/signed byte/word/signed word/dword/signed dword) 4 @@ -84,7 +86,7 @@ main: scope:[main] from (byte/signed word/word/dword/signed dword~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) main::e ← (byte/signed word/word/dword/signed dword~) main::$2 (byte/signed word/word/dword/signed dword~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*~) main::$4 ← (byte[1000]) SCREEN + (byte/signed word/word/dword/signed dword~) main::$3 + (byte*~) main::$4 ← (byte[$0]) SCREEN + (byte/signed word/word/dword/signed dword~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x (byte*) main::cursor ← (byte*~) main::$5 to:main::@1 @@ -123,6 +125,7 @@ main::@return: scope:[main] from main::@4 to:@end @end: scope:[] from @1 +Eliminating unused variable (word/signed word/dword/signed dword~) $0 and assignment [1] (word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 25 Removing empty block main::@4 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -133,7 +136,7 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte) STAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 81 - (byte[1000]) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte[$0]) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:@1 main: scope:[main] from @1 (byte) STAR#2 ← phi( @1/(byte) STAR#4 ) @@ -150,7 +153,7 @@ main: scope:[main] from @1 (byte/signed word/word/dword/signed dword~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word/dword/signed dword) 2 (byte) main::e#0 ← (byte/signed word/word/dword/signed dword~) main::$2 (byte/signed word/word/dword/signed dword~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte*~) main::$4 ← (byte[1000]) SCREEN#0 + (byte/signed word/word/dword/signed dword~) main::$3 + (byte*~) main::$4 ← (byte[$0]) SCREEN#0 + (byte/signed word/word/dword/signed dword~) main::$3 (byte*~) main::$5 ← (byte*~) main::$4 + (byte) main::x#0 (byte*) main::cursor#0 ← (byte*~) main::$5 to:main::@1 @@ -219,8 +222,8 @@ SYMBOL TABLE SSA (label) @2 (label) @begin (label) @end -(byte[1000]) SCREEN -(byte[1000]) SCREEN#0 +(byte[$0]) SCREEN +(byte[$0]) SCREEN#0 (byte) STAR (byte) STAR#0 (byte) STAR#1 @@ -491,7 +494,7 @@ Loop head: main::@1 tails: main::@2 blocks: main::@2 main::@1 main::@3 depth: 1 VARIABLE REGISTER WEIGHTS -(byte[1000]) SCREEN +(byte[$0]) SCREEN (byte) STAR (void()) main() (byte*) main::cursor @@ -831,7 +834,7 @@ FINAL SYMBOL TABLE (label) @1 (label) @begin (label) @end -(byte[1000]) SCREEN +(byte[$0]) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) STAR (const byte) STAR#0 STAR = (byte/signed byte/word/signed word/dword/signed dword) 81 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bresenham.sym b/src/test/java/dk/camelot64/kickc/test/ref/bresenham.sym index 0fb9fd5a8..7023d2c24 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bresenham.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/bresenham.sym @@ -1,7 +1,7 @@ (label) @1 (label) @begin (label) @end -(byte[1000]) SCREEN +(byte[$0]) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) STAR (const byte) STAR#0 STAR = (byte/signed byte/word/signed word/dword/signed dword) 81 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.log b/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.log index 8c381ac83..95daa5c0e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.log @@ -30,20 +30,21 @@ SYMBOLS (label) @begin (label) @end (void()) main() -(byte~) main::$0 +(word/signed word/dword/signed dword~) main::$0 (byte~) main::$1 -(byte/signed word/word/dword/signed dword~) main::$10 -(word/signed dword/dword~) main::$11 -(byte~) main::$12 -(byte/signed word/word/dword/signed dword~) main::$13 -(bool~) main::$14 -(byte/signed word/word/dword/signed dword~) main::$2 +(bool~) main::$10 +(byte/signed word/word/dword/signed dword~) main::$11 +(word/signed dword/dword~) main::$12 +(byte~) main::$13 +(byte/signed word/word/dword/signed dword~) main::$14 +(bool~) main::$15 +(byte~) main::$2 (byte/signed word/word/dword/signed dword~) main::$3 (byte/signed word/word/dword/signed dword~) main::$4 (byte/signed word/word/dword/signed dword~) main::$5 -(word/signed dword/dword~) main::$6 -(byte~) main::$7 -(bool~) main::$8 +(byte/signed word/word/dword/signed dword~) main::$6 +(word/signed dword/dword~) main::$7 +(byte~) main::$8 (bool~) main::$9 (label) main::@1 (label) main::@2 @@ -53,7 +54,7 @@ SYMBOLS (byte) main::STAR (byte) main::e (word) main::idx -(byte[1000]) main::screen +(byte[main::$0]) main::screen (byte) main::x (byte) main::x0 (byte) main::x1 @@ -63,53 +64,54 @@ SYMBOLS (byte) main::y1 (byte) main::yd -Promoting word/signed word/dword/signed dword to byte[1000] in main::screen ← ((byte*)) 1024 +Promoting word/signed word/dword/signed dword to byte[main::$0] in main::screen ← ((byte*)) 1024 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from to:@1 main: scope:[main] from (byte) main::STAR ← (byte/signed byte/word/signed word/dword/signed dword) 81 - (byte[1000]) main::screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 25 + (byte[main::$0]) main::screen ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte) main::x0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) main::y0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) main::x1 ← (byte/signed byte/word/signed word/dword/signed dword) 39 (byte) main::y1 ← (byte/signed byte/word/signed word/dword/signed dword) 24 - (byte~) main::$0 ← (byte) main::x1 - (byte) main::x0 - (byte) main::xd ← (byte~) main::$0 - (byte~) main::$1 ← (byte) main::y1 - (byte) main::y0 - (byte) main::yd ← (byte~) main::$1 + (byte~) main::$1 ← (byte) main::x1 - (byte) main::x0 + (byte) main::xd ← (byte~) main::$1 + (byte~) main::$2 ← (byte) main::y1 - (byte) main::y0 + (byte) main::yd ← (byte~) main::$2 (byte) main::x ← (byte) main::x0 (byte) main::y ← (byte) main::y0 - (byte/signed word/word/dword/signed dword~) main::$2 ← (byte) main::yd / (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) main::e ← (byte/signed word/word/dword/signed dword~) main::$2 - (byte/signed word/word/dword/signed dword~) main::$3 ← (byte) main::y * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::x + (byte/signed word/word/dword/signed dword~) main::$3 - (word) main::idx ← (byte/signed word/word/dword/signed dword~) main::$4 + (byte/signed word/word/dword/signed dword~) main::$3 ← (byte) main::yd / (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::e ← (byte/signed word/word/dword/signed dword~) main::$3 + (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::y * (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte/signed word/word/dword/signed dword~) main::$5 ← (byte) main::x + (byte/signed word/word/dword/signed dword~) main::$4 + (word) main::idx ← (byte/signed word/word/dword/signed dword~) main::$5 to:main::@1 main::@1: scope:[main] from main main::@2 - *((byte[1000]) main::screen + (word) main::idx) ← (byte) main::STAR - (byte/signed word/word/dword/signed dword~) main::$5 ← (byte) main::x + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) main::x ← (byte/signed word/word/dword/signed dword~) main::$5 - (word/signed dword/dword~) main::$6 ← (word) main::idx + (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) main::idx ← (word/signed dword/dword~) main::$6 - (byte~) main::$7 ← (byte) main::e + (byte) main::yd - (byte) main::e ← (byte~) main::$7 - (bool~) main::$8 ← (byte) main::xd < (byte) main::e - (bool~) main::$9 ← ! (bool~) main::$8 - if((bool~) main::$9) goto main::@2 + *((byte[main::$0]) main::screen + (word) main::idx) ← (byte) main::STAR + (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::x + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::x ← (byte/signed word/word/dword/signed dword~) main::$6 + (word/signed dword/dword~) main::$7 ← (word) main::idx + (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) main::idx ← (word/signed dword/dword~) main::$7 + (byte~) main::$8 ← (byte) main::e + (byte) main::yd + (byte) main::e ← (byte~) main::$8 + (bool~) main::$9 ← (byte) main::xd < (byte) main::e + (bool~) main::$10 ← ! (bool~) main::$9 + if((bool~) main::$10) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 - (byte/signed word/word/dword/signed dword~) main::$13 ← (byte) main::x1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) main::$14 ← (byte) main::x < (byte/signed word/word/dword/signed dword~) main::$13 - if((bool~) main::$14) goto main::@1 + (byte/signed word/word/dword/signed dword~) main::$14 ← (byte) main::x1 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (bool~) main::$15 ← (byte) main::x < (byte/signed word/word/dword/signed dword~) main::$14 + if((bool~) main::$15) goto main::@1 to:main::@4 main::@3: scope:[main] from main::@1 - (byte/signed word/word/dword/signed dword~) main::$10 ← (byte) main::y + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) main::y ← (byte/signed word/word/dword/signed dword~) main::$10 - (word/signed dword/dword~) main::$11 ← (word) main::idx + (byte/signed byte/word/signed word/dword/signed dword) 40 - (word) main::idx ← (word/signed dword/dword~) main::$11 - (byte~) main::$12 ← (byte) main::e - (byte) main::xd - (byte) main::e ← (byte~) main::$12 + (byte/signed word/word/dword/signed dword~) main::$11 ← (byte) main::y + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::y ← (byte/signed word/word/dword/signed dword~) main::$11 + (word/signed dword/dword~) main::$12 ← (word) main::idx + (byte/signed byte/word/signed word/dword/signed dword) 40 + (word) main::idx ← (word/signed dword/dword~) main::$12 + (byte~) main::$13 ← (byte) main::e - (byte) main::xd + (byte) main::e ← (byte~) main::$13 to:main::@2 main::@4: scope:[main] from main::@2 to:main::@return @@ -121,6 +123,7 @@ main::@return: scope:[main] from main::@4 to:@end @end: scope:[] from @1 +Eliminating unused variable (word/signed word/dword/signed dword~) main::$0 and assignment [1] (word/signed word/dword/signed dword~) main::$0 ← (byte/signed byte/word/signed word/dword/signed dword) 40 * (byte/signed byte/word/signed word/dword/signed dword) 25 Removing empty block main::@4 PROCEDURE MODIFY VARIABLE ANALYSIS @@ -133,22 +136,22 @@ CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN to:@1 main: scope:[main] from @1 (byte) main::STAR#0 ← (byte/signed byte/word/signed word/dword/signed dword) 81 - (byte[1000]) main::screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (byte[main::$0]) main::screen#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 (byte) main::x0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) main::y0#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 (byte) main::x1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 39 (byte) main::y1#0 ← (byte/signed byte/word/signed word/dword/signed dword) 24 - (byte~) main::$0 ← (byte) main::x1#0 - (byte) main::x0#0 - (byte) main::xd#0 ← (byte~) main::$0 - (byte~) main::$1 ← (byte) main::y1#0 - (byte) main::y0#0 - (byte) main::yd#0 ← (byte~) main::$1 + (byte~) main::$1 ← (byte) main::x1#0 - (byte) main::x0#0 + (byte) main::xd#0 ← (byte~) main::$1 + (byte~) main::$2 ← (byte) main::y1#0 - (byte) main::y0#0 + (byte) main::yd#0 ← (byte~) main::$2 (byte) main::x#0 ← (byte) main::x0#0 (byte) main::y#0 ← (byte) main::y0#0 - (byte/signed word/word/dword/signed dword~) main::$2 ← (byte) main::yd#0 / (byte/signed byte/word/signed word/dword/signed dword) 2 - (byte) main::e#0 ← (byte/signed word/word/dword/signed dword~) main::$2 - (byte/signed word/word/dword/signed dword~) main::$3 ← (byte) main::y#0 * (byte/signed byte/word/signed word/dword/signed dword) 40 - (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::x#0 + (byte/signed word/word/dword/signed dword~) main::$3 - (word) main::idx#0 ← (byte/signed word/word/dword/signed dword~) main::$4 + (byte/signed word/word/dword/signed dword~) main::$3 ← (byte) main::yd#0 / (byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::e#0 ← (byte/signed word/word/dword/signed dword~) main::$3 + (byte/signed word/word/dword/signed dword~) main::$4 ← (byte) main::y#0 * (byte/signed byte/word/signed word/dword/signed dword) 40 + (byte/signed word/word/dword/signed dword~) main::$5 ← (byte) main::x#0 + (byte/signed word/word/dword/signed dword~) main::$4 + (word) main::idx#0 ← (byte/signed word/word/dword/signed dword~) main::$5 to:main::@1 main::@1: scope:[main] from main main::@2 (byte) main::y#3 ← phi( main/(byte) main::y#0 main::@2/(byte) main::y#4 ) @@ -159,16 +162,16 @@ main::@1: scope:[main] from main main::@2 (byte) main::x#2 ← phi( main/(byte) main::x#0 main::@2/(byte) main::x#3 ) (word) main::idx#3 ← phi( main/(word) main::idx#0 main::@2/(word) main::idx#5 ) (byte) main::STAR#1 ← phi( main/(byte) main::STAR#0 main::@2/(byte) main::STAR#2 ) - *((byte[1000]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1 - (byte/signed word/word/dword/signed dword~) main::$5 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) main::x#1 ← (byte/signed word/word/dword/signed dword~) main::$5 - (word/signed dword/dword~) main::$6 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (word) main::idx#1 ← (word/signed dword/dword~) main::$6 - (byte~) main::$7 ← (byte) main::e#3 + (byte) main::yd#1 - (byte) main::e#1 ← (byte~) main::$7 - (bool~) main::$8 ← (byte) main::xd#1 < (byte) main::e#1 - (bool~) main::$9 ← ! (bool~) main::$8 - if((bool~) main::$9) goto main::@2 + *((byte[main::$0]) main::screen#0 + (word) main::idx#3) ← (byte) main::STAR#1 + (byte/signed word/word/dword/signed dword~) main::$6 ← (byte) main::x#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::x#1 ← (byte/signed word/word/dword/signed dword~) main::$6 + (word/signed dword/dword~) main::$7 ← (word) main::idx#3 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (word) main::idx#1 ← (word/signed dword/dword~) main::$7 + (byte~) main::$8 ← (byte) main::e#3 + (byte) main::yd#1 + (byte) main::e#1 ← (byte~) main::$8 + (bool~) main::$9 ← (byte) main::xd#1 < (byte) main::e#1 + (bool~) main::$10 ← ! (bool~) main::$9 + if((bool~) main::$10) goto main::@2 to:main::@3 main::@2: scope:[main] from main::@1 main::@3 (byte) main::y#4 ← phi( main::@1/(byte) main::y#3 main::@3/(byte) main::y#1 ) @@ -179,9 +182,9 @@ main::@2: scope:[main] from main::@1 main::@3 (byte) main::STAR#2 ← phi( main::@1/(byte) main::STAR#1 main::@3/(byte) main::STAR#3 ) (byte) main::x#3 ← phi( main::@1/(byte) main::x#1 main::@3/(byte) main::x#4 ) (byte) main::x1#1 ← phi( main::@1/(byte) main::x1#2 main::@3/(byte) main::x1#3 ) - (byte/signed word/word/dword/signed dword~) main::$13 ← (byte) main::x1#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (bool~) main::$14 ← (byte) main::x#3 < (byte/signed word/word/dword/signed dword~) main::$13 - if((bool~) main::$14) goto main::@1 + (byte/signed word/word/dword/signed dword~) main::$14 ← (byte) main::x1#1 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (bool~) main::$15 ← (byte) main::x#3 < (byte/signed word/word/dword/signed dword~) main::$14 + if((bool~) main::$15) goto main::@1 to:main::@return main::@3: scope:[main] from main::@1 (byte) main::yd#3 ← phi( main::@1/(byte) main::yd#1 ) @@ -192,12 +195,12 @@ main::@3: scope:[main] from main::@1 (byte) main::e#4 ← phi( main::@1/(byte) main::e#1 ) (word) main::idx#4 ← phi( main::@1/(word) main::idx#1 ) (byte) main::y#2 ← phi( main::@1/(byte) main::y#3 ) - (byte/signed word/word/dword/signed dword~) main::$10 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 - (byte) main::y#1 ← (byte/signed word/word/dword/signed dword~) main::$10 - (word/signed dword/dword~) main::$11 ← (word) main::idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 - (word) main::idx#2 ← (word/signed dword/dword~) main::$11 - (byte~) main::$12 ← (byte) main::e#4 - (byte) main::xd#2 - (byte) main::e#2 ← (byte~) main::$12 + (byte/signed word/word/dword/signed dword~) main::$11 ← (byte) main::y#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::y#1 ← (byte/signed word/word/dword/signed dword~) main::$11 + (word/signed dword/dword~) main::$12 ← (word) main::idx#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 + (word) main::idx#2 ← (word/signed dword/dword~) main::$12 + (byte~) main::$13 ← (byte) main::e#4 - (byte) main::xd#2 + (byte) main::e#2 ← (byte~) main::$13 to:main::@2 main::@return: scope:[main] from main::@2 return @@ -215,20 +218,20 @@ SYMBOL TABLE SSA (label) @begin (label) @end (void()) main() -(byte~) main::$0 (byte~) main::$1 -(byte/signed word/word/dword/signed dword~) main::$10 -(word/signed dword/dword~) main::$11 -(byte~) main::$12 -(byte/signed word/word/dword/signed dword~) main::$13 -(bool~) main::$14 -(byte/signed word/word/dword/signed dword~) main::$2 +(bool~) main::$10 +(byte/signed word/word/dword/signed dword~) main::$11 +(word/signed dword/dword~) main::$12 +(byte~) main::$13 +(byte/signed word/word/dword/signed dword~) main::$14 +(bool~) main::$15 +(byte~) main::$2 (byte/signed word/word/dword/signed dword~) main::$3 (byte/signed word/word/dword/signed dword~) main::$4 (byte/signed word/word/dword/signed dword~) main::$5 -(word/signed dword/dword~) main::$6 -(byte~) main::$7 -(bool~) main::$8 +(byte/signed word/word/dword/signed dword~) main::$6 +(word/signed dword/dword~) main::$7 +(byte~) main::$8 (bool~) main::$9 (label) main::@1 (label) main::@2 @@ -253,8 +256,8 @@ SYMBOL TABLE SSA (word) main::idx#3 (word) main::idx#4 (word) main::idx#5 -(byte[1000]) main::screen -(byte[1000]) main::screen#0 +(byte[main::$0]) main::screen +(byte[main::$0]) main::screen#0 (byte) main::x (byte) main::x#0 (byte) main::x#1 @@ -292,25 +295,25 @@ SYMBOL TABLE SSA OPTIMIZING CONTROL FLOW GRAPH Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks -Inversing boolean not (bool~) main::$9 ← (byte) main::xd#1 >= (byte) main::e#1 from (bool~) main::$8 ← (byte) main::xd#1 < (byte) main::e#1 +Inversing boolean not (bool~) main::$10 ← (byte) main::xd#1 >= (byte) main::e#1 from (bool~) main::$9 ← (byte) main::xd#1 < (byte) main::e#1 Succesful SSA optimization Pass2UnaryNotSimplification -Alias (byte) main::xd#0 = (byte~) main::$0 -Alias (byte) main::yd#0 = (byte~) main::$1 +Alias (byte) main::xd#0 = (byte~) main::$1 +Alias (byte) main::yd#0 = (byte~) main::$2 Alias (byte) main::x#0 = (byte) main::x0#0 Alias (byte) main::y#0 = (byte) main::y0#0 -Alias (byte) main::e#0 = (byte/signed word/word/dword/signed dword~) main::$2 -Alias (word) main::idx#0 = (byte/signed word/word/dword/signed dword~) main::$4 -Alias (byte) main::x#1 = (byte/signed word/word/dword/signed dword~) main::$5 (byte) main::x#4 -Alias (word) main::idx#1 = (word/signed dword/dword~) main::$6 (word) main::idx#4 -Alias (byte) main::e#1 = (byte~) main::$7 (byte) main::e#4 +Alias (byte) main::e#0 = (byte/signed word/word/dword/signed dword~) main::$3 +Alias (word) main::idx#0 = (byte/signed word/word/dword/signed dword~) main::$5 +Alias (byte) main::x#1 = (byte/signed word/word/dword/signed dword~) main::$6 (byte) main::x#4 +Alias (word) main::idx#1 = (word/signed dword/dword~) main::$7 (word) main::idx#4 +Alias (byte) main::e#1 = (byte~) main::$8 (byte) main::e#4 Alias (byte) main::y#2 = (byte) main::y#3 Alias (byte) main::xd#1 = (byte) main::xd#2 Alias (byte) main::x1#2 = (byte) main::x1#3 Alias (byte) main::STAR#1 = (byte) main::STAR#3 Alias (byte) main::yd#1 = (byte) main::yd#3 -Alias (byte) main::y#1 = (byte/signed word/word/dword/signed dword~) main::$10 -Alias (word) main::idx#2 = (word/signed dword/dword~) main::$11 -Alias (byte) main::e#2 = (byte~) main::$12 +Alias (byte) main::y#1 = (byte/signed word/word/dword/signed dword~) main::$11 +Alias (word) main::idx#2 = (word/signed dword/dword~) main::$12 +Alias (byte) main::e#2 = (byte~) main::$13 Succesful SSA optimization Pass2AliasElimination Alias (byte) main::x1#1 = (byte) main::x1#2 Alias (byte) main::x#1 = (byte) main::x#3 @@ -328,8 +331,8 @@ Redundant Phi (byte) main::yd#1 (byte) main::yd#0 Redundant Phi (byte) main::xd#1 (byte) main::xd#0 Redundant Phi (byte) main::x1#1 (byte) main::x1#0 Succesful SSA optimization Pass2RedundantPhiElimination -Simple Condition (bool~) main::$9 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2 -Simple Condition (bool~) main::$14 if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$13) goto main::@1 +Simple Condition (bool~) main::$10 if((byte) main::xd#0>=(byte) main::e#1) goto main::@2 +Simple Condition (bool~) main::$15 if((byte) main::x#1<(byte/signed word/word/dword/signed dword~) main::$14) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte) main::STAR#0 = 81 Constant (const byte*) main::screen#0 = ((byte*))1024 @@ -340,11 +343,11 @@ Constant (const byte) main::y1#0 = 24 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) main::xd#0 = main::x1#0-main::x#0 Constant (const byte) main::yd#0 = main::y1#0-main::y#0 -Constant (const byte/signed word/word/dword/signed dword) main::$3 = main::y#0*40 -Constant (const byte/signed word/word/dword/signed dword) main::$13 = main::x1#0+1 +Constant (const byte/signed word/word/dword/signed dword) main::$4 = main::y#0*40 +Constant (const byte/signed word/word/dword/signed dword) main::$14 = main::x1#0+1 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) main::e#0 = main::yd#0/2 -Constant (const word) main::idx#0 = main::x#0+main::$3 +Constant (const word) main::idx#0 = main::x#0+main::$4 Succesful SSA optimization Pass2ConstantIdentification OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) main::x#0 @@ -360,10 +363,10 @@ Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0 Inlining constant with var siblings (const word) main::idx#0 -Constant inlined main::$13 = (const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined main::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0+(byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined main::$3 = (byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) 40 +Constant inlined main::$14 = (const byte) main::x1#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined main::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::$4 = (byte/signed byte/word/signed word/dword/signed dword) 0*(byte/signed byte/word/signed word/dword/signed dword) 40 Constant inlined main::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::e#0 = (const byte) main::yd#0/(byte/signed byte/word/signed word/dword/signed dword) 2 Succesful SSA optimization Pass2ConstantInlining @@ -487,7 +490,7 @@ VARIABLE REGISTER WEIGHTS (word) main::idx#2 11.0 (word) main::idx#3 11.0 (word) main::idx#5 16.5 -(byte[1000]) main::screen +(byte[main::$0]) main::screen (byte) main::x (byte) main::x#1 3.666666666666667 (byte) main::x#2 11.0 @@ -839,7 +842,7 @@ FINAL SYMBOL TABLE (word) main::idx#2 idx zp ZP_WORD:2 11.0 (word) main::idx#3 idx zp ZP_WORD:2 11.0 (word) main::idx#5 idx zp ZP_WORD:2 16.5 -(byte[1000]) main::screen +(byte[main::$0]) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) main::x (byte) main::x#1 reg byte x 3.666666666666667 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym b/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym index 6e0436286..c1e5e1aaa 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/bresenhamarr.sym @@ -18,7 +18,7 @@ (word) main::idx#2 idx zp ZP_WORD:2 11.0 (word) main::idx#3 idx zp ZP_WORD:2 11.0 (word) main::idx#5 idx zp ZP_WORD:2 16.5 -(byte[1000]) main::screen +(byte[main::$0]) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) main::x (byte) main::x#1 reg byte x 3.666666666666667 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg index b025f3456..aede7bbe1 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.cfg @@ -602,7 +602,7 @@ render_preset_name::@33: scope:[render_preset_name] from render_preset_name::@3 [318] phi() [ ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 ] ) 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 - [319] (byte*) render_preset_name::name#12 ← phi( render_preset_name/(const string) render_preset_name::name#0 render_preset_name::@31/(const string) render_preset_name::name#9 render_preset_name::@32/(const string) render_preset_name::name#10 render_preset_name::@23/(const string) render_preset_name::name#1 render_preset_name::@24/(const string) render_preset_name::name#2 render_preset_name::@33/(const string) render_preset_name::name#11 render_preset_name::@25/(const string) render_preset_name::name#3 render_preset_name::@26/(const string) render_preset_name::name#4 render_preset_name::@27/(const string) render_preset_name::name#5 render_preset_name::@28/(const string) render_preset_name::name#6 render_preset_name::@29/(const string) render_preset_name::name#7 render_preset_name::@30/(const string) render_preset_name::name#8 ) [ render_preset_name::name#12 ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 render_preset_name::name#12 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 render_preset_name::name#12 ] ) + [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 ) [ render_preset_name::name#12 ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 render_preset_name::name#12 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 render_preset_name::name#12 ] ) [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] ) [321] call print_str_at [ ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 ] ) to:render_preset_name::@return @@ -636,7 +636,7 @@ form_render_values::@1: scope:[form_render_values] from form_render_values form to:form_render_values::@3 form_render_values::@3: scope:[form_render_values] from form_render_values::@1 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_render_values::field#0 ] ) - [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) + [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#1 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#1 ] ) [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#1 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#1 ] ) to:form_render_values::@return @@ -776,7 +776,7 @@ form_control::@26: scope:[form_control] from form_control::@25 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) to:form_control::@12 form_control::@12: scope:[form_control] from form_control::@10 form_control::@25 form_control::@26 form_control::@28 - [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) + [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) to:form_control::@return form_control::@10: scope:[form_control] from form_control::@24 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) @@ -816,7 +816,7 @@ form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@1 [418] return [ ] ( main:2::form_mode:13::form_set_screen:267 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) to:@return print_str_lines: scope:[print_str_lines] from form_mode::@22 form_mode::@25 - [419] (byte*) print_str_lines::str#5 ← phi( form_mode::@22/(const string) FORM_COLS#0 form_mode::@25/(const string) FORM_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:259 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] ) + [419] (byte*) print_str_lines::str#5 ← phi( form_mode::@22/(const byte[]) FORM_COLS#0 form_mode::@25/(const byte[]) FORM_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:259 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] ) [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#77 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:259 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#77 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#77 print_set_screen::screen#2 ] ) to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log index 1b66d9e23..d26e3447e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.log @@ -15909,7 +15909,7 @@ Constant (const dword) DTV_COLOR_BANK_DEFAULT#0 = 120832 Constant (const byte*) DTV_GRAPHICS_VIC_BANK#0 = ((byte*))53309 Constant (const byte*) dtvSetCpuBankSegment1::cpuBank#0 = ((byte*))255 Constant (const byte*) print_screen#0 = ((byte*))1024 -Constant (const string) print_hextab#0 = $69 +Constant (const byte[]) print_hextab#0 = $69 Constant (const byte) KEY_CRSR_RIGHT#0 = 2 Constant (const byte) KEY_CRSR_DOWN#0 = 7 Constant (const byte) KEY_LSHIFT#0 = 15 @@ -15981,18 +15981,18 @@ Constant (const byte[]) preset_sixsfred#0 = { 8, 1, 1, 1, 1, 1, 0, 0, 0, 0, 9, 0 Constant (const byte[]) preset_sixsfred2#0 = { 9, 1, 1, 1, 0, 1, 0, 0, 0, 0, 9, 0, 0, 0, 1, 0, 0, 10, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } Constant (const byte[]) preset_8bpppixelcell#0 = { 10, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 } Constant (const byte) apply_preset::i#0 = 0 -Constant (const string) render_preset_name::name#0 = render_preset_name::$15 -Constant (const string) render_preset_name::name#1 = render_preset_name::$16 -Constant (const string) render_preset_name::name#2 = render_preset_name::$17 -Constant (const string) render_preset_name::name#3 = render_preset_name::$18 -Constant (const string) render_preset_name::name#4 = render_preset_name::$19 -Constant (const string) render_preset_name::name#5 = render_preset_name::$20 -Constant (const string) render_preset_name::name#6 = render_preset_name::$21 -Constant (const string) render_preset_name::name#7 = render_preset_name::$22 -Constant (const string) render_preset_name::name#8 = render_preset_name::$23 -Constant (const string) render_preset_name::name#9 = render_preset_name::$24 -Constant (const string) render_preset_name::name#10 = render_preset_name::$25 -Constant (const string) render_preset_name::name#11 = render_preset_name::$26 +Constant (const byte*) render_preset_name::name#0 = render_preset_name::$15 +Constant (const byte*) render_preset_name::name#1 = render_preset_name::$16 +Constant (const byte*) render_preset_name::name#2 = render_preset_name::$17 +Constant (const byte*) render_preset_name::name#3 = render_preset_name::$18 +Constant (const byte*) render_preset_name::name#4 = render_preset_name::$19 +Constant (const byte*) render_preset_name::name#5 = render_preset_name::$20 +Constant (const byte*) render_preset_name::name#6 = render_preset_name::$21 +Constant (const byte*) render_preset_name::name#7 = render_preset_name::$22 +Constant (const byte*) render_preset_name::name#8 = render_preset_name::$23 +Constant (const byte*) render_preset_name::name#9 = render_preset_name::$24 +Constant (const byte*) render_preset_name::name#10 = render_preset_name::$25 +Constant (const byte*) render_preset_name::name#11 = render_preset_name::$26 Constant (const byte/signed byte/word/signed word/dword/signed dword) render_preset_name::$11 = 40*2 Constant (const byte) gfx_mode::dtv_control#0 = 0 Constant (const byte) gfx_mode::cy#0 = 0 @@ -16087,18 +16087,18 @@ Constant (const byte*) get_vic_charset::return#1 = VIC_BITMAP#0 Constant (const byte*) get_vic_charset::return#3 = VIC_CHARSET_ROM#0 Constant (const string) $2 = " C64 DTV Graphics Mode Explorer @"+" @"+" PRESET 0 Standard Charset @" Constant (const string) $17 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@" -Constant (const byte[]) apply_preset::preset#0 = preset_stdchar#0 -Constant (const byte[]) apply_preset::preset#1 = preset_ecmchar#0 -Constant (const byte[]) apply_preset::preset#2 = preset_stdbm#0 -Constant (const byte[]) apply_preset::preset#3 = preset_mcbm#0 -Constant (const byte[]) apply_preset::preset#4 = preset_hi_stdchar#0 -Constant (const byte[]) apply_preset::preset#5 = preset_hi_ecmchar#0 -Constant (const byte[]) apply_preset::preset#6 = preset_twoplane#0 -Constant (const byte[]) apply_preset::preset#7 = preset_chunky#0 -Constant (const byte[]) apply_preset::preset#8 = preset_sixsfred#0 -Constant (const byte[]) apply_preset::preset#9 = preset_sixsfred2#0 -Constant (const byte[]) apply_preset::preset#10 = preset_8bpppixelcell#0 -Constant (const byte[]) apply_preset::preset#11 = preset_stdchar#0 +Constant (const byte*) apply_preset::preset#0 = preset_stdchar#0 +Constant (const byte*) apply_preset::preset#1 = preset_ecmchar#0 +Constant (const byte*) apply_preset::preset#2 = preset_stdbm#0 +Constant (const byte*) apply_preset::preset#3 = preset_mcbm#0 +Constant (const byte*) apply_preset::preset#4 = preset_hi_stdchar#0 +Constant (const byte*) apply_preset::preset#5 = preset_hi_ecmchar#0 +Constant (const byte*) apply_preset::preset#6 = preset_twoplane#0 +Constant (const byte*) apply_preset::preset#7 = preset_chunky#0 +Constant (const byte*) apply_preset::preset#8 = preset_sixsfred#0 +Constant (const byte*) apply_preset::preset#9 = preset_sixsfred2#0 +Constant (const byte*) apply_preset::preset#10 = preset_8bpppixelcell#0 +Constant (const byte*) apply_preset::preset#11 = preset_stdchar#0 Constant (const byte*) render_preset_name::$12 = FORM_SCREEN#0+render_preset_name::$11 Constant (const byte*) form_preset#0 = form_fields_val#0+0 Constant (const byte*) form_ctrl_bmm#0 = form_fields_val#0+1 @@ -16268,13 +16268,13 @@ Succesful SSA optimization Pass2ConstantIdentification Constant (const string) $14 = " C64 DTV Graphics Mode Explorer @"+" @"+" PRESET 0 Standard Charset @"+" @"+" CONTROL PLANE A VIC II @"+" bmm 0 pattern p0 screen s0 @"+" mcm 0 start 00 gfx g0 @"+" ecm 0 step 00 colors c0 @"+" hicolor 0 modulo 00 @"+" linear 0 COLORS @"+" color off 0 PLANE B palet 0 @"+" chunky 0 pattern p0 bgcol0 00 @"+" border off 0 start 00 bgcol1 00 @"+" overscan 0 step 00 bgcol2 00 @"+" modulo 00 bgcol3 00 @" Constant (const string) $29 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) FORM_TEXT#0 = " C64 DTV Graphics Mode Explorer @"+" @"+" PRESET 0 Standard Charset @"+" @"+" CONTROL PLANE A VIC II @"+" bmm 0 pattern p0 screen s0 @"+" mcm 0 start 00 gfx g0 @"+" ecm 0 step 00 colors c0 @"+" hicolor 0 modulo 00 @"+" linear 0 COLORS @"+" color off 0 PLANE B palet 0 @"+" chunky 0 pattern p0 bgcol0 00 @"+" border off 0 start 00 bgcol1 00 @"+" overscan 0 step 00 bgcol2 00 @"+" modulo 00 bgcol3 00 @"+"@" +Constant (const byte[]) FORM_TEXT#0 = " C64 DTV Graphics Mode Explorer @"+" @"+" PRESET 0 Standard Charset @"+" @"+" CONTROL PLANE A VIC II @"+" bmm 0 pattern p0 screen s0 @"+" mcm 0 start 00 gfx g0 @"+" ecm 0 step 00 colors c0 @"+" hicolor 0 modulo 00 @"+" linear 0 COLORS @"+" color off 0 PLANE B palet 0 @"+" chunky 0 pattern p0 bgcol0 00 @"+" border off 0 start 00 bgcol1 00 @"+" overscan 0 step 00 bgcol2 00 @"+" modulo 00 bgcol3 00 @"+"@" Constant (const string) $30 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @" Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) FORM_COLS#0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+"@" -Constant (const string) print_str_lines::str#2 = FORM_TEXT#0 +Constant (const byte[]) FORM_COLS#0 = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+" @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+" nnnnnnnnnnnn mmmmmmmmmm @"+" nnnnnnnnnnnn jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+" nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+"@" +Constant (const byte*) print_str_lines::str#2 = FORM_TEXT#0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) print_str_lines::str#1 = FORM_COLS#0 +Constant (const byte*) print_str_lines::str#1 = FORM_COLS#0 Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_x#0+1 + gfx_init_vic_bitmap::$2) Consolidated array index constant in assignment *(gfx_init_vic_bitmap::lines_y#0+1 + gfx_init_vic_bitmap::$3) @@ -17257,14 +17257,14 @@ Inlining constant with different constant siblings (const byte) dtvSetCpuBankSeg Inlining constant with different constant siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#9 Inlining constant with different constant siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#9 Inlining constant with different constant siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#9 -Inlining constant with var siblings (const string) print_str_lines::str#2 -Inlining constant with var siblings (const string) print_str_lines::str#2 -Inlining constant with var siblings (const string) print_str_lines::str#2 -Inlining constant with var siblings (const string) print_str_lines::str#2 -Inlining constant with var siblings (const string) print_str_lines::str#1 -Inlining constant with var siblings (const string) print_str_lines::str#1 -Inlining constant with var siblings (const string) print_str_lines::str#1 -Inlining constant with var siblings (const string) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#2 +Inlining constant with var siblings (const byte*) print_str_lines::str#2 +Inlining constant with var siblings (const byte*) print_str_lines::str#2 +Inlining constant with var siblings (const byte*) print_str_lines::str#2 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 Inlining constant with var siblings (const byte*) print_str_at::at#1 Inlining constant with var siblings (const byte*) print_str_at::at#1 Inlining constant with var siblings (const byte*) print_set_screen::screen#0 @@ -17582,30 +17582,30 @@ Inlining constant with var siblings (const byte*) get_vic_charset::return#3 Inlining constant with var siblings (const byte*) get_vic_charset::return#3 Inlining constant with var siblings (const byte) apply_preset::i#0 Inlining constant with var siblings (const byte) apply_preset::i#0 -Inlining constant with var siblings (const byte[]) apply_preset::preset#0 -Inlining constant with var siblings (const byte[]) apply_preset::preset#1 -Inlining constant with var siblings (const byte[]) apply_preset::preset#2 -Inlining constant with var siblings (const byte[]) apply_preset::preset#3 -Inlining constant with var siblings (const byte[]) apply_preset::preset#4 -Inlining constant with var siblings (const byte[]) apply_preset::preset#5 -Inlining constant with var siblings (const byte[]) apply_preset::preset#6 -Inlining constant with var siblings (const byte[]) apply_preset::preset#7 -Inlining constant with var siblings (const byte[]) apply_preset::preset#8 -Inlining constant with var siblings (const byte[]) apply_preset::preset#9 -Inlining constant with var siblings (const byte[]) apply_preset::preset#10 -Inlining constant with var siblings (const byte[]) apply_preset::preset#11 -Inlining constant with var siblings (const string) render_preset_name::name#0 -Inlining constant with var siblings (const string) render_preset_name::name#1 -Inlining constant with var siblings (const string) render_preset_name::name#2 -Inlining constant with var siblings (const string) render_preset_name::name#3 -Inlining constant with var siblings (const string) render_preset_name::name#4 -Inlining constant with var siblings (const string) render_preset_name::name#5 -Inlining constant with var siblings (const string) render_preset_name::name#6 -Inlining constant with var siblings (const string) render_preset_name::name#7 -Inlining constant with var siblings (const string) render_preset_name::name#8 -Inlining constant with var siblings (const string) render_preset_name::name#9 -Inlining constant with var siblings (const string) render_preset_name::name#10 -Inlining constant with var siblings (const string) render_preset_name::name#11 +Inlining constant with var siblings (const byte*) apply_preset::preset#0 +Inlining constant with var siblings (const byte*) apply_preset::preset#1 +Inlining constant with var siblings (const byte*) apply_preset::preset#2 +Inlining constant with var siblings (const byte*) apply_preset::preset#3 +Inlining constant with var siblings (const byte*) apply_preset::preset#4 +Inlining constant with var siblings (const byte*) apply_preset::preset#5 +Inlining constant with var siblings (const byte*) apply_preset::preset#6 +Inlining constant with var siblings (const byte*) apply_preset::preset#7 +Inlining constant with var siblings (const byte*) apply_preset::preset#8 +Inlining constant with var siblings (const byte*) apply_preset::preset#9 +Inlining constant with var siblings (const byte*) apply_preset::preset#10 +Inlining constant with var siblings (const byte*) apply_preset::preset#11 +Inlining constant with var siblings (const byte*) render_preset_name::name#0 +Inlining constant with var siblings (const byte*) render_preset_name::name#1 +Inlining constant with var siblings (const byte*) render_preset_name::name#2 +Inlining constant with var siblings (const byte*) render_preset_name::name#3 +Inlining constant with var siblings (const byte*) render_preset_name::name#4 +Inlining constant with var siblings (const byte*) render_preset_name::name#5 +Inlining constant with var siblings (const byte*) render_preset_name::name#6 +Inlining constant with var siblings (const byte*) render_preset_name::name#7 +Inlining constant with var siblings (const byte*) render_preset_name::name#8 +Inlining constant with var siblings (const byte*) render_preset_name::name#9 +Inlining constant with var siblings (const byte*) render_preset_name::name#10 +Inlining constant with var siblings (const byte*) render_preset_name::name#11 Inlining constant with var siblings (const byte) gfx_mode::dtv_control#0 Inlining constant with var siblings (const byte) gfx_mode::dtv_control#0 Inlining constant with var siblings (const byte) gfx_mode::dtv_control#0 @@ -17938,10 +17938,10 @@ Constant inlined form_mode::$10 = ((dword))(const byte*) FORM_CHARSET#0/(dword/s Constant inlined get_vic_charset::return#3 = (const byte*) VIC_CHARSET_ROM#0 Constant inlined gfx_init_plane_charset8::gfxa#0 = ((byte*))(word/signed word/dword/signed dword) 16384+(const dword) PLANE_CHARSET8#0&(word/signed word/dword/signed dword) 16383 Constant inlined form_mode::$12 = (const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -Constant inlined render_preset_name::$15 = (const string) render_preset_name::name#0 +Constant inlined render_preset_name::$15 = (const byte*) render_preset_name::name#0 Constant inlined form_mode::$11 = ((byte))((dword))(const byte*) FORM_CHARSET#0/(dword/signed dword) 65536 Constant inlined form_control::$3 = (const signed byte) FORM_CURSOR_BLINK#0/(byte/signed byte/word/signed word/dword/signed dword) 2 -Constant inlined render_preset_name::$16 = (const string) render_preset_name::name#1 +Constant inlined render_preset_name::$16 = (const byte*) render_preset_name::name#1 Constant inlined gfx_init_screen4::ch#0 = (const byte*) VIC_SCREEN4#0 Constant inlined get_vic_charset::return#0 = (const byte*) VIC_CHARSET_ROM#0 Constant inlined render_preset_name::$11 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 2 @@ -17953,11 +17953,11 @@ Constant inlined form_mode::$17 = >((word))(const dword) DTV_COLOR_BANK_DEFAULT# Constant inlined form_mode::$19 = ((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 Constant inlined gfx_init_plane_charset8::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined form_mode::$14 = <((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -Constant inlined render_preset_name::$17 = (const string) render_preset_name::name#2 +Constant inlined render_preset_name::$17 = (const byte*) render_preset_name::name#2 Constant inlined form_mode::$13 = ((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -Constant inlined render_preset_name::$18 = (const string) render_preset_name::name#3 +Constant inlined render_preset_name::$18 = (const byte*) render_preset_name::name#3 Constant inlined form_mode::$16 = ((word))(const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 -Constant inlined render_preset_name::$19 = (const string) render_preset_name::name#4 +Constant inlined render_preset_name::$19 = (const byte*) render_preset_name::name#4 Constant inlined gfx_init_screen3::cy#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined form_mode::$15 = (const dword) DTV_COLOR_BANK_DEFAULT#0/(word/signed word/dword/signed dword) 1024 Constant inlined form_mode::$9 = ((dword))(const byte*) FORM_CHARSET#0 @@ -17965,16 +17965,16 @@ Constant inlined bitmap_init::$13 = (byte/signed byte/word/signed word/dword/sig Constant inlined gfx_mode::$60 = (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) VIC_SCREEN0#0/(word/signed word/dword/signed dword) 16384 Constant inlined gfx_init_plane_8bppchunky::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined form_mode::$21 = (byte/signed byte/word/signed word/dword/signed dword) 3^((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -Constant inlined render_preset_name::$24 = (const string) render_preset_name::name#9 +Constant inlined render_preset_name::$24 = (const byte*) render_preset_name::name#9 Constant inlined form_mode::$20 = ((byte))((word))(const byte*) FORM_CHARSET#0/(word/signed word/dword/signed dword) 16384 -Constant inlined render_preset_name::$25 = (const string) render_preset_name::name#10 +Constant inlined render_preset_name::$25 = (const byte*) render_preset_name::name#10 Constant inlined form_mode::$23 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0|(byte/signed byte/word/signed word/dword/signed dword) 3 -Constant inlined render_preset_name::$26 = (const string) render_preset_name::name#11 +Constant inlined render_preset_name::$26 = (const byte*) render_preset_name::name#11 Constant inlined form_mode::$22 = (const byte) VIC_DEN#0|(const byte) VIC_RSEL#0 -Constant inlined render_preset_name::$20 = (const string) render_preset_name::name#5 -Constant inlined render_preset_name::$21 = (const string) render_preset_name::name#6 -Constant inlined render_preset_name::$22 = (const string) render_preset_name::name#7 -Constant inlined render_preset_name::$23 = (const string) render_preset_name::name#8 +Constant inlined render_preset_name::$20 = (const byte*) render_preset_name::name#5 +Constant inlined render_preset_name::$21 = (const byte*) render_preset_name::name#6 +Constant inlined render_preset_name::$22 = (const byte*) render_preset_name::name#7 +Constant inlined render_preset_name::$23 = (const byte*) render_preset_name::name#8 Constant inlined gfx_init_plane_fill::by#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined form_mode::$29 = ((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383/(word/signed word/dword/signed dword) 1024 Constant inlined form_mode::$28 = ((word))(const byte*) FORM_CHARSET#0&(word/signed word/dword/signed dword) 16383 @@ -18005,8 +18005,8 @@ Constant inlined dtvSetCpuBankSegment1::cpuBankIdx#6 = ((byte))(word/signed word Constant inlined gfx_init_charset::chargen#0 = (const byte*) CHARGEN#0 Constant inlined gfx_init_screen1::ch#0 = (const byte*) VIC_SCREEN1#0 Constant inlined gfx_init_charset::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined print_str_lines::str#2 = (const string) FORM_TEXT#0 -Constant inlined print_str_lines::str#1 = (const string) FORM_COLS#0 +Constant inlined print_str_lines::str#2 = (const byte[]) FORM_TEXT#0 +Constant inlined print_str_lines::str#1 = (const byte[]) FORM_COLS#0 Constant inlined gfx_init_screen1::cx#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined gfx_init_plane_vertical::by#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined gfx_mode::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -18075,36 +18075,36 @@ Constant inlined form_set_screen::y#0 = (byte/signed byte/word/signed word/dword Constant inlined form_set_screen::screen#0 = (const byte*) FORM_SCREEN#0 Constant inlined print_set_screen::screen#0 = (const byte*) COLS#0 Constant inlined print_set_screen::screen#1 = (const byte*) FORM_SCREEN#0 -Constant inlined $69 = (const string) print_hextab#0 +Constant inlined $69 = (const byte[]) print_hextab#0 Constant inlined dtvSetCpuBankSegment1::cpuBankIdx#12 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 Constant inlined dtvSetCpuBankSegment1::cpuBankIdx#10 = ((byte))(word/signed word/dword/signed dword) 16384/(word/signed word/dword/signed dword) 16384 Constant inlined gfx_init_charset::l#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined bitmap_init::$1 = >(const byte*) VIC_BITMAP#0 Succesful SSA optimization Pass2ConstantInlining -Inlining constant with var siblings (const string) render_preset_name::name#0 -Inlining constant with var siblings (const string) render_preset_name::name#1 -Inlining constant with var siblings (const string) render_preset_name::name#2 -Inlining constant with var siblings (const string) render_preset_name::name#3 -Inlining constant with var siblings (const string) render_preset_name::name#4 -Inlining constant with var siblings (const string) render_preset_name::name#5 -Inlining constant with var siblings (const string) render_preset_name::name#6 -Inlining constant with var siblings (const string) render_preset_name::name#7 -Inlining constant with var siblings (const string) render_preset_name::name#8 -Inlining constant with var siblings (const string) render_preset_name::name#9 -Inlining constant with var siblings (const string) render_preset_name::name#10 -Inlining constant with var siblings (const string) render_preset_name::name#11 -Inlining constant with var siblings (const string) render_preset_name::name#0 -Inlining constant with var siblings (const string) render_preset_name::name#1 -Inlining constant with var siblings (const string) render_preset_name::name#2 -Inlining constant with var siblings (const string) render_preset_name::name#3 -Inlining constant with var siblings (const string) render_preset_name::name#4 -Inlining constant with var siblings (const string) render_preset_name::name#5 -Inlining constant with var siblings (const string) render_preset_name::name#6 -Inlining constant with var siblings (const string) render_preset_name::name#7 -Inlining constant with var siblings (const string) render_preset_name::name#8 -Inlining constant with var siblings (const string) render_preset_name::name#9 -Inlining constant with var siblings (const string) render_preset_name::name#10 -Inlining constant with var siblings (const string) render_preset_name::name#11 +Inlining constant with var siblings (const byte*) render_preset_name::name#0 +Inlining constant with var siblings (const byte*) render_preset_name::name#1 +Inlining constant with var siblings (const byte*) render_preset_name::name#2 +Inlining constant with var siblings (const byte*) render_preset_name::name#3 +Inlining constant with var siblings (const byte*) render_preset_name::name#4 +Inlining constant with var siblings (const byte*) render_preset_name::name#5 +Inlining constant with var siblings (const byte*) render_preset_name::name#6 +Inlining constant with var siblings (const byte*) render_preset_name::name#7 +Inlining constant with var siblings (const byte*) render_preset_name::name#8 +Inlining constant with var siblings (const byte*) render_preset_name::name#9 +Inlining constant with var siblings (const byte*) render_preset_name::name#10 +Inlining constant with var siblings (const byte*) render_preset_name::name#11 +Inlining constant with var siblings (const byte*) render_preset_name::name#0 +Inlining constant with var siblings (const byte*) render_preset_name::name#1 +Inlining constant with var siblings (const byte*) render_preset_name::name#2 +Inlining constant with var siblings (const byte*) render_preset_name::name#3 +Inlining constant with var siblings (const byte*) render_preset_name::name#4 +Inlining constant with var siblings (const byte*) render_preset_name::name#5 +Inlining constant with var siblings (const byte*) render_preset_name::name#6 +Inlining constant with var siblings (const byte*) render_preset_name::name#7 +Inlining constant with var siblings (const byte*) render_preset_name::name#8 +Inlining constant with var siblings (const byte*) render_preset_name::name#9 +Inlining constant with var siblings (const byte*) render_preset_name::name#10 +Inlining constant with var siblings (const byte*) render_preset_name::name#11 Block Sequence Planned @begin @62 @end main main::@7 main::@1 main::@2 main::@9 gfx_mode gfx_mode::@23 gfx_mode::@1 gfx_mode::@24 gfx_mode::@2 gfx_mode::@25 gfx_mode::@3 gfx_mode::@26 gfx_mode::@4 gfx_mode::@27 gfx_mode::@5 gfx_mode::@28 gfx_mode::@6 gfx_mode::@29 gfx_mode::@7 gfx_mode::@30 gfx_mode::@8 gfx_mode::@31 gfx_mode::@9 gfx_mode::@46 gfx_mode::@47 gfx_mode::@48 gfx_mode::@49 gfx_mode::@50 gfx_mode::@10 gfx_mode::@11 gfx_mode::@32 gfx_mode::@33 gfx_mode::@13 gfx_mode::@19 gfx_mode::@21 gfx_mode::@51 gfx_mode::@52 gfx_mode::@return gfx_mode::@15 keyboard_event_get keyboard_event_get::@3 keyboard_event_get::@return keyboard_event_scan keyboard_event_scan::@1 keyboard_event_scan::@25 keyboard_event_scan::@13 keyboard_event_scan::@3 keyboard_event_scan::@20 keyboard_event_scan::@26 keyboard_event_scan::@21 keyboard_event_scan::@9 keyboard_event_scan::@27 keyboard_event_scan::@22 keyboard_event_scan::@10 keyboard_event_scan::@28 keyboard_event_scan::@23 keyboard_event_scan::@11 keyboard_event_scan::@29 keyboard_event_scan::@24 keyboard_event_scan::@return keyboard_event_scan::@4 keyboard_event_scan::@15 keyboard_event_scan::@16 keyboard_event_scan::@17 keyboard_event_scan::@5 keyboard_event_scan::@19 keyboard_event_scan::@7 keyboard_event_pressed keyboard_event_pressed::@return keyboard_matrix_read keyboard_matrix_read::@return get_vic_screen get_vic_screen::@10 get_vic_screen::@11 get_vic_screen::@12 get_vic_screen::@13 get_vic_screen::@return get_vic_screen::@9 get_vic_charset get_vic_charset::@4 get_vic_charset::@return get_vic_charset::@3 get_plane get_plane::@28 get_plane::@29 get_plane::@30 get_plane::@31 get_plane::@32 get_plane::@33 get_plane::@34 get_plane::@35 get_plane::@36 get_plane::@37 get_plane::@38 get_plane::@39 get_plane::@40 get_plane::@return get_plane::@27 form_mode form_mode::@21 form_mode::@22 form_mode::@23 form_mode::@24 form_mode::@25 form_mode::@26 form_mode::@27 form_mode::@28 form_mode::@29 form_mode::@1 form_mode::@10 form_mode::@2 form_mode::@5 form_mode::@7 form_mode::@30 form_mode::@return form_mode::@8 form_mode::@18 form_mode::@31 form_mode::@32 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 render_preset_name::@return print_str_at print_str_at::@1 print_str_at::@return print_str_at::@2 form_render_values form_render_values::@1 form_render_values::@3 form_render_values::@return form_field_ptr form_field_ptr::@return apply_preset apply_preset::@24 apply_preset::@25 apply_preset::@26 apply_preset::@27 apply_preset::@28 apply_preset::@29 apply_preset::@30 apply_preset::@31 apply_preset::@32 apply_preset::@33 apply_preset::@34 apply_preset::@22 apply_preset::@23 apply_preset::@return form_control form_control::@33 form_control::@15 form_control::@1 form_control::@16 form_control::@3 form_control::@34 form_control::@35 form_control::@18 form_control::@19 form_control::@20 form_control::@7 form_control::@return form_control::@5 form_control::@22 form_control::@4 form_control::@24 form_control::@25 form_control::@26 form_control::@12 form_control::@10 form_control::@28 form_control::@9 form_control::@30 form_control::@2 form_set_screen form_set_screen::@1 form_set_screen::@return print_str_lines print_str_lines::@1 print_str_lines::@return print_str_lines::@4 print_str_lines::@8 print_str_lines::@5 print_str_lines::@9 print_ln print_ln::@1 print_ln::@return print_cls print_cls::@1 print_cls::@return print_set_screen print_set_screen::@return gfx_init gfx_init::@1 gfx_init::@2 gfx_init::@3 gfx_init::@4 gfx_init::@5 gfx_init::@6 gfx_init::@7 gfx_init::@8 gfx_init::@9 gfx_init::@10 gfx_init::@11 gfx_init::@12 gfx_init::@13 gfx_init::@14 gfx_init::@return gfx_init_plane_full gfx_init_plane_full::@return gfx_init_plane_fill gfx_init_plane_fill::@5 gfx_init_plane_fill::@1 gfx_init_plane_fill::@2 gfx_init_plane_fill::@3 gfx_init_plane_fill::@4 gfx_init_plane_fill::@return dtvSetCpuBankSegment1 dtvSetCpuBankSegment1::@return gfx_init_plane_blank gfx_init_plane_blank::@return gfx_init_plane_vertical2 gfx_init_plane_vertical2::@return gfx_init_plane_horisontal2 gfx_init_plane_horisontal2::@1 gfx_init_plane_horisontal2::@2 gfx_init_plane_horisontal2::@3 gfx_init_plane_horisontal2::@4 gfx_init_plane_horisontal2::@return gfx_init_plane_vertical gfx_init_plane_vertical::@1 gfx_init_plane_vertical::@2 gfx_init_plane_vertical::@3 gfx_init_plane_vertical::@4 gfx_init_plane_vertical::@return gfx_init_plane_horisontal gfx_init_plane_horisontal::@1 gfx_init_plane_horisontal::@2 gfx_init_plane_horisontal::@5 gfx_init_plane_horisontal::@4 gfx_init_plane_horisontal::@7 gfx_init_plane_horisontal::@8 gfx_init_plane_horisontal::@return gfx_init_plane_horisontal::@3 gfx_init_plane_charset8 gfx_init_plane_charset8::@9 gfx_init_plane_charset8::@1 gfx_init_plane_charset8::@2 gfx_init_plane_charset8::@3 gfx_init_plane_charset8::@5 gfx_init_plane_charset8::@4 gfx_init_plane_charset8::@6 gfx_init_plane_charset8::@7 gfx_init_plane_charset8::@8 gfx_init_plane_charset8::@return gfx_init_plane_8bppchunky gfx_init_plane_8bppchunky::@1 gfx_init_plane_8bppchunky::@2 gfx_init_plane_8bppchunky::@4 gfx_init_plane_8bppchunky::@8 gfx_init_plane_8bppchunky::@3 gfx_init_plane_8bppchunky::@5 gfx_init_plane_8bppchunky::@6 gfx_init_plane_8bppchunky::@return gfx_init_vic_bitmap gfx_init_vic_bitmap::@3 gfx_init_vic_bitmap::@1 gfx_init_vic_bitmap::@5 gfx_init_vic_bitmap::@return bitmap_line bitmap_line::@15 bitmap_line::@16 bitmap_line::@17 bitmap_line::@return bitmap_line::@3 bitmap_line::@2 bitmap_line::@20 bitmap_line::@6 bitmap_line::@1 bitmap_line::@23 bitmap_line::@24 bitmap_line::@10 bitmap_line::@9 bitmap_line::@27 bitmap_line::@13 bitmap_line_xdyi bitmap_line_xdyi::@1 bitmap_line_xdyi::@5 bitmap_line_xdyi::@3 bitmap_line_xdyi::@2 bitmap_line_xdyi::@return bitmap_plot bitmap_plot::@return bitmap_line_ydxi bitmap_line_ydxi::@1 bitmap_line_ydxi::@5 bitmap_line_ydxi::@3 bitmap_line_ydxi::@2 bitmap_line_ydxi::@return bitmap_line_xdyd bitmap_line_xdyd::@1 bitmap_line_xdyd::@5 bitmap_line_xdyd::@3 bitmap_line_xdyd::@2 bitmap_line_xdyd::@return bitmap_line_ydxd bitmap_line_ydxd::@1 bitmap_line_ydxd::@5 bitmap_line_ydxd::@3 bitmap_line_ydxd::@2 bitmap_line_ydxd::@return bitmap_clear bitmap_clear::@1 bitmap_clear::@2 bitmap_clear::@3 bitmap_clear::@return bitmap_init bitmap_init::@1 bitmap_init::@5 bitmap_init::@2 bitmap_init::@3 bitmap_init::@7 bitmap_init::@4 bitmap_init::@return gfx_init_charset gfx_init_charset::@1 gfx_init_charset::@2 gfx_init_charset::@3 gfx_init_charset::@4 gfx_init_charset::@return gfx_init_screen4 gfx_init_screen4::@1 gfx_init_screen4::@2 gfx_init_screen4::@3 gfx_init_screen4::@return gfx_init_screen3 gfx_init_screen3::@1 gfx_init_screen3::@2 gfx_init_screen3::@3 gfx_init_screen3::@return gfx_init_screen2 gfx_init_screen2::@1 gfx_init_screen2::@2 gfx_init_screen2::@3 gfx_init_screen2::@return gfx_init_screen1 gfx_init_screen1::@1 gfx_init_screen1::@2 gfx_init_screen1::@3 gfx_init_screen1::@return gfx_init_screen0 gfx_init_screen0::@1 gfx_init_screen0::@2 gfx_init_screen0::@3 gfx_init_screen0::@return keyboard_init keyboard_init::@return Added new block during phi lifting gfx_mode::@53(between gfx_mode::@1 and gfx_mode::@2) Added new block during phi lifting gfx_mode::@54(between gfx_mode::@2 and gfx_mode::@3) @@ -19597,7 +19597,7 @@ render_preset_name::@33: scope:[render_preset_name] from render_preset_name::@3 [318] phi() [ ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 ] ) 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 - [319] (byte*) render_preset_name::name#12 ← phi( render_preset_name/(const string) render_preset_name::name#0 render_preset_name::@31/(const string) render_preset_name::name#9 render_preset_name::@32/(const string) render_preset_name::name#10 render_preset_name::@23/(const string) render_preset_name::name#1 render_preset_name::@24/(const string) render_preset_name::name#2 render_preset_name::@33/(const string) render_preset_name::name#11 render_preset_name::@25/(const string) render_preset_name::name#3 render_preset_name::@26/(const string) render_preset_name::name#4 render_preset_name::@27/(const string) render_preset_name::name#5 render_preset_name::@28/(const string) render_preset_name::name#6 render_preset_name::@29/(const string) render_preset_name::name#7 render_preset_name::@30/(const string) render_preset_name::name#8 ) [ render_preset_name::name#12 ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 render_preset_name::name#12 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 render_preset_name::name#12 ] ) + [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 ) [ render_preset_name::name#12 ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 render_preset_name::name#12 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 render_preset_name::name#12 ] ) [320] (byte*) print_str_at::str#1 ← (byte*) render_preset_name::name#12 [ print_str_at::str#1 ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#1 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#1 ] ) [321] call print_str_at [ ] ( main:2::form_mode:13::render_preset_name:271 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] main:2::form_mode:13::render_preset_name:305 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 ] ) to:render_preset_name::@return @@ -19631,7 +19631,7 @@ form_render_values::@1: scope:[form_render_values] from form_render_values form to:form_render_values::@3 form_render_values::@3: scope:[form_render_values] from form_render_values::@1 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_render_values::field#0 ] ) - [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) + [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) [337] (byte) form_render_values::idx#1 ← ++ (byte) form_render_values::idx#2 [ form_render_values::idx#1 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#1 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#1 ] ) [338] if((byte) form_render_values::idx#1<(const byte) form_fields_cnt#0) goto form_render_values::@1 [ form_render_values::idx#1 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#1 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#1 ] ) to:form_render_values::@return @@ -19771,7 +19771,7 @@ form_control::@26: scope:[form_control] from form_control::@25 [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) to:form_control::@12 form_control::@12: scope:[form_control] from form_control::@10 form_control::@25 form_control::@26 form_control::@28 - [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) + [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) to:form_control::@return form_control::@10: scope:[form_control] from form_control::@24 [401] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← ++ *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) @@ -19811,7 +19811,7 @@ form_set_screen::@return: scope:[form_set_screen] from form_set_screen::@1 [418] return [ ] ( main:2::form_mode:13::form_set_screen:267 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) to:@return print_str_lines: scope:[print_str_lines] from form_mode::@22 form_mode::@25 - [419] (byte*) print_str_lines::str#5 ← phi( form_mode::@22/(const string) FORM_COLS#0 form_mode::@25/(const string) FORM_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:259 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] ) + [419] (byte*) print_str_lines::str#5 ← phi( form_mode::@22/(const byte[]) FORM_COLS#0 form_mode::@25/(const byte[]) FORM_TEXT#0 ) [ print_str_lines::str#5 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:259 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_set_screen::screen#2 ] ) [420] (byte*~) print_char_cursor#77 ← (byte*) print_set_screen::screen#2 [ print_str_lines::str#5 print_char_cursor#77 print_set_screen::screen#2 ] ( main:2::form_mode:13::print_str_lines:259 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#77 print_set_screen::screen#2 ] main:2::form_mode:13::print_str_lines:265 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_lines::str#5 print_char_cursor#77 print_set_screen::screen#2 ] ) to:print_str_lines::@1 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 @@ -24941,7 +24941,7 @@ form_mode: { //SEG491 [259] call print_str_lines [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) //SEG492 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] print_str_lines_from_b22: - //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const string) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 + //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_COLS @@ -24976,7 +24976,7 @@ form_mode: { //SEG504 [265] call print_str_lines [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) //SEG505 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] print_str_lines_from_b25: - //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const string) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 + //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_TEXT @@ -25252,7 +25252,7 @@ render_preset_name: { b33: //SEG604 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] b22_from_b33: - //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_11 @@ -25260,7 +25260,7 @@ render_preset_name: { jmp b22 //SEG606 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] b22_from_render_preset_name: - //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_0 @@ -25268,7 +25268,7 @@ render_preset_name: { jmp b22 //SEG608 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] b22_from_b23: - //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_1 @@ -25276,7 +25276,7 @@ render_preset_name: { jmp b22 //SEG610 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] b22_from_b24: - //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_2 @@ -25284,7 +25284,7 @@ render_preset_name: { jmp b22 //SEG612 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] b22_from_b25: - //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_3 @@ -25292,7 +25292,7 @@ render_preset_name: { jmp b22 //SEG614 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] b22_from_b26: - //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_4 @@ -25300,7 +25300,7 @@ render_preset_name: { jmp b22 //SEG616 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] b22_from_b27: - //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_5 @@ -25308,7 +25308,7 @@ render_preset_name: { jmp b22 //SEG618 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] b22_from_b28: - //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_6 @@ -25316,7 +25316,7 @@ render_preset_name: { jmp b22 //SEG620 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] b22_from_b29: - //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_7 @@ -25324,7 +25324,7 @@ render_preset_name: { jmp b22 //SEG622 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] b22_from_b30: - //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_8 @@ -25332,7 +25332,7 @@ render_preset_name: { jmp b22 //SEG624 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] b22_from_b31: - //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_9 @@ -25340,7 +25340,7 @@ render_preset_name: { jmp b22 //SEG626 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] b22_from_b32: - //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_10 @@ -25460,7 +25460,7 @@ form_render_values: { sta field lda form_field_ptr.return_2+1 sta field+1 - //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy idx lda form_fields_val,y tay @@ -25932,7 +25932,7 @@ form_control: { jmp b12 //SEG798 form_control::@12 b12: - //SEG799 [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG799 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy form_field_idx lda form_fields_val,y tay @@ -28902,7 +28902,7 @@ Statement [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) Statement [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] Statement [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_render_values::field#0 ] ) always clobbers reg byte a -Statement [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y +Statement [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte y as potential for zp ZP_BYTE:41 [ form_render_values::idx#2 form_render_values::idx#1 ] Statement [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::form_mode:13::form_render_values:269::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::form_mode:13::form_render_values:303::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::form_mode:13::form_control:294::form_field_ptr:365 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:42 [ form_field_ptr::field_idx#2 form_field_ptr::field_idx#1 form_field_ptr::field_idx#0 ] @@ -28921,7 +28921,7 @@ Statement [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (co Statement [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ) always clobbers reg byte a Statement [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a Statement [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y +Statement [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y Statement [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y Statement [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a Statement [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) always clobbers reg byte a reg byte y @@ -29259,7 +29259,7 @@ Statement [325] if(*((byte*) print_str_at::str#2)!=(byte) '@') goto print_str_at Statement [327] *((byte*) print_str_at::at#2) ← *((byte*) print_str_at::str#2) [ print_str_at::str#2 print_str_at::at#2 ] ( main:2::form_mode:13::render_preset_name:271::print_str_at:321 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 print_str_at::str#2 print_str_at::at#2 ] main:2::form_mode:13::render_preset_name:305::print_str_at:321 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 print_str_at::str#2 print_str_at::at#2 ] ) always clobbers reg byte a reg byte y Statement [334] (byte*) form_field_ptr::return#2 ← (byte*) form_field_ptr::return#0 [ form_render_values::idx#2 form_field_ptr::return#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::return#2 ] ) always clobbers reg byte a Statement [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_render_values::field#0 ] ) always clobbers reg byte a -Statement [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y +Statement [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) always clobbers reg byte a reg byte y Statement [342] (word~) form_field_ptr::$2 ← *((const byte[25]) form_line_hi#0 + (byte) form_field_ptr::y#0) w= *((const byte[25]) form_line_lo#0 + (byte) form_field_ptr::y#0) [ form_field_ptr::field_idx#2 form_field_ptr::$2 ] ( main:2::form_mode:13::form_render_values:269::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::form_mode:13::form_render_values:303::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::field_idx#2 form_field_ptr::$2 ] main:2::form_mode:13::form_control:294::form_field_ptr:365 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::field_idx#2 form_field_ptr::$2 ] ) always clobbers reg byte a Statement [344] (byte*) form_field_ptr::return#0 ← (byte*)(word~) form_field_ptr::$2 + (byte) form_field_ptr::x#0 [ form_field_ptr::return#0 ] ( main:2::form_mode:13::form_render_values:269::form_field_ptr:333 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_field_ptr::return#0 ] main:2::form_mode:13::form_render_values:303::form_field_ptr:333 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_field_ptr::return#0 ] main:2::form_mode:13::form_control:294::form_field_ptr:365 [ form_mode::preset_current#6 keyboard_events_size#47 form_cursor_count#21 form_field_idx#28 form_field_ptr::return#0 ] ) always clobbers reg byte a Statement [360] *((const byte[]) form_fields_val#0 + (byte) apply_preset::i#2) ← *((byte*) apply_preset::preset#13 + (byte) apply_preset::i#2) [ apply_preset::preset#13 apply_preset::i#2 ] ( main:2::form_mode:13::apply_preset:301 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 apply_preset::preset#13 apply_preset::i#2 ] ) always clobbers reg byte a @@ -29274,7 +29274,7 @@ Statement [383] (byte~) form_control::$12 ← (byte) keyboard_modifiers#21 & (co Statement [395] (byte~) form_control::$22 ← (byte) keyboard_modifiers#21 & (const byte) KEY_MODIFIER_SHIFT#0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$22 ] ) always clobbers reg byte a Statement [398] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)!=(byte/word/signed word/dword/signed dword) 255) goto form_control::@12 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a Statement [399] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← *((const byte[]) form_fields_max#0 + (byte) form_field_idx#28) [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a -Statement [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y +Statement [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y Statement [402] if(*((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)<=*((const byte[]) form_fields_max#0 + (byte) form_field_idx#28)) goto form_control::@12 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a reg byte y Statement [403] *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_control::field#0 form_cursor_count#15 ] ) always clobbers reg byte a Statement [406] (byte/word/dword~) form_control::$6 ← *((byte*) form_control::field#0) | (byte/word/signed word/dword/signed dword) 128 [ keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$6 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#47 form_field_idx#28 form_control::field#0 form_cursor_count#15 form_control::$6 ] ) always clobbers reg byte a reg byte y @@ -31749,7 +31749,7 @@ form_mode: { //SEG491 [259] call print_str_lines [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) //SEG492 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] print_str_lines_from_b22: - //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const string) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 + //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_COLS @@ -31784,7 +31784,7 @@ form_mode: { //SEG504 [265] call print_str_lines [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) //SEG505 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] print_str_lines_from_b25: - //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const string) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 + //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_TEXT @@ -32041,7 +32041,7 @@ render_preset_name: { b33: //SEG604 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] b22_from_b33: - //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_11 @@ -32049,7 +32049,7 @@ render_preset_name: { jmp b22 //SEG606 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] b22_from_render_preset_name: - //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_0 @@ -32057,7 +32057,7 @@ render_preset_name: { jmp b22 //SEG608 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] b22_from_b23: - //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_1 @@ -32065,7 +32065,7 @@ render_preset_name: { jmp b22 //SEG610 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] b22_from_b24: - //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_2 @@ -32073,7 +32073,7 @@ render_preset_name: { jmp b22 //SEG612 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] b22_from_b25: - //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_3 @@ -32081,7 +32081,7 @@ render_preset_name: { jmp b22 //SEG614 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] b22_from_b26: - //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_4 @@ -32089,7 +32089,7 @@ render_preset_name: { jmp b22 //SEG616 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] b22_from_b27: - //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_5 @@ -32097,7 +32097,7 @@ render_preset_name: { jmp b22 //SEG618 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] b22_from_b28: - //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_6 @@ -32105,7 +32105,7 @@ render_preset_name: { jmp b22 //SEG620 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] b22_from_b29: - //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_7 @@ -32113,7 +32113,7 @@ render_preset_name: { jmp b22 //SEG622 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] b22_from_b30: - //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_8 @@ -32121,7 +32121,7 @@ render_preset_name: { jmp b22 //SEG624 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] b22_from_b31: - //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_9 @@ -32129,7 +32129,7 @@ render_preset_name: { jmp b22 //SEG626 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] b22_from_b32: - //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_10 @@ -32239,7 +32239,7 @@ form_render_values: { b3: //SEG661 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_render_values::field#0 ] ) // (byte*) form_render_values::field#0 = (byte*) form_field_ptr::return#2 // register copy zp ZP_WORD:3 - //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy idx lda form_fields_val,y tay @@ -32656,7 +32656,7 @@ form_control: { jmp b12 //SEG798 form_control::@12 b12: - //SEG799 [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx + //SEG799 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx lda form_fields_val,x tay lda print_hextab,y @@ -36422,13 +36422,13 @@ FINAL SYMBOL TABLE (byte*) FORM_CHARSET (const byte*) FORM_CHARSET#0 FORM_CHARSET = ((byte*))(word/signed word/dword/signed dword) 6144 (byte[]) FORM_COLS -(const string) FORM_COLS#0 FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm @"+(string) " nnnnnnnnnnnn jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) "@" +(const byte[]) FORM_COLS#0 FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm @"+(string) " nnnnnnnnnnnn jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) "@" (signed byte) FORM_CURSOR_BLINK (const signed byte) FORM_CURSOR_BLINK#0 FORM_CURSOR_BLINK = (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*) FORM_SCREEN (const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) FORM_TEXT -(const string) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@" +(const byte[]) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@" (byte) KEY_COMMODORE (const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61 (byte) KEY_CRSR_DOWN @@ -37645,7 +37645,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:3 101.0 (byte*) print_cls::sc#2 sc zp ZP_WORD:3 152.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:16 8.749999999999998 (byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:16 2004.0 @@ -37702,19 +37702,19 @@ FINAL SYMBOL TABLE (byte) render_preset_name::idx#1 reg byte a 202.0 (byte) render_preset_name::idx#10 reg byte a 11.363636363636362 (byte*) render_preset_name::name -(const string) render_preset_name::name#0 name#0 = (string) "Standard Charset @" -(const string) render_preset_name::name#1 name#1 = (string) "Extended Color Charset @" -(const string) render_preset_name::name#10 name#10 = (string) "8bpp Pixel Cell @" -(const string) render_preset_name::name#11 name#11 = (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#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 -(const string) render_preset_name::name#2 name#2 = (string) "Standard Bitmap @" -(const string) render_preset_name::name#3 name#3 = (string) "Multicolor Bitmap @" -(const string) render_preset_name::name#4 name#4 = (string) "Hicolor Charset @" -(const string) render_preset_name::name#5 name#5 = (string) "Hicolor Extended Color Charset@" -(const string) render_preset_name::name#6 name#6 = (string) "Twoplane Bitmap @" -(const string) render_preset_name::name#7 name#7 = (string) "Chunky 8bpp @" -(const string) render_preset_name::name#8 name#8 = (string) "Sixs Fred @" -(const string) render_preset_name::name#9 name#9 = (string) "Sixs Fred 2 @" +(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#4 name#4 = (string) "Hicolor Charset @" +(const byte*) render_preset_name::name#5 name#5 = (string) "Hicolor Extended Color Charset@" +(const byte*) render_preset_name::name#6 name#6 = (string) "Twoplane Bitmap @" +(const byte*) render_preset_name::name#7 name#7 = (string) "Chunky 8bpp @" +(const byte*) render_preset_name::name#8 name#8 = (string) "Sixs Fred @" +(const byte*) render_preset_name::name#9 name#9 = (string) "Sixs Fred 2 @" reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] @@ -39253,7 +39253,7 @@ form_mode: { //SEG490 form_mode::@22 //SEG491 [259] call print_str_lines [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) //SEG492 [419] phi from form_mode::@22 to print_str_lines [phi:form_mode::@22->print_str_lines] - //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const string) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 + //SEG493 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_COLS#0 [phi:form_mode::@22->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_COLS @@ -39277,7 +39277,7 @@ form_mode: { //SEG503 form_mode::@25 //SEG504 [265] call print_str_lines [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ( main:2::form_mode:13 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 ] ) //SEG505 [419] phi from form_mode::@25 to print_str_lines [phi:form_mode::@25->print_str_lines] - //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const string) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 + //SEG506 [419] phi (byte*) print_str_lines::str#5 = (const byte[]) FORM_TEXT#0 [phi:form_mode::@25->print_str_lines#0] -- pbuz1=pbuc1 lda #FORM_TEXT @@ -39467,7 +39467,7 @@ render_preset_name: { //SEG602 [318] phi from render_preset_name::@32 to render_preset_name::@33 [phi:render_preset_name::@32->render_preset_name::@33] //SEG603 render_preset_name::@33 //SEG604 [319] phi from render_preset_name::@33 to render_preset_name::@22 [phi:render_preset_name::@33->render_preset_name::@22] - //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG605 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#11 [phi:render_preset_name::@33->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_11 @@ -39475,7 +39475,7 @@ render_preset_name: { jmp b22 //SEG606 [319] phi from render_preset_name to render_preset_name::@22 [phi:render_preset_name->render_preset_name::@22] b1: - //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG607 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#0 [phi:render_preset_name->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_0 @@ -39483,7 +39483,7 @@ render_preset_name: { jmp b22 //SEG608 [319] phi from render_preset_name::@23 to render_preset_name::@22 [phi:render_preset_name::@23->render_preset_name::@22] b2: - //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG609 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#1 [phi:render_preset_name::@23->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_1 @@ -39491,7 +39491,7 @@ render_preset_name: { jmp b22 //SEG610 [319] phi from render_preset_name::@24 to render_preset_name::@22 [phi:render_preset_name::@24->render_preset_name::@22] b3: - //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG611 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#2 [phi:render_preset_name::@24->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_2 @@ -39499,7 +39499,7 @@ render_preset_name: { jmp b22 //SEG612 [319] phi from render_preset_name::@25 to render_preset_name::@22 [phi:render_preset_name::@25->render_preset_name::@22] b4: - //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG613 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#3 [phi:render_preset_name::@25->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_3 @@ -39507,7 +39507,7 @@ render_preset_name: { jmp b22 //SEG614 [319] phi from render_preset_name::@26 to render_preset_name::@22 [phi:render_preset_name::@26->render_preset_name::@22] b5: - //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG615 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#4 [phi:render_preset_name::@26->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_4 @@ -39515,7 +39515,7 @@ render_preset_name: { jmp b22 //SEG616 [319] phi from render_preset_name::@27 to render_preset_name::@22 [phi:render_preset_name::@27->render_preset_name::@22] b6: - //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG617 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#5 [phi:render_preset_name::@27->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_5 @@ -39523,7 +39523,7 @@ render_preset_name: { jmp b22 //SEG618 [319] phi from render_preset_name::@28 to render_preset_name::@22 [phi:render_preset_name::@28->render_preset_name::@22] b7: - //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG619 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#6 [phi:render_preset_name::@28->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_6 @@ -39531,7 +39531,7 @@ render_preset_name: { jmp b22 //SEG620 [319] phi from render_preset_name::@29 to render_preset_name::@22 [phi:render_preset_name::@29->render_preset_name::@22] b8: - //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG621 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#7 [phi:render_preset_name::@29->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_7 @@ -39539,7 +39539,7 @@ render_preset_name: { jmp b22 //SEG622 [319] phi from render_preset_name::@30 to render_preset_name::@22 [phi:render_preset_name::@30->render_preset_name::@22] b9: - //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG623 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#8 [phi:render_preset_name::@30->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_8 @@ -39547,7 +39547,7 @@ render_preset_name: { jmp b22 //SEG624 [319] phi from render_preset_name::@31 to render_preset_name::@22 [phi:render_preset_name::@31->render_preset_name::@22] b10: - //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG625 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#9 [phi:render_preset_name::@31->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_9 @@ -39555,7 +39555,7 @@ render_preset_name: { jmp b22 //SEG626 [319] phi from render_preset_name::@32 to render_preset_name::@22 [phi:render_preset_name::@32->render_preset_name::@22] b11: - //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const string) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 + //SEG627 [319] phi (byte*) render_preset_name::name#12 = (const byte*) render_preset_name::name#10 [phi:render_preset_name::@32->render_preset_name::@22#0] -- pbuz1=pbuc1 lda #name_10 @@ -39648,7 +39648,7 @@ form_render_values: { //SEG660 form_render_values::@3 //SEG661 [335] (byte*) form_render_values::field#0 ← (byte*) form_field_ptr::return#2 [ form_render_values::idx#2 form_render_values::field#0 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 form_render_values::field#0 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 form_render_values::field#0 ] ) // (byte*) form_render_values::field#0 = (byte*) form_field_ptr::return#2 // register copy zp ZP_WORD:3 - //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 + //SEG662 [336] *((byte*) form_render_values::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_render_values::idx#2)) [ form_render_values::idx#2 ] ( main:2::form_mode:13::form_render_values:269 [ form_cursor_count#1 keyboard_events_size#27 form_field_idx#1 form_render_values::idx#2 ] main:2::form_mode:13::form_render_values:303 [ form_cursor_count#16 keyboard_events_size#24 form_field_idx#18 form_mode::preset_current#1 form_render_values::idx#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuz2 ldy idx lda form_fields_val,y tay @@ -39988,7 +39988,7 @@ form_control: { sta form_fields_val,x //SEG798 form_control::@12 b12: - //SEG799 [400] *((byte*) form_control::field#0) ← *((const string) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx + //SEG799 [400] *((byte*) form_control::field#0) ← *((const byte[]) print_hextab#0 + *((const byte[]) form_fields_val#0 + (byte) form_field_idx#28)) [ keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ( main:2::form_mode:13::form_control:294 [ form_mode::preset_current#6 keyboard_events_size#24 form_field_idx#28 form_cursor_count#15 ] ) -- _deref_pbuz1=pbuc1_derefidx_pbuc2_derefidx_vbuxx lda form_fields_val,x tay lda print_hextab,y diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym index 7b20ed986..bb9930d4d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxexplorer.sym @@ -86,13 +86,13 @@ (byte*) FORM_CHARSET (const byte*) FORM_CHARSET#0 FORM_CHARSET = ((byte*))(word/signed word/dword/signed dword) 6144 (byte[]) FORM_COLS -(const string) FORM_COLS#0 FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm @"+(string) " nnnnnnnnnnnn jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) "@" +(const byte[]) FORM_COLS#0 FORM_COLS = (string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@"+(string) " @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm ooooooooo @"+(string) " nnnnnnnnnnnn mmmmmmmmmm @"+(string) " nnnnnnnnnnnn jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) " nnnnnnnnnnnn mmmmmmmmmm jjjjjjjjj @"+(string) "@" (signed byte) FORM_CURSOR_BLINK (const signed byte) FORM_CURSOR_BLINK#0 FORM_CURSOR_BLINK = (byte/signed byte/word/signed word/dword/signed dword) 40 (byte*) FORM_SCREEN (const byte*) FORM_SCREEN#0 FORM_SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) FORM_TEXT -(const string) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@" +(const byte[]) FORM_TEXT#0 FORM_TEXT = (string) " C64 DTV Graphics Mode Explorer @"+(string) " @"+(string) " PRESET 0 Standard Charset @"+(string) " @"+(string) " CONTROL PLANE A VIC II @"+(string) " bmm 0 pattern p0 screen s0 @"+(string) " mcm 0 start 00 gfx g0 @"+(string) " ecm 0 step 00 colors c0 @"+(string) " hicolor 0 modulo 00 @"+(string) " linear 0 COLORS @"+(string) " color off 0 PLANE B palet 0 @"+(string) " chunky 0 pattern p0 bgcol0 00 @"+(string) " border off 0 start 00 bgcol1 00 @"+(string) " overscan 0 step 00 bgcol2 00 @"+(string) " modulo 00 bgcol3 00 @"+(string) "@" (byte) KEY_COMMODORE (const byte) KEY_COMMODORE#0 KEY_COMMODORE = (byte/signed byte/word/signed word/dword/signed dword) 61 (byte) KEY_CRSR_DOWN @@ -1309,7 +1309,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:3 101.0 (byte*) print_cls::sc#2 sc zp ZP_WORD:3 152.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#2 print_line_cursor zp ZP_WORD:16 8.749999999999998 (byte*) print_line_cursor#21 print_line_cursor zp ZP_WORD:16 2004.0 @@ -1366,19 +1366,19 @@ (byte) render_preset_name::idx#1 reg byte a 202.0 (byte) render_preset_name::idx#10 reg byte a 11.363636363636362 (byte*) render_preset_name::name -(const string) render_preset_name::name#0 name#0 = (string) "Standard Charset @" -(const string) render_preset_name::name#1 name#1 = (string) "Extended Color Charset @" -(const string) render_preset_name::name#10 name#10 = (string) "8bpp Pixel Cell @" -(const string) render_preset_name::name#11 name#11 = (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#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 -(const string) render_preset_name::name#2 name#2 = (string) "Standard Bitmap @" -(const string) render_preset_name::name#3 name#3 = (string) "Multicolor Bitmap @" -(const string) render_preset_name::name#4 name#4 = (string) "Hicolor Charset @" -(const string) render_preset_name::name#5 name#5 = (string) "Hicolor Extended Color Charset@" -(const string) render_preset_name::name#6 name#6 = (string) "Twoplane Bitmap @" -(const string) render_preset_name::name#7 name#7 = (string) "Chunky 8bpp @" -(const string) render_preset_name::name#8 name#8 = (string) "Sixs Fred @" -(const string) render_preset_name::name#9 name#9 = (string) "Sixs Fred 2 @" +(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#4 name#4 = (string) "Hicolor Charset @" +(const byte*) render_preset_name::name#5 name#5 = (string) "Hicolor Extended Color Charset@" +(const byte*) render_preset_name::name#6 name#6 = (string) "Twoplane Bitmap @" +(const byte*) render_preset_name::name#7 name#7 = (string) "Chunky 8bpp @" +(const byte*) render_preset_name::name#8 name#8 = (string) "Sixs Fred @" +(const byte*) render_preset_name::name#9 name#9 = (string) "Sixs Fred 2 @" reg byte y [ gfx_mode::dtv_control#12 gfx_mode::dtv_control#6 gfx_mode::dtv_control#13 gfx_mode::dtv_control#5 gfx_mode::dtv_control#11 gfx_mode::dtv_control#4 gfx_mode::dtv_control#10 gfx_mode::dtv_control#15 gfx_mode::dtv_control#14 gfx_mode::dtv_control#2 gfx_mode::dtv_control#3 ] reg byte y [ gfx_mode::vic_control#4 gfx_mode::vic_control#2 gfx_mode::vic_control#5 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg index cfeec302c..9cc82522f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.cfg @@ -1503,7 +1503,7 @@ print_str_lines: scope:[print_str_lines] from menu::@48 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 [866] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*) print_line_cursor#19 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) [866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#101 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) - [866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const string) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) + [866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) to:print_str_lines::@return print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log index 923bf4a59..f716f97a2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.log @@ -14337,9 +14337,9 @@ Constant (const string) $18 = "C64DTV Graphics Modes CCLHBME@"+" Succesful SSA optimization Pass2ConstantIdentification Constant (const string) $19 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@" Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) MENU_TEXT#0 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"+"@" +Constant (const byte[]) MENU_TEXT#0 = "C64DTV Graphics Modes CCLHBME@"+" OHIIMCC@"+" LUNCMMM@"+"----------------------------------------@"+"1. Standard Char (V) 0000000@"+"2. Extended Color Char (V) 0000001@"+"3. Multicolor Char (V) 0000010@"+"4. Standard Bitmap (V) 0000100@"+"5. Multicolor Bitmap (V) 0000110@"+"6. High Color Standard Char (H) 0001000@"+"7. High Extended Color Char (H) 0001001@"+"8. High Multicolor Char (H) 0001010@"+"9. High Multicolor Bitmap (H) 0001110@"+"a. Sixs Fred 2 (D) 0010111@"+"b. Two Plane Bitmap (D) 0011101@"+"c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+"d. 8bpp Pixel Cell (D) 0111011@"+"e. Chunky 8bpp Bitmap (D) 1111011@"+"----------------------------------------@"+" (V) vicII (H) vicII+hicol (D) c64dtv@"+"@" Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) print_str_lines::str#1 = MENU_TEXT#0 +Constant (const byte*) print_str_lines::str#1 = MENU_TEXT#0 Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in assignment *(mode_stdbitmap::lines_x#0+1 + mode_stdbitmap::$28) Consolidated array index constant in assignment *(mode_stdbitmap::lines_y#0+1 + mode_stdbitmap::$29) @@ -15128,9 +15128,9 @@ Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankI Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 Inlining constant with var siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 Inlining constant with different constant siblings (const byte) dtvSetCpuBankSegment1::cpuBankIdx#0 -Inlining constant with var siblings (const string) print_str_lines::str#1 -Inlining constant with var siblings (const string) print_str_lines::str#1 -Inlining constant with var siblings (const string) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 +Inlining constant with var siblings (const byte*) print_str_lines::str#1 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) keyboard_key_pressed::key#0 @@ -15649,7 +15649,7 @@ Constant inlined mode_ecmchar::cx#0 = (byte/signed byte/word/signed word/dword/s Constant inlined mode_8bppchunkybmm::$7 = (const byte) VIC_ECM#0|(const byte) VIC_DEN#0|(const byte) VIC_RSEL#0 Constant inlined mode_8bppchunkybmm::$4 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0 Constant inlined mode_8bppchunkybmm::$5 = (const byte) DTV_HIGHCOLOR#0|(const byte) DTV_LINEAR#0|(const byte) DTV_CHUNKY#0|(const byte) DTV_COLORRAM_OFF#0 -Constant inlined print_str_lines::str#1 = (const string) MENU_TEXT#0 +Constant inlined print_str_lines::str#1 = (const byte[]) MENU_TEXT#0 Constant inlined mode_twoplanebitmap::ax#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mode_sixsfred2::ax#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined keyboard_key_pressed::key#10 = (const byte) KEY_D#0 @@ -17954,7 +17954,7 @@ print_str_lines: scope:[print_str_lines] from menu::@48 print_str_lines::@1: scope:[print_str_lines] from print_str_lines print_str_lines::@9 [866] (byte*) print_line_cursor#17 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*) print_line_cursor#19 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) [866] (byte*) print_char_cursor#19 ← phi( print_str_lines/(const byte*) menu::SCREEN#0 print_str_lines::@9/(byte*~) print_char_cursor#101 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) - [866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const string) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) + [866] (byte*) print_str_lines::str#2 ← phi( print_str_lines/(const byte[]) MENU_TEXT#0 print_str_lines::@9/(byte*) print_str_lines::str#0 ) [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) [867] if(*((byte*) print_str_lines::str#2)!=(byte) '@') goto print_str_lines::@4 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ( main:2::menu:9::print_str_lines:33 [ print_str_lines::str#2 print_char_cursor#19 print_line_cursor#17 ] ) to:print_str_lines::@return print_str_lines::@return: scope:[print_str_lines] from print_str_lines::@1 @@ -25137,7 +25137,7 @@ print_str_lines: { sta print_char_cursor lda #>menu.SCREEN sta print_char_cursor+1 - //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const string) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 + //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 lda #MENU_TEXT @@ -31231,7 +31231,7 @@ print_str_lines: { sta print_char_cursor lda #>menu.SCREEN sta print_char_cursor+1 - //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const string) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 + //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 lda #MENU_TEXT @@ -32410,7 +32410,7 @@ FINAL SYMBOL TABLE (byte) LIGHT_GREEN (const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) 13 (byte[]) MENU_TEXT -(const string) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@" +(const byte[]) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@" (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) PROCPORT_DDR @@ -37276,7 +37276,7 @@ print_str_lines: { sta print_char_cursor lda #>menu.SCREEN sta print_char_cursor+1 - //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const string) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 + //SEG1610 [866] phi (byte*) print_str_lines::str#2 = (const byte[]) MENU_TEXT#0 [phi:print_str_lines->print_str_lines::@1#2] -- pbuz1=pbuc1 lda #MENU_TEXT diff --git a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym index 2323e7652..16c803b68 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/c64dtv-gfxmodes.sym @@ -122,7 +122,7 @@ (byte) LIGHT_GREEN (const byte) LIGHT_GREEN#0 LIGHT_GREEN = (byte/signed byte/word/signed word/dword/signed dword) 13 (byte[]) MENU_TEXT -(const string) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@" +(const byte[]) MENU_TEXT#0 MENU_TEXT = (string) "C64DTV Graphics Modes CCLHBME@"+(string) " OHIIMCC@"+(string) " LUNCMMM@"+(string) "----------------------------------------@"+(string) "1. Standard Char (V) 0000000@"+(string) "2. Extended Color Char (V) 0000001@"+(string) "3. Multicolor Char (V) 0000010@"+(string) "4. Standard Bitmap (V) 0000100@"+(string) "5. Multicolor Bitmap (V) 0000110@"+(string) "6. High Color Standard Char (H) 0001000@"+(string) "7. High Extended Color Char (H) 0001001@"+(string) "8. High Multicolor Char (H) 0001010@"+(string) "9. High Multicolor Bitmap (H) 0001110@"+(string) "a. Sixs Fred 2 (D) 0010111@"+(string) "b. Two Plane Bitmap (D) 0011101@"+(string) "c. Sixs Fred (2 Plane MC BM) (D) 0011111@"+(string) "d. 8bpp Pixel Cell (D) 0111011@"+(string) "e. Chunky 8bpp Bitmap (D) 1111011@"+(string) "----------------------------------------@"+(string) " (V) vicII (H) vicII+hicol (D) c64dtv@"+(string) "@" (byte*) PROCPORT (const byte*) PROCPORT#0 PROCPORT = ((byte*))(byte/signed byte/word/signed word/dword/signed dword) 1 (byte*) PROCPORT_DDR diff --git a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log index 94ae1fd92..bec4cb33a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/chargen-analysis.log @@ -3469,10 +3469,10 @@ Constant (const byte) KEY_Q#0 = 62 Constant (const byte[8]) keyboard_matrix_row_bitmask#0 = { 254, 253, 251, 247, 239, 223, 191, 127 } Constant (const byte[8]) keyboard_matrix_col_bitmask#0 = { 1, 2, 4, 8, 16, 32, 64, 128 } Constant (const byte*) SCREEN#0 = ((byte*))1024 -Constant (const string) print_str_at::str#0 = main::str -Constant (const string) print_str_at::str#1 = main::str1 -Constant (const string) print_str_at::str#2 = main::str2 -Constant (const string) print_str_at::str#3 = main::str3 +Constant (const byte*) print_str_at::str#0 = main::str +Constant (const byte*) print_str_at::str#1 = main::str1 +Constant (const byte*) print_str_at::str#2 = main::str2 +Constant (const byte*) print_str_at::str#3 = main::str3 Constant (const byte) main::i#0 = 0 Constant (const byte) plot_chargen::ch#0 = 32 Constant (const byte) plot_chargen::shift#0 = 0 @@ -3696,18 +3696,18 @@ Inlining constant with var siblings (const byte) main::pressed#0 Inlining constant with var siblings (const byte) main::pressed#0 Inlining constant with var siblings (const byte*) main::sc#0 Inlining constant with var siblings (const byte*) main::sc#0 -Inlining constant with var siblings (const string) print_str_at::str#0 -Inlining constant with var siblings (const string) print_str_at::str#0 -Inlining constant with var siblings (const string) print_str_at::str#0 -Inlining constant with var siblings (const string) print_str_at::str#1 -Inlining constant with var siblings (const string) print_str_at::str#1 -Inlining constant with var siblings (const string) print_str_at::str#1 -Inlining constant with var siblings (const string) print_str_at::str#2 -Inlining constant with var siblings (const string) print_str_at::str#2 -Inlining constant with var siblings (const string) print_str_at::str#2 -Inlining constant with var siblings (const string) print_str_at::str#3 -Inlining constant with var siblings (const string) print_str_at::str#3 -Inlining constant with var siblings (const string) print_str_at::str#3 +Inlining constant with var siblings (const byte*) print_str_at::str#0 +Inlining constant with var siblings (const byte*) print_str_at::str#0 +Inlining constant with var siblings (const byte*) print_str_at::str#0 +Inlining constant with var siblings (const byte*) print_str_at::str#1 +Inlining constant with var siblings (const byte*) print_str_at::str#1 +Inlining constant with var siblings (const byte*) print_str_at::str#1 +Inlining constant with var siblings (const byte*) print_str_at::str#2 +Inlining constant with var siblings (const byte*) print_str_at::str#2 +Inlining constant with var siblings (const byte*) print_str_at::str#2 +Inlining constant with var siblings (const byte*) print_str_at::str#3 +Inlining constant with var siblings (const byte*) print_str_at::str#3 +Inlining constant with var siblings (const byte*) print_str_at::str#3 Inlining constant with var siblings (const byte*) print_str_at::at#0 Inlining constant with var siblings (const byte*) print_str_at::at#0 Inlining constant with var siblings (const byte*) print_str_at::at#0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/concat-char.cfg b/src/test/java/dk/camelot64/kickc/test/ref/concat-char.cfg index 89bb61d37..e574cb449 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/concat-char.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/concat-char.cfg @@ -12,7 +12,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/concat-char.log b/src/test/java/dk/camelot64/kickc/test/ref/concat-char.log index 26653bc2a..587a0c693 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/concat-char.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/concat-char.log @@ -123,7 +123,7 @@ Constant (const byte*) main::screen#0 = ((byte*))1024 Constant (const byte) main::l#0 = 'l' Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) main::msg#0 = "cm"+'l' +Constant (const byte[]) main::msg#0 = "cm"+'l' Succesful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const string) main::$2 Eliminating unused constant (const byte) main::l#0 @@ -174,7 +174,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 3) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return @@ -255,7 +255,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda msg,y sta screen,y @@ -274,9 +274,9 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES @@ -322,7 +322,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -371,7 +371,7 @@ FINAL SYMBOL TABLE (byte) main::i#2 reg byte x 22.0 (byte) main::l (byte[]) main::msg -(const string) main::msg#0 msg = (string) "cm"+(byte) 'l' +(const byte[]) main::msg#0 msg = (string) "cm"+(byte) 'l' (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 @@ -404,7 +404,7 @@ main: { //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/concat-char.sym b/src/test/java/dk/camelot64/kickc/test/ref/concat-char.sym index d406f535f..86dd5583d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/concat-char.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/concat-char.sym @@ -9,7 +9,7 @@ (byte) main::i#2 reg byte x 22.0 (byte) main::l (byte[]) main::msg -(const string) main::msg#0 msg = (string) "cm"+(byte) 'l' +(const byte[]) main::msg#0 msg = (string) "cm"+(byte) 'l' (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/const-mult-div.log b/src/test/java/dk/camelot64/kickc/test/ref/const-mult-div.log index da408fec1..ba75197ee 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/const-mult-div.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/const-mult-div.log @@ -91,7 +91,7 @@ Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$0 = Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$2 = 22%3 Constant (const byte*) main::screen#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification -Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$1 = 6*main::$0 +Constant (const byte/signed word/word/dword/signed dword/signed byte) main::$1 = 6*main::$0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) main::b#0 = main::$1+main::$2 Succesful SSA optimization Pass2ConstantIdentification diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.asm b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.asm index 1a2e7e8f7..6f14e506a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.asm @@ -12,5 +12,8 @@ main: { cpx #8 bne b1 rts - s5: .text "cam"+"e"+"l"+'o'+""+'t'+'!' + s: .text "e"+"l" + s4: .text ""+'t'+'!' + s3: .text "cam"+s+'o' + s5: .text s3+s4 } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.cfg b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.cfg index 2bfaa659e..f17036210 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.cfg @@ -12,7 +12,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.log b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.log index 556d1d502..20a7db9ce 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.log @@ -172,29 +172,26 @@ Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0 Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$6 if((byte) main::i#1!=rangelast(0,7)) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification -Constant (const string) main::s#0 = "e"+"l" +Constant (const byte[]) main::s#0 = "e"+"l" Constant (const byte) main::e#0 = '!' Constant (const string) main::$3 = ""+'t' Constant (const byte*) main::SCREEN#0 = ((byte*))1024 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) main::s2#0 = "e"+"l"+'o' -Constant (const string) main::s4#0 = ""+'t'+'!' +Constant (const byte[]) main::s2#0 = main::s#0+'o' +Constant (const byte[]) main::s4#0 = ""+'t'+'!' Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) main::s3#0 = "cam"+"e"+"l"+'o' +Constant (const byte[]) main::s3#0 = "cam"+main::s#0+'o' Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) main::s5#0 = "cam"+"e"+"l"+'o'+""+'t'+'!' +Constant (const byte[]) main::s5#0 = main::s3#0+main::s4#0 Succesful SSA optimization Pass2ConstantIdentification Eliminating unused constant (const string) main::$7 Eliminating unused constant (const string) main::$8 Eliminating unused constant (const string) main::$9 Eliminating unused constant (const string) main::$10 -Eliminating unused constant (const string) main::s#0 Eliminating unused constant (const byte) main::e#0 Eliminating unused constant (const string) main::$3 -Eliminating unused constant (const string) main::s2#0 -Eliminating unused constant (const string) main::s4#0 -Eliminating unused constant (const string) main::s3#0 +Eliminating unused constant (const byte[]) main::s2#0 Succesful SSA optimization PassNEliminateUnusedVars Resolved ranged next value main::i#1 ← ++ main::i#2 to ++ Resolved ranged comparison value if(main::i#1!=rangelast(0,7)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 8 @@ -242,7 +239,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return @@ -327,7 +324,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda s5,y sta SCREEN,y @@ -342,13 +339,16 @@ main: { breturn: //SEG19 [9] return [ ] ( main:2 [ ] ) rts - s5: .text "cam"+"e"+"l"+'o'+""+'t'+'!' + s: .text "e"+"l" + s4: .text ""+'t'+'!' + s3: .text "cam"+s+'o' + s5: .text s3+s4 } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES @@ -394,7 +394,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda s5,x sta SCREEN,x //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -407,7 +407,10 @@ main: { breturn: //SEG19 [9] return [ ] ( main:2 [ ] ) rts - s5: .text "cam"+"e"+"l"+'o'+""+'t'+'!' + s: .text "e"+"l" + s4: .text ""+'t'+'!' + s3: .text "cam"+s+'o' + s5: .text s3+s4 } ASSEMBLER OPTIMIZATIONS @@ -445,11 +448,14 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 22.0 (byte[]) main::s +(const byte[]) main::s#0 s = (string) "e"+(string) "l" (byte[]) main::s2 (byte[]) main::s3 +(const byte[]) main::s3#0 s3 = (string) "cam"+(const byte[]) main::s#0+(byte) 'o' (byte[]) main::s4 +(const byte[]) main::s4#0 s4 = (string) ""+(byte) 't'+(byte) '!' (byte[]) main::s5 -(const string) main::s5#0 s5 = (string) "cam"+(string) "e"+(string) "l"+(byte) 'o'+(string) ""+(byte) 't'+(byte) '!' +(const byte[]) main::s5#0 s5 = (const byte[]) main::s3#0+(const byte[]) main::s4#0 reg byte x [ main::i#2 main::i#1 ] @@ -480,7 +486,7 @@ main: { //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const string) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) main::SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::s5#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda s5,x sta SCREEN,x //SEG16 [7] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -491,6 +497,9 @@ main: { //SEG18 main::@return //SEG19 [9] return [ ] ( main:2 [ ] ) rts - s5: .text "cam"+"e"+"l"+'o'+""+'t'+'!' + s: .text "e"+"l" + s4: .text ""+'t'+'!' + s3: .text "cam"+s+'o' + s5: .text s3+s4 } diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.sym b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.sym index ebb539258..7088f96c4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/constant-string-concat.sym @@ -11,10 +11,13 @@ (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 22.0 (byte[]) main::s +(const byte[]) main::s#0 s = (string) "e"+(string) "l" (byte[]) main::s2 (byte[]) main::s3 +(const byte[]) main::s3#0 s3 = (string) "cam"+(const byte[]) main::s#0+(byte) 'o' (byte[]) main::s4 +(const byte[]) main::s4#0 s4 = (string) ""+(byte) 't'+(byte) '!' (byte[]) main::s5 -(const string) main::s5#0 s5 = (string) "cam"+(string) "e"+(string) "l"+(byte) 'o'+(string) ""+(byte) 't'+(byte) '!' +(const byte[]) main::s5#0 s5 = (const byte[]) main::s3#0+(const byte[]) main::s4#0 reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/constants.log b/src/test/java/dk/camelot64/kickc/test/ref/constants.log index e15dc497c..028c4a833 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/constants.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/constants.log @@ -1914,30 +1914,30 @@ Constant (const byte*) BGCOL#0 = ((byte*))53281 Constant (const byte) GREEN#0 = 5 Constant (const byte) RED#0 = 2 Constant (const byte) test_bytes::bb#0 = 0 -Constant (const string) assert_byte::msg#0 = test_bytes::msg +Constant (const byte*) assert_byte::msg#0 = test_bytes::msg Constant (const byte) assert_byte::c#0 = 0 -Constant (const string) assert_byte::msg#1 = test_bytes::msg1 +Constant (const byte*) assert_byte::msg#1 = test_bytes::msg1 Constant (const byte) assert_byte::c#1 = 2 -Constant (const string) assert_byte::msg#2 = test_bytes::msg2 +Constant (const byte*) assert_byte::msg#2 = test_bytes::msg2 Constant (const byte) assert_byte::c#2 = 254 -Constant (const string) print_str::str#2 = assert_byte::str -Constant (const string) print_str::str#3 = assert_byte::str1 -Constant (const string) print_str::str#4 = assert_byte::str2 +Constant (const byte*) print_str::str#2 = assert_byte::str +Constant (const byte*) print_str::str#3 = assert_byte::str1 +Constant (const byte*) print_str::str#4 = assert_byte::str2 Constant (const signed byte) test_sbytes::bb#0 = 0 -Constant (const string) assert_sbyte::msg#0 = test_sbytes::msg +Constant (const byte*) assert_sbyte::msg#0 = test_sbytes::msg Constant (const signed byte) assert_sbyte::c#0 = 0 -Constant (const string) assert_sbyte::msg#1 = test_sbytes::msg1 +Constant (const byte*) assert_sbyte::msg#1 = test_sbytes::msg1 Constant (const signed byte) assert_sbyte::c#1 = 2 Constant (const signed byte) assert_sbyte::c#2 = -2 -Constant (const string) assert_sbyte::msg#2 = test_sbytes::msg2 -Constant (const string) assert_sbyte::msg#3 = test_sbytes::msg3 +Constant (const byte*) assert_sbyte::msg#2 = test_sbytes::msg2 +Constant (const byte*) assert_sbyte::msg#3 = test_sbytes::msg3 Constant (const signed byte) assert_sbyte::c#3 = 2 Constant (const signed byte/signed word/signed dword) test_sbytes::$8 = -127 -Constant (const string) assert_sbyte::msg#4 = test_sbytes::msg4 +Constant (const byte*) assert_sbyte::msg#4 = test_sbytes::msg4 Constant (const signed byte) assert_sbyte::c#4 = 2 -Constant (const string) print_str::str#6 = assert_sbyte::str -Constant (const string) print_str::str#7 = assert_sbyte::str1 -Constant (const string) print_str::str#8 = assert_sbyte::str2 +Constant (const byte*) print_str::str#6 = assert_sbyte::str +Constant (const byte*) print_str::str#7 = assert_sbyte::str1 +Constant (const byte*) print_str::str#8 = assert_sbyte::str2 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 @@ -1953,7 +1953,7 @@ Constant (const signed byte) assert_sbyte::b#1 = test_sbytes::bc#0 Constant (const signed byte) test_sbytes::bd#0 = test_sbytes::bc#0-4 Constant (const signed byte) test_sbytes::bf#0 = ((signed byte))test_sbytes::$9 Succesful SSA optimization Pass2ConstantIdentification -Constant (const signed byte/signed word/signed dword) test_bytes::$4 = test_bytes::$3-4 +Constant (const signed word/signed byte/signed dword) test_bytes::$4 = test_bytes::$3-4 Constant (const signed byte) assert_sbyte::b#2 = test_sbytes::bd#0 Constant (const signed byte) test_sbytes::be#0 = -test_sbytes::bd#0 Constant (const signed byte) assert_sbyte::b#4 = test_sbytes::bf#0 @@ -1988,60 +1988,60 @@ Not aliassing across scopes: print_line_cursor#47 print_line_cursor#50 Not aliassing across scopes: print_str::str#1 assert_byte::msg#3 Not aliassing across scopes: print_str::str#5 assert_sbyte::msg#5 OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 -Inlining constant with var siblings (const string) assert_byte::msg#0 +Inlining constant with var siblings (const byte*) assert_byte::msg#0 Inlining constant with var siblings (const byte) assert_byte::c#0 Inlining constant with different constant siblings (const byte) assert_byte::c#0 Inlining constant with different constant siblings (const byte) assert_byte::c#0 -Inlining constant with var siblings (const string) assert_byte::msg#1 +Inlining constant with var siblings (const byte*) assert_byte::msg#1 Inlining constant with var siblings (const byte) assert_byte::c#1 Inlining constant with different constant siblings (const byte) assert_byte::c#1 Inlining constant with different constant siblings (const byte) assert_byte::c#1 -Inlining constant with var siblings (const string) assert_byte::msg#2 +Inlining constant with var siblings (const byte*) assert_byte::msg#2 Inlining constant with var siblings (const byte) assert_byte::c#2 Inlining constant with different constant siblings (const byte) assert_byte::c#2 Inlining constant with different constant siblings (const byte) assert_byte::c#2 Inlining constant with var siblings (const byte) assert_byte::b#0 Inlining constant with var siblings (const byte) assert_byte::b#1 Inlining constant with var siblings (const byte) assert_byte::b#2 -Inlining constant with var siblings (const string) assert_sbyte::msg#0 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#0 Inlining constant with var siblings (const signed byte) assert_sbyte::c#0 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#0 -Inlining constant with var siblings (const string) assert_sbyte::msg#1 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#1 Inlining constant with var siblings (const signed byte) assert_sbyte::c#1 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#1 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#1 @@ -2050,12 +2050,12 @@ Inlining constant with different constant siblings (const signed byte) assert_sb Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#2 -Inlining constant with var siblings (const string) assert_sbyte::msg#2 -Inlining constant with var siblings (const string) assert_sbyte::msg#3 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#2 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#3 Inlining constant with var siblings (const signed byte) assert_sbyte::c#3 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#3 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#3 -Inlining constant with var siblings (const string) assert_sbyte::msg#4 +Inlining constant with var siblings (const byte*) assert_sbyte::msg#4 Inlining constant with var siblings (const signed byte) assert_sbyte::c#4 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#4 Inlining constant with different constant siblings (const signed byte) assert_sbyte::c#4 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/fibmem.cfg b/src/test/java/dk/camelot64/kickc/test/ref/fibmem.cfg index 9459cf732..0b8726dea 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/fibmem.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/fibmem.cfg @@ -8,13 +8,13 @@ @end: scope:[] from @1 [3] phi() [ ] ( ) main: scope:[main] from @1 - [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) - [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) + [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) + [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) - [8] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) + [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/fibmem.log b/src/test/java/dk/camelot64/kickc/test/ref/fibmem.log index 746605c6a..40575f88c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/fibmem.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/fibmem.log @@ -112,7 +112,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks Simple Condition (bool~) main::$3 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification -Constant (const byte*) fibs#0 = ((byte*))4352 +Constant (const byte[15]) fibs#0 = ((byte*))4352 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(fibs#0+0) @@ -162,13 +162,13 @@ FINAL CONTROL FLOW GRAPH @end: scope:[] from @1 [3] phi() [ ] ( ) main: scope:[main] from @1 - [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) - [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) + [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) + [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) - [8] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) + [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [10] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 15) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return @@ -238,10 +238,10 @@ bend: main: { .label _2 = 3 .label i = 2 - //SEG9 [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta fibs+0 - //SEG10 [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG10 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta fibs+1 //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] @@ -256,13 +256,13 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz2 + //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2_plus_pbuc2_derefidx_vbuz2 ldy i lda fibs,y clc adc fibs+1,y sta _2 - //SEG17 [8] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _2 ldy i sta fibs+2,y @@ -280,13 +280,13 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a +Statement [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::$2 ] : zp ZP_BYTE:3 , reg byte a , reg byte x , reg byte y , @@ -320,10 +320,10 @@ bend_from_b1: bend: //SEG8 main main: { - //SEG9 [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta fibs+0 - //SEG10 [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG10 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta fibs+1 //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] @@ -337,11 +337,11 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx + //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx lda fibs,x clc adc fibs+1,x - //SEG17 [8] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta fibs+2,x //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx @@ -380,7 +380,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[15]) fibs -(const byte*) fibs#0 fibs = ((byte*))(word/signed word/dword/signed dword) 4352 +(const byte[15]) fibs#0 fibs = ((byte*))(word/signed word/dword/signed dword) 4352 (void()) main() (byte~) main::$2 reg byte a 22.0 (label) main::@1 @@ -411,10 +411,10 @@ Score: 269 //SEG7 @end //SEG8 main main: { - //SEG9 [4] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte/signed byte/word/signed word/dword/signed dword) 0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #0 sta fibs+0 - //SEG10 [5] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG10 [5] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta fibs+1 //SEG11 [6] phi from main to main::@1 [phi:main->main::@1] @@ -424,11 +424,11 @@ main: { //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [7] (byte~) main::$2 ← *((const byte*) fibs#0 + (byte) main::i#2) + *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx + //SEG16 [7] (byte~) main::$2 ← *((const byte[15]) fibs#0 + (byte) main::i#2) + *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::i#2 main::$2 ] ( main:2 [ main::i#2 main::$2 ] ) -- vbuaa=pbuc1_derefidx_vbuxx_plus_pbuc2_derefidx_vbuxx lda fibs,x clc adc fibs+1,x - //SEG17 [8] *((const byte*) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG17 [8] *((const byte[15]) fibs#0+(byte/signed byte/word/signed word/dword/signed dword) 2 + (byte) main::i#2) ← (byte~) main::$2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta fibs+2,x //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx inx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/fibmem.sym b/src/test/java/dk/camelot64/kickc/test/ref/fibmem.sym index 4a3e15628..77b89d7c7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/fibmem.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/fibmem.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[15]) fibs -(const byte*) fibs#0 fibs = ((byte*))(word/signed word/dword/signed dword) 4352 +(const byte[15]) fibs#0 fibs = ((byte*))(word/signed word/dword/signed dword) 4352 (void()) main() (byte~) main::$2 reg byte a 22.0 (label) main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm index 2056b7924..2adb7de14 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.asm @@ -98,5 +98,5 @@ prepare: { bne b1 rts } - buffer1: .fill $100, 0 - buffer2: .fill $100, 0 + buffer1: .fill $10*$10, 0 + buffer2: .fill $10*$10, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg index aec7aa127..9c679108f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.cfg @@ -41,7 +41,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 [17] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [17] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) - [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) + [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) @@ -66,7 +66,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 [28] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word/dword/signed dword) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [28] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [28] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) [32] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) @@ -79,7 +79,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 [37] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) - [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) + [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) to:flip::@return @@ -91,7 +91,7 @@ prepare: scope:[prepare] from main to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 [43] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word/dword/signed dword) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) - [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) + [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) to:prepare::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index 4c7747560..39520a9fd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.log @@ -55,6 +55,8 @@ Adding pre/post-modifier (byte) flip::dstIdx ← -- (byte) flip::dstIdx Adding pre/post-modifier (byte) plot::i ← ++ (byte) plot::i Adding pre/post-modifier (byte) plot::x ← ++ (byte) plot::x SYMBOLS +(word/signed word/dword/signed dword~) $0 +(word/signed word/dword/signed dword~) $1 (label) @1 (label) @2 (label) @3 @@ -63,8 +65,8 @@ SYMBOLS (label) @end (byte*) RASTER (byte*) SCREEN -(byte[256]) buffer1 -(byte[256]) buffer2 +(byte[$0]) buffer1 +(byte[$1]) buffer2 (void()) flip() (byte/signed word/word/dword/signed dword~) flip::$0 (bool~) flip::$1 @@ -126,8 +128,10 @@ Promoting word/dword/signed dword to byte* in RASTER ← ((byte*)) 53266 Promoting word/signed word/dword/signed dword to byte* in SCREEN ← ((byte*)) 1024 INITIAL CONTROL FLOW GRAPH @begin: scope:[] from - (byte[256]) buffer1 ← { fill( 256, 0) } - (byte[256]) buffer2 ← { fill( 256, 0) } + (word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte[$0]) buffer1 ← { fill( $0, 0) } + (word/signed word/dword/signed dword~) $1 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte[$1]) buffer2 ← { fill( $1, 0) } (byte*) RASTER ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:@1 @@ -170,7 +174,7 @@ prepare: scope:[prepare] from (byte) prepare::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 - *((byte[256]) buffer1 + (byte) prepare::i) ← (byte) prepare::i + *((byte[$0]) buffer1 + (byte) prepare::i) ← (byte) prepare::i (byte) prepare::i ← (byte) prepare::i + rangenext(0,255) (bool~) prepare::$0 ← (byte) prepare::i != rangelast(0,255) if((bool~) prepare::$0) goto prepare::@1 @@ -191,7 +195,7 @@ flip::@1: scope:[flip] from flip flip::@4 (byte) flip::c ← (byte/signed byte/word/signed word/dword/signed dword) 16 to:flip::@2 flip::@2: scope:[flip] from flip::@1 flip::@2 - *((byte[256]) buffer2 + (byte) flip::dstIdx) ← *((byte[256]) buffer1 + (byte) flip::srcIdx) + *((byte[$1]) buffer2 + (byte) flip::dstIdx) ← *((byte[$0]) buffer1 + (byte) flip::srcIdx) (byte) flip::srcIdx ← ++ (byte) flip::srcIdx (byte/signed word/word/dword/signed dword~) flip::$0 ← (byte) flip::dstIdx + (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) flip::dstIdx ← (byte/signed word/word/dword/signed dword~) flip::$0 @@ -209,7 +213,7 @@ flip::@5: scope:[flip] from flip::@4 (byte) flip::i ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 - *((byte[256]) buffer1 + (byte) flip::i) ← *((byte[256]) buffer2 + (byte) flip::i) + *((byte[$0]) buffer1 + (byte) flip::i) ← *((byte[$1]) buffer2 + (byte) flip::i) (byte) flip::i ← (byte) flip::i + rangenext(0,255) (bool~) flip::$3 ← (byte) flip::i != rangelast(0,255) if((bool~) flip::$3) goto flip::@3 @@ -233,7 +237,7 @@ plot::@1: scope:[plot] from plot plot::@3 (byte) plot::x ← (byte/signed byte/word/signed word/dword/signed dword) 0 to:plot::@2 plot::@2: scope:[plot] from plot::@1 plot::@2 - *((byte*) plot::line + (byte) plot::x) ← *((byte[256]) buffer1 + (byte) plot::i) + *((byte*) plot::line + (byte) plot::x) ← *((byte[$0]) buffer1 + (byte) plot::i) (byte) plot::i ← ++ (byte) plot::i (byte) plot::x ← ++ (byte) plot::x (bool~) plot::$3 ← (byte) plot::x < (byte/signed byte/word/signed word/dword/signed dword) 16 @@ -282,8 +286,10 @@ Completing Phi functions... CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from - (byte[256]) buffer1#0 ← { fill( 256, 0) } - (byte[256]) buffer2#0 ← { fill( 256, 0) } + (word/signed word/dword/signed dword~) $0 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte[$0]) buffer1#0 ← { fill( $0, 0) } + (word/signed word/dword/signed dword~) $1 ← (byte/signed byte/word/signed word/dword/signed dword) 16 * (byte/signed byte/word/signed word/dword/signed dword) 16 + (byte[$1]) buffer2#0 ← { fill( $1, 0) } (byte*) RASTER#0 ← ((byte*)) (word/dword/signed dword) 53266 (byte*) SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 to:@4 @@ -351,7 +357,7 @@ prepare: scope:[prepare] from main to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 (byte) prepare::i#2 ← phi( prepare/(byte) prepare::i#0 prepare::@1/(byte) prepare::i#1 ) - *((byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 + *((byte[$0]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 (byte) prepare::i#1 ← (byte) prepare::i#2 + rangenext(0,255) (bool~) prepare::$0 ← (byte) prepare::i#1 != rangelast(0,255) if((bool~) prepare::$0) goto prepare::@1 @@ -375,7 +381,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 (byte) flip::c#2 ← phi( flip::@1/(byte) flip::c#0 flip::@2/(byte) flip::c#1 ) (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) - *((byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((byte[256]) buffer1#0 + (byte) flip::srcIdx#2) + *((byte[$1]) buffer2#0 + (byte) flip::dstIdx#3) ← *((byte[$0]) buffer1#0 + (byte) flip::srcIdx#2) (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 (byte/signed word/word/dword/signed dword~) flip::$0 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 (byte) flip::dstIdx#1 ← (byte/signed word/word/dword/signed dword~) flip::$0 @@ -397,7 +403,7 @@ flip::@5: scope:[flip] from flip::@4 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@5 (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@5/(byte) flip::i#0 ) - *((byte[256]) buffer1#0 + (byte) flip::i#2) ← *((byte[256]) buffer2#0 + (byte) flip::i#2) + *((byte[$0]) buffer1#0 + (byte) flip::i#2) ← *((byte[$1]) buffer2#0 + (byte) flip::i#2) (byte) flip::i#1 ← (byte) flip::i#2 + rangenext(0,255) (bool~) flip::$3 ← (byte) flip::i#1 != rangelast(0,255) if((bool~) flip::$3) goto flip::@3 @@ -425,7 +431,7 @@ plot::@2: scope:[plot] from plot::@1 plot::@2 (byte) plot::x#2 ← phi( plot::@1/(byte) plot::x#0 plot::@2/(byte) plot::x#1 ) (byte*) plot::line#2 ← phi( plot::@1/(byte*) plot::line#4 plot::@2/(byte*) plot::line#2 ) (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) - *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[256]) buffer1#0 + (byte) plot::i#2) + *((byte*) plot::line#2 + (byte) plot::x#2) ← *((byte[$0]) buffer1#0 + (byte) plot::i#2) (byte) plot::i#1 ← ++ (byte) plot::i#2 (byte) plot::x#1 ← ++ (byte) plot::x#2 (bool~) plot::$3 ← (byte) plot::x#1 < (byte/signed byte/word/signed word/dword/signed dword) 16 @@ -454,6 +460,8 @@ plot::@return: scope:[plot] from plot::@3 @end: scope:[] from @5 SYMBOL TABLE SSA +(word/signed word/dword/signed dword~) $0 +(word/signed word/dword/signed dword~) $1 (label) @4 (label) @5 (label) @begin @@ -485,10 +493,10 @@ SYMBOL TABLE SSA (byte*) SCREEN#7 (byte*) SCREEN#8 (byte*) SCREEN#9 -(byte[256]) buffer1 -(byte[256]) buffer1#0 -(byte[256]) buffer2 -(byte[256]) buffer2#0 +(byte[$0]) buffer1 +(byte[$0]) buffer1#0 +(byte[$1]) buffer2 +(byte[$1]) buffer2#0 (void()) flip() (byte/signed word/word/dword/signed dword~) flip::$0 (bool~) flip::$1 @@ -646,8 +654,8 @@ Simple Condition (bool~) flip::$3 if((byte) flip::i#1!=rangelast(0,255)) goto fl Simple Condition (bool~) plot::$3 if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 Simple Condition (bool~) plot::$5 if((byte) plot::y#1!=rangelast(16,1)) goto plot::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification -Constant (const byte[256]) buffer1#0 = { fill( 256, 0) } -Constant (const byte[256]) buffer2#0 = { fill( 256, 0) } +Constant (const word/signed word/dword/signed dword) $0 = 16*16 +Constant (const word/signed word/dword/signed dword) $1 = 16*16 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte) main::c#0 = 25 @@ -662,6 +670,9 @@ Constant (const byte) plot::i#0 = 0 Constant (const byte) plot::y#0 = 16 Constant (const byte) plot::x#0 = 0 Succesful SSA optimization Pass2ConstantIdentification +Constant (const byte[$0]) buffer1#0 = { fill( $0, 0) } +Constant (const byte[$1]) buffer2#0 = { fill( $1, 0) } +Succesful SSA optimization Pass2ConstantIdentification Consolidated constant in assignment plot::line#0 Succesful SSA optimization Pass2ConstantAdditionElimination if() condition always true - replacing block destination if(true) goto main::@1 @@ -739,6 +750,8 @@ Constant inlined plot::$0 = (byte/signed byte/word/signed word/dword/signed dwor Constant inlined plot::$1 = (const byte*) SCREEN#0 Constant inlined plot::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined plot::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 16 +Constant inlined $0 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 16 +Constant inlined $1 = (byte/signed byte/word/signed word/dword/signed dword) 16*(byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined flip::dstIdx#0 = (byte/signed byte/word/signed word/dword/signed dword) 15 Constant inlined flip::r#0 = (byte/signed byte/word/signed word/dword/signed dword) 16 Constant inlined main::c#0 = (byte/signed byte/word/signed word/dword/signed dword) 25 @@ -871,7 +884,7 @@ plot::@1: scope:[plot] from plot plot::@3 plot::@2: scope:[plot] from plot::@1 plot::@2 [17] (byte) plot::x#2 ← phi( plot::@1/(byte/signed byte/word/signed word/dword/signed dword) 0 plot::@2/(byte) plot::x#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [17] (byte) plot::i#2 ← phi( plot::@1/(byte) plot::i#3 plot::@2/(byte) plot::i#1 ) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) - [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) + [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) [20] (byte) plot::x#1 ← ++ (byte) plot::x#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) [21] if((byte) plot::x#1<(byte/signed byte/word/signed word/dword/signed dword) 16) goto plot::@2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#1 ] ) @@ -896,7 +909,7 @@ flip::@2: scope:[flip] from flip::@1 flip::@2 [28] (byte) flip::c#2 ← phi( flip::@1/(byte/signed byte/word/signed word/dword/signed dword) 16 flip::@2/(byte) flip::c#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [28] (byte) flip::dstIdx#3 ← phi( flip::@1/(byte) flip::dstIdx#5 flip::@2/(byte) flip::dstIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [28] (byte) flip::srcIdx#2 ← phi( flip::@1/(byte) flip::srcIdx#3 flip::@2/(byte) flip::srcIdx#1 ) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) - [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) + [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) [32] (byte) flip::c#1 ← -- (byte) flip::c#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#1 flip::c#1 ] ) @@ -909,7 +922,7 @@ flip::@4: scope:[flip] from flip::@2 to:flip::@3 flip::@3: scope:[flip] from flip::@3 flip::@4 [37] (byte) flip::i#2 ← phi( flip::@3/(byte) flip::i#1 flip::@4/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) - [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) + [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) [40] if((byte) flip::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto flip::@3 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) to:flip::@return @@ -921,7 +934,7 @@ prepare: scope:[prepare] from main to:prepare::@1 prepare::@1: scope:[prepare] from prepare prepare::@1 [43] (byte) prepare::i#2 ← phi( prepare/(byte/signed byte/word/signed word/dword/signed dword) 0 prepare::@1/(byte) prepare::i#1 ) [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) - [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) + [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) [46] if((byte) prepare::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto prepare::@1 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) to:prepare::@return @@ -1017,8 +1030,8 @@ Loop head: prepare::@1 tails: prepare::@1 blocks: prepare::@1 depth: 1 VARIABLE REGISTER WEIGHTS (byte*) RASTER (byte*) SCREEN -(byte[256]) buffer1 -(byte[256]) buffer2 +(byte[$0]) buffer1 +(byte[$1]) buffer2 (void()) flip() (byte) flip::c (byte) flip::c#1 1501.5 @@ -1225,7 +1238,7 @@ plot: { jmp b2 //SEG48 plot::@2 b2: - //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 + //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 ldy i lda buffer1,y ldy x @@ -1303,7 +1316,7 @@ flip: { jmp b2 //SEG77 flip::@2 b2: - //SEG78 [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG78 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy srcIdx lda buffer1,y ldy dstIdx @@ -1342,7 +1355,7 @@ flip: { jmp b3 //SEG91 flip::@3 b3: - //SEG92 [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG92 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda buffer2,y sta buffer1,y @@ -1372,7 +1385,7 @@ prepare: { jmp b1 //SEG102 prepare::@1 b1: - //SEG103 [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 + //SEG103 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz1 ldy i tya sta buffer1,y @@ -1387,33 +1400,33 @@ prepare: { //SEG107 [47] return [ ] ( main:2::prepare:5 [ ] ) rts } - buffer1: .fill $100, 0 - buffer2: .fill $100, 0 + buffer1: .fill $10*$10, 0 + buffer2: .fill $10*$10, 0 REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::c#4 main::c#1 ] Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a -Statement [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) always clobbers reg byte a +Statement [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:6 [ plot::i#2 plot::i#3 plot::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:7 [ plot::x#2 plot::x#1 ] Statement [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a -Statement [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) always clobbers reg byte a +Statement [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:8 [ flip::r#4 flip::r#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ flip::srcIdx#2 flip::srcIdx#3 flip::srcIdx#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:10 [ flip::dstIdx#3 flip::dstIdx#5 flip::dstIdx#2 flip::dstIdx#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:11 [ flip::c#2 flip::c#1 ] Statement [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a -Statement [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) always clobbers reg byte a +Statement [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:12 [ flip::i#2 flip::i#1 ] Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@3 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@4 [ main::c#4 ] ( main:2 [ main::c#4 ] ) always clobbers reg byte a -Statement [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) always clobbers reg byte a +Statement [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) always clobbers reg byte a Statement [22] (byte*) plot::line#1 ← (byte*) plot::line#4 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ plot::y#4 plot::i#1 plot::line#1 ] ( main:2::plot:14 [ plot::y#4 plot::i#1 plot::line#1 ] ) always clobbers reg byte a -Statement [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) always clobbers reg byte a +Statement [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) always clobbers reg byte a Statement [31] (byte) flip::dstIdx#1 ← (byte) flip::dstIdx#3 + (byte/signed byte/word/signed word/dword/signed dword) 16 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::c#2 flip::dstIdx#1 ] ) always clobbers reg byte a -Statement [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) always clobbers reg byte a +Statement [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::c#4 main::c#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_WORD:3 [ plot::line#4 plot::line#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ plot::y#4 plot::y#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -1572,7 +1585,7 @@ plot: { jmp b2 //SEG48 plot::@2 b2: - //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda buffer1,x sta (line),y //SEG50 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuxx=_inc_vbuxx @@ -1642,7 +1655,7 @@ flip: { jmp b2 //SEG77 flip::@2 b2: - //SEG78 [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG78 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda buffer1,y sta buffer2,x //SEG79 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuyy=_inc_vbuyy @@ -1678,7 +1691,7 @@ flip: { jmp b3 //SEG91 flip::@3 b3: - //SEG92 [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG92 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda buffer2,x sta buffer1,x //SEG93 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -1705,7 +1718,7 @@ prepare: { jmp b1 //SEG102 prepare::@1 b1: - //SEG103 [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + //SEG103 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx txa sta buffer1,x //SEG104 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -1719,8 +1732,8 @@ prepare: { //SEG107 [47] return [ ] ( main:2::prepare:5 [ ] ) rts } - buffer1: .fill $100, 0 - buffer2: .fill $100, 0 + buffer1: .fill $10*$10, 0 + buffer2: .fill $10*$10, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp b4 @@ -1810,10 +1823,10 @@ FINAL SYMBOL TABLE (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 -(byte[256]) buffer1 -(const byte[256]) buffer1#0 buffer1 = { fill( 256, 0) } -(byte[256]) buffer2 -(const byte[256]) buffer2#0 buffer2 = { fill( 256, 0) } +(byte[$0]) buffer1 +(const byte[16*16]) buffer1#0 buffer1 = { fill( 16*16, 0) } +(byte[$1]) buffer2 +(const byte[16*16]) buffer2#0 buffer2 = { fill( 16*16, 0) } (void()) flip() (label) flip::@1 (label) flip::@2 @@ -1974,7 +1987,7 @@ plot: { //SEG47 [17] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: - //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[256]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG49 [18] *((byte*) plot::line#4 + (byte) plot::x#2) ← *((const byte[16*16]) buffer1#0 + (byte) plot::i#2) [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#2 plot::x#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda buffer1,x sta (line),y //SEG50 [19] (byte) plot::i#1 ← ++ (byte) plot::i#2 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ( main:2::plot:14 [ plot::line#4 plot::y#4 plot::i#1 plot::x#2 ] ) -- vbuxx=_inc_vbuxx @@ -2032,7 +2045,7 @@ flip: { //SEG76 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG77 flip::@2 b2: - //SEG78 [29] *((const byte[256]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[256]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG78 [29] *((const byte[16*16]) buffer2#0 + (byte) flip::dstIdx#3) ← *((const byte[16*16]) buffer1#0 + (byte) flip::srcIdx#2) [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda buffer1,y sta buffer2,x //SEG79 [30] (byte) flip::srcIdx#1 ← ++ (byte) flip::srcIdx#2 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ( main:2::flip:12 [ flip::r#4 flip::srcIdx#1 flip::dstIdx#3 flip::c#2 ] ) -- vbuyy=_inc_vbuyy @@ -2062,7 +2075,7 @@ flip: { //SEG90 [37] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG91 flip::@3 b3: - //SEG92 [38] *((const byte[256]) buffer1#0 + (byte) flip::i#2) ← *((const byte[256]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG92 [38] *((const byte[16*16]) buffer1#0 + (byte) flip::i#2) ← *((const byte[16*16]) buffer2#0 + (byte) flip::i#2) [ flip::i#2 ] ( main:2::flip:12 [ flip::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda buffer2,x sta buffer1,x //SEG93 [39] (byte) flip::i#1 ← ++ (byte) flip::i#2 [ flip::i#1 ] ( main:2::flip:12 [ flip::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -2083,7 +2096,7 @@ prepare: { //SEG101 [43] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG102 prepare::@1 b1: - //SEG103 [44] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx + //SEG103 [44] *((const byte[16*16]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] ( main:2::prepare:5 [ prepare::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuxx txa sta buffer1,x //SEG104 [45] (byte) prepare::i#1 ← ++ (byte) prepare::i#2 [ prepare::i#1 ] ( main:2::prepare:5 [ prepare::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -2095,6 +2108,6 @@ prepare: { //SEG107 [47] return [ ] ( main:2::prepare:5 [ ] ) rts } - buffer1: .fill $100, 0 - buffer2: .fill $100, 0 + buffer1: .fill $10*$10, 0 + buffer2: .fill $10*$10, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym index 1ad4842a8..2c38ec2c2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/flipper-rex2.sym @@ -5,10 +5,10 @@ (const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266 (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 -(byte[256]) buffer1 -(const byte[256]) buffer1#0 buffer1 = { fill( 256, 0) } -(byte[256]) buffer2 -(const byte[256]) buffer2#0 buffer2 = { fill( 256, 0) } +(byte[$0]) buffer1 +(const byte[16*16]) buffer1#0 buffer1 = { fill( 16*16, 0) } +(byte[$1]) buffer2 +(const byte[16*16]) buffer2#0 buffer2 = { fill( 16*16, 0) } (void()) flip() (label) flip::@1 (label) flip::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.asm b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.asm new file mode 100644 index 000000000..50870f7d7 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.asm @@ -0,0 +1,45 @@ +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" + jsr main +main: { + .label SCREEN = $400 + .label w = 2 + .label sw = 2 + lda #<0 + sta w + sta w+1 + b1: + lda w + sta SCREEN+0 + lda w+1 + sta SCREEN+1 + inc w + bne !+ + inc w+1 + !: + lda w + bne b1 + lda w+1 + bne b1 + lda #<-$7fff + sta sw + lda #>-$7fff + sta sw+1 + b2: + lda sw + sta SCREEN+3 + lda sw+1 + sta SCREEN+4 + inc sw + bne !+ + inc sw+1 + !: + lda sw+1 + cmp #>$7fff + bne b2 + lda sw + cmp #<$7fff + bne b2 + rts +} diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.cfg b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.cfg new file mode 100644 index 000000000..816548689 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.cfg @@ -0,0 +1,33 @@ +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (word) main::w#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(word) main::w#1 ) [ main::w#2 ] ( main:2 [ main::w#2 ] ) + [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) + [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ main::w#2 ] ( main:2 [ main::w#2 ] ) + [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) + [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ main::w#2 ] ( main:2 [ main::w#2 ] ) + [10] (word) main::w#1 ← ++ (word) main::w#2 [ main::w#1 ] ( main:2 [ main::w#1 ] ) + [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@2 + [12] (signed word) main::sw#2 ← phi( main::@2/(signed word) main::sw#1 main::@1/-(word/signed word/dword/signed dword) 32767 ) [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) + [13] (byte~) main::$4 ← < (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) + [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) + [15] (byte~) main::$5 ← > (signed word) main::sw#2 [ main::sw#2 main::$5 ] ( main:2 [ main::sw#2 main::$5 ] ) + [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) + [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) + [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@2 + [19] return [ ] ( main:2 [ ] ) + to:@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.log b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.log new file mode 100644 index 000000000..5a51bc300 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.log @@ -0,0 +1,696 @@ +PARSING src/test/java/dk/camelot64/kickc/test/kc/forrangedwords.kc + +void main() { + byte* SCREEN = $0400; + for( word w: 0..$ffff) { + SCREEN[0] = w; + } + for( signed word sw: -$7fff..$7ffe) { + SCREEN[3] = sw; + } +} +SYMBOLS +(label) @1 +(label) @begin +(label) @end +(void()) main() +(byte~) main::$0 +(byte~) main::$1 +(bool~) main::$2 +(signed word/signed dword~) main::$3 +(byte~) main::$4 +(byte~) main::$5 +(bool~) main::$6 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@4 +(label) main::@return +(byte*) main::SCREEN +(signed word) main::sw +(word) main::w + +Promoting word/signed word/dword/signed dword to byte* in main::SCREEN ← ((byte*)) 1024 +INITIAL CONTROL FLOW GRAPH +@begin: scope:[] from + to:@1 +main: scope:[main] from + (byte*) main::SCREEN ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (word) main::w ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte~) main::$0 ← < (word) main::w + *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 + (byte~) main::$1 ← > (word) main::w + *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 + (word) main::w ← (word) main::w + rangenext(0,65535) + (bool~) main::$2 ← (word) main::w != rangelast(0,65535) + if((bool~) main::$2) goto main::@1 + to:main::@3 +main::@3: scope:[main] from main::@1 + (signed word/signed dword~) main::$3 ← - (word/signed word/dword/signed dword) 32767 + (signed word) main::sw ← (signed word/signed dword~) main::$3 + to:main::@2 +main::@2: scope:[main] from main::@2 main::@3 + (byte~) main::$4 ← < (signed word) main::sw + *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 + (byte~) main::$5 ← > (signed word) main::sw + *((byte*) main::SCREEN + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 + (signed word) main::sw ← (signed word) main::sw + rangenext(main::$3,32766) + (bool~) main::$6 ← (signed word) main::sw != rangelast(main::$3,32766) + if((bool~) main::$6) goto main::@2 + to:main::@4 +main::@4: scope:[main] from main::@2 + to:main::@return +main::@return: scope:[main] from main::@4 + return + to:@return +@1: scope:[] from @begin + call main + to:@end +@end: scope:[] from @1 + +Removing empty block main::@4 +PROCEDURE MODIFY VARIABLE ANALYSIS + +Completing Phi functions... +Completing Phi functions... + +CONTROL FLOW GRAPH SSA WITH ASSIGNMENT CALL & RETURN +@begin: scope:[] from + to:@1 +main: scope:[main] from @1 + (byte*) main::SCREEN#0 ← ((byte*)) (word/signed word/dword/signed dword) 1024 + (word) main::w#0 ← (byte/signed byte/word/signed word/dword/signed dword) 0 + to:main::@1 +main::@1: scope:[main] from main main::@1 + (byte*) main::SCREEN#1 ← phi( main/(byte*) main::SCREEN#0 main::@1/(byte*) main::SCREEN#1 ) + (word) main::w#2 ← phi( main/(word) main::w#0 main::@1/(word) main::w#1 ) + (byte~) main::$0 ← < (word) main::w#2 + *((byte*) main::SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 + (byte~) main::$1 ← > (word) main::w#2 + *((byte*) main::SCREEN#1 + (byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 + (word) main::w#1 ← (word) main::w#2 + rangenext(0,65535) + (bool~) main::$2 ← (word) main::w#1 != rangelast(0,65535) + if((bool~) main::$2) goto main::@1 + to:main::@3 +main::@3: scope:[main] from main::@1 + (byte*) main::SCREEN#3 ← phi( main::@1/(byte*) main::SCREEN#1 ) + (signed word/signed dword~) main::$3 ← - (word/signed word/dword/signed dword) 32767 + (signed word) main::sw#0 ← (signed word/signed dword~) main::$3 + to:main::@2 +main::@2: scope:[main] from main::@2 main::@3 + (byte*) main::SCREEN#2 ← phi( main::@2/(byte*) main::SCREEN#2 main::@3/(byte*) main::SCREEN#3 ) + (signed word) main::sw#2 ← phi( main::@2/(signed word) main::sw#1 main::@3/(signed word) main::sw#0 ) + (byte~) main::$4 ← < (signed word) main::sw#2 + *((byte*) main::SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 + (byte~) main::$5 ← > (signed word) main::sw#2 + *((byte*) main::SCREEN#2 + (byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 + (signed word) main::sw#1 ← (signed word) main::sw#2 + rangenext(main::$3,32766) + (bool~) main::$6 ← (signed word) main::sw#1 != rangelast(main::$3,32766) + if((bool~) main::$6) goto main::@2 + to:main::@return +main::@return: scope:[main] from main::@2 + return + to:@return +@1: scope:[] from @begin + call main + to:@2 +@2: scope:[] from @1 + to:@end +@end: scope:[] from @2 + +SYMBOL TABLE SSA +(label) @1 +(label) @2 +(label) @begin +(label) @end +(void()) main() +(byte~) main::$0 +(byte~) main::$1 +(bool~) main::$2 +(signed word/signed dword~) main::$3 +(byte~) main::$4 +(byte~) main::$5 +(bool~) main::$6 +(label) main::@1 +(label) main::@2 +(label) main::@3 +(label) main::@return +(byte*) main::SCREEN +(byte*) main::SCREEN#0 +(byte*) main::SCREEN#1 +(byte*) main::SCREEN#2 +(byte*) main::SCREEN#3 +(signed word) main::sw +(signed word) main::sw#0 +(signed word) main::sw#1 +(signed word) main::sw#2 +(word) main::w +(word) main::w#0 +(word) main::w#1 +(word) main::w#2 + +OPTIMIZING CONTROL FLOW GRAPH +Culled Empty Block (label) @2 +Succesful SSA optimization Pass2CullEmptyBlocks +Not aliassing identity: main::SCREEN#2 main::SCREEN#2 +Alias (byte*) main::SCREEN#1 = (byte*) main::SCREEN#3 +Alias (signed word) main::sw#0 = (signed word/signed dword~) main::$3 +Succesful SSA optimization Pass2AliasElimination +Not aliassing identity: main::SCREEN#2 main::SCREEN#2 +Self Phi Eliminated (byte*) main::SCREEN#1 +Self Phi Eliminated (byte*) main::SCREEN#2 +Succesful SSA optimization Pass2SelfPhiElimination +Redundant Phi (byte*) main::SCREEN#1 (byte*) main::SCREEN#0 +Redundant Phi (byte*) main::SCREEN#2 (byte*) main::SCREEN#1 +Succesful SSA optimization Pass2RedundantPhiElimination +Simple Condition (bool~) main::$2 if((word) main::w#1!=rangelast(0,65535)) goto main::@1 +Simple Condition (bool~) main::$6 if((signed word) main::sw#1!=rangelast(main::sw#0,32766)) goto main::@2 +Succesful SSA optimization Pass2ConditionalJumpSimplification +Constant (const byte*) main::SCREEN#0 = ((byte*))1024 +Constant (const word) main::w#0 = 0 +Constant (const signed word) main::sw#0 = -32767 +Succesful SSA optimization Pass2ConstantIdentification +Consolidated array index constant in *(main::SCREEN#0+0) +Consolidated array index constant in *(main::SCREEN#0+1) +Consolidated array index constant in *(main::SCREEN#0+3) +Consolidated array index constant in *(main::SCREEN#0+4) +Succesful SSA optimization Pass2ConstantAdditionElimination +Resolved ranged next value main::w#1 ← ++ main::w#2 to ++ +Resolved ranged comparison value if(main::w#1!=rangelast(0,65535)) goto main::@1 to (byte/signed byte/word/signed word/dword/signed dword) 0 +Resolved ranged next value main::sw#1 ← ++ main::sw#2 to ++ +Resolved ranged comparison value if(main::sw#1!=rangelast(main::sw#0,32766)) goto main::@2 to (word/signed word/dword/signed dword) 32767 +Culled Empty Block (label) main::@3 +Succesful SSA optimization Pass2CullEmptyBlocks +OPTIMIZING CONTROL FLOW GRAPH +Inlining constant with var siblings (const word) main::w#0 +Inlining constant with var siblings (const word) main::w#0 +Inlining constant with var siblings (const signed word) main::sw#0 +Inlining constant with var siblings (const signed word) main::sw#0 +Constant inlined main::w#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 +Constant inlined main::sw#0 = -(word/signed word/dword/signed dword) 32767 +Succesful SSA optimization Pass2ConstantInlining +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return +Added new block during phi lifting main::@5(between main::@1 and main::@1) +Added new block during phi lifting main::@6(between main::@2 and main::@2) +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return main::@6 main::@5 +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +CALL GRAPH +Calls in [] to main:2 + +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... +Created 2 initial phi equivalence classes +Coalesced [20] main::sw#3 ← main::sw#1 +Coalesced [21] main::w#3 ← main::w#1 +Coalesced down to 2 phi equivalence classes +Culled Empty Block (label) main::@6 +Culled Empty Block (label) main::@5 +Block Sequence Planned @begin @1 @end main main::@1 main::@2 main::@return +Adding NOP phi() at start of @begin +Adding NOP phi() at start of @1 +Adding NOP phi() at start of @end +Adding NOP phi() at start of main +Propagating live ranges... +Propagating live ranges... +Propagating live ranges... + +FINAL CONTROL FLOW GRAPH +@begin: scope:[] from + [0] phi() [ ] ( ) + to:@1 +@1: scope:[] from @begin + [1] phi() [ ] ( ) + [2] call main [ ] ( ) + to:@end +@end: scope:[] from @1 + [3] phi() [ ] ( ) +main: scope:[main] from @1 + [4] phi() [ ] ( main:2 [ ] ) + to:main::@1 +main::@1: scope:[main] from main main::@1 + [5] (word) main::w#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(word) main::w#1 ) [ main::w#2 ] ( main:2 [ main::w#2 ] ) + [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) + [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ main::w#2 ] ( main:2 [ main::w#2 ] ) + [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) + [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ main::w#2 ] ( main:2 [ main::w#2 ] ) + [10] (word) main::w#1 ← ++ (word) main::w#2 [ main::w#1 ] ( main:2 [ main::w#1 ] ) + [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) + to:main::@2 +main::@2: scope:[main] from main::@1 main::@2 + [12] (signed word) main::sw#2 ← phi( main::@2/(signed word) main::sw#1 main::@1/-(word/signed word/dword/signed dword) 32767 ) [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) + [13] (byte~) main::$4 ← < (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) + [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) + [15] (byte~) main::$5 ← > (signed word) main::sw#2 [ main::sw#2 main::$5 ] ( main:2 [ main::sw#2 main::$5 ] ) + [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) + [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) + [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) + to:main::@return +main::@return: scope:[main] from main::@2 + [19] return [ ] ( main:2 [ ] ) + to:@return + +DOMINATORS +@begin dominated by @begin +@1 dominated by @1 @begin +@end dominated by @1 @begin @end +main dominated by @1 @begin main +main::@1 dominated by @1 @begin main::@1 main +main::@2 dominated by @1 @begin main::@1 main::@2 main +main::@return dominated by main::@return @1 @begin main::@1 main::@2 main + +NATURAL LOOPS +Found back edge: Loop head: main::@1 tails: main::@1 blocks: null +Found back edge: Loop head: main::@2 tails: main::@2 blocks: null +Populated: Loop head: main::@1 tails: main::@1 blocks: main::@1 +Populated: Loop head: main::@2 tails: main::@2 blocks: main::@2 +Loop head: main::@1 tails: main::@1 blocks: main::@1 +Loop head: main::@2 tails: main::@2 blocks: main::@2 + +NATURAL LOOPS WITH DEPTH +Found 0 loops in scope [] +Found 2 loops in scope [main] + Loop head: main::@1 tails: main::@1 blocks: main::@1 + Loop head: main::@2 tails: main::@2 blocks: main::@2 +Loop head: main::@1 tails: main::@1 blocks: main::@1 depth: 1 +Loop head: main::@2 tails: main::@2 blocks: main::@2 depth: 1 + + +VARIABLE REGISTER WEIGHTS +(void()) main() +(byte~) main::$0 22.0 +(byte~) main::$1 22.0 +(byte~) main::$4 22.0 +(byte~) main::$5 22.0 +(byte*) main::SCREEN +(signed word) main::sw +(signed word) main::sw#1 16.5 +(signed word) main::sw#2 8.8 +(word) main::w +(word) main::w#1 16.5 +(word) main::w#2 8.8 + +Initial phi equivalence classes +[ main::w#2 main::w#1 ] +[ main::sw#2 main::sw#1 ] +Added variable main::$0 to zero page equivalence class [ main::$0 ] +Added variable main::$1 to zero page equivalence class [ main::$1 ] +Added variable main::$4 to zero page equivalence class [ main::$4 ] +Added variable main::$5 to zero page equivalence class [ main::$5 ] +Complete equivalence classes +[ main::w#2 main::w#1 ] +[ main::sw#2 main::sw#1 ] +[ main::$0 ] +[ main::$1 ] +[ main::$4 ] +[ main::$5 ] +Allocated zp ZP_WORD:2 [ main::w#2 main::w#1 ] +Allocated zp ZP_WORD:4 [ main::sw#2 main::sw#1 ] +Allocated zp ZP_BYTE:6 [ main::$0 ] +Allocated zp ZP_BYTE:7 [ main::$1 ] +Allocated zp ZP_BYTE:8 [ main::$4 ] +Allocated zp ZP_BYTE:9 [ main::$5 ] + +INITIAL ASM +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label SCREEN = $400 + .label _0 = 6 + .label _1 = 7 + .label _4 = 8 + .label _5 = 9 + .label w = 2 + .label sw = 4 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (word) main::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + lda #<0 + sta w + lda #>0 + sta w+1 + jmp b1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG13 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG14 main::@1 + b1: + //SEG15 [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) -- vbuz1=_lo_vwuz2 + lda w + sta _0 + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ main::w#2 ] ( main:2 [ main::w#2 ] ) -- _deref_pbuc1=vbuz1 + lda _0 + sta SCREEN+0 + //SEG17 [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) -- vbuz1=_hi_vwuz2 + lda w+1 + sta _1 + //SEG18 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ main::w#2 ] ( main:2 [ main::w#2 ] ) -- _deref_pbuc1=vbuz1 + lda _1 + sta SCREEN+1 + //SEG19 [10] (word) main::w#1 ← ++ (word) main::w#2 [ main::w#1 ] ( main:2 [ main::w#1 ] ) -- vwuz1=_inc_vwuz1 + inc w + bne !+ + inc w+1 + !: + //SEG20 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) -- vwuz1_neq_0_then_la1 + lda w + bne b1_from_b1 + lda w+1 + bne b1_from_b1 + //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + //SEG22 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 + lda #<-$7fff + sta sw + lda #>-$7fff + sta sw+1 + jmp b2 + //SEG23 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + b2_from_b2: + //SEG24 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy + jmp b2 + //SEG25 main::@2 + b2: + //SEG26 [13] (byte~) main::$4 ← < (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) -- vbuz1=_lo_vwsz2 + lda sw + sta _4 + //SEG27 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) -- _deref_pbuc1=vbuz1 + lda _4 + sta SCREEN+3 + //SEG28 [15] (byte~) main::$5 ← > (signed word) main::sw#2 [ main::sw#2 main::$5 ] ( main:2 [ main::sw#2 main::$5 ] ) -- vbuz1=_hi_vwsz2 + lda sw+1 + sta _5 + //SEG29 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) -- _deref_pbuc1=vbuz1 + lda _5 + sta SCREEN+4 + //SEG30 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) -- vwsz1=_inc_vwsz1 + inc sw + bne !+ + inc sw+1 + !: + //SEG31 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) -- vwsz1_neq_vwuc1_then_la1 + lda sw+1 + cmp #>$7fff + bne b2_from_b2 + lda sw + cmp #<$7fff + bne b2_from_b2 + jmp breturn + //SEG32 main::@return + breturn: + //SEG33 [19] return [ ] ( main:2 [ ] ) + rts +} + +REGISTER UPLIFT POTENTIAL REGISTERS +Statement [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) always clobbers reg byte a +Statement [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) always clobbers reg byte a +Statement [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) always clobbers reg byte a +Statement [13] (byte~) main::$4 ← < (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) always clobbers reg byte a +Statement [15] (byte~) main::$5 ← > (signed word) main::sw#2 [ main::sw#2 main::$5 ] ( main:2 [ main::sw#2 main::$5 ] ) always clobbers reg byte a +Statement [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) always clobbers reg byte a +Potential registers zp ZP_WORD:2 [ main::w#2 main::w#1 ] : zp ZP_WORD:2 , +Potential registers zp ZP_WORD:4 [ main::sw#2 main::sw#1 ] : zp ZP_WORD:4 , +Potential registers zp ZP_BYTE:6 [ main::$0 ] : zp ZP_BYTE:6 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:7 [ main::$1 ] : zp ZP_BYTE:7 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:8 [ main::$4 ] : zp ZP_BYTE:8 , reg byte a , reg byte x , reg byte y , +Potential registers zp ZP_BYTE:9 [ main::$5 ] : zp ZP_BYTE:9 , reg byte a , reg byte x , reg byte y , + +REGISTER UPLIFT SCOPES +Uplift Scope [main] 25.3: zp ZP_WORD:2 [ main::w#2 main::w#1 ] 25.3: zp ZP_WORD:4 [ main::sw#2 main::sw#1 ] 22: zp ZP_BYTE:6 [ main::$0 ] 22: zp ZP_BYTE:7 [ main::$1 ] 22: zp ZP_BYTE:8 [ main::$4 ] 22: zp ZP_BYTE:9 [ main::$5 ] +Uplift Scope [] + +Uplifting [main] best 1158 combination zp ZP_WORD:2 [ main::w#2 main::w#1 ] zp ZP_WORD:4 [ main::sw#2 main::sw#1 ] reg byte a [ main::$0 ] reg byte a [ main::$1 ] reg byte a [ main::$4 ] reg byte a [ main::$5 ] +Limited combination testing to 100 combinations of 256 possible. +Uplifting [] best 1158 combination +Coalescing zero page register [ zp ZP_WORD:2 [ main::w#2 main::w#1 ] ] with [ zp ZP_WORD:4 [ main::sw#2 main::sw#1 ] ] + +ASSEMBLER BEFORE OPTIMIZATION +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +bbegin: +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +b1_from_bbegin: + jmp b1 +//SEG4 @1 +b1: +//SEG5 [2] call main [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] +main_from_b1: + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +bend_from_b1: + jmp bend +//SEG8 @end +bend: +//SEG9 main +main: { + .label SCREEN = $400 + .label w = 2 + .label sw = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + b1_from_main: + //SEG11 [5] phi (word) main::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + lda #<0 + sta w + lda #>0 + sta w+1 + jmp b1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + b1_from_b1: + //SEG13 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + jmp b1 + //SEG14 main::@1 + b1: + //SEG15 [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) -- vbuaa=_lo_vwuz1 + lda w + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ main::w#2 ] ( main:2 [ main::w#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+0 + //SEG17 [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) -- vbuaa=_hi_vwuz1 + lda w+1 + //SEG18 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ main::w#2 ] ( main:2 [ main::w#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+1 + //SEG19 [10] (word) main::w#1 ← ++ (word) main::w#2 [ main::w#1 ] ( main:2 [ main::w#1 ] ) -- vwuz1=_inc_vwuz1 + inc w + bne !+ + inc w+1 + !: + //SEG20 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) -- vwuz1_neq_0_then_la1 + lda w + bne b1_from_b1 + lda w+1 + bne b1_from_b1 + //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + b2_from_b1: + //SEG22 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 + lda #<-$7fff + sta sw + lda #>-$7fff + sta sw+1 + jmp b2 + //SEG23 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + b2_from_b2: + //SEG24 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy + jmp b2 + //SEG25 main::@2 + b2: + //SEG26 [13] (byte~) main::$4 ← < (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) -- vbuaa=_lo_vwsz1 + lda sw + //SEG27 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+3 + //SEG28 [15] (byte~) main::$5 ← > (signed word) main::sw#2 [ main::sw#2 main::$5 ] ( main:2 [ main::sw#2 main::$5 ] ) -- vbuaa=_hi_vwsz1 + lda sw+1 + //SEG29 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+4 + //SEG30 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) -- vwsz1=_inc_vwsz1 + inc sw + bne !+ + inc sw+1 + !: + //SEG31 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) -- vwsz1_neq_vwuc1_then_la1 + lda sw+1 + cmp #>$7fff + bne b2_from_b2 + lda sw + cmp #<$7fff + bne b2_from_b2 + jmp breturn + //SEG32 main::@return + breturn: + //SEG33 [19] return [ ] ( main:2 [ ] ) + rts +} + +ASSEMBLER OPTIMIZATIONS +Removing instruction jmp b1 +Removing instruction jmp bend +Removing instruction jmp b1 +Removing instruction jmp b2 +Removing instruction jmp breturn +Succesful ASM optimization Pass5NextJumpElimination +Removing instruction lda #>0 +Succesful ASM optimization Pass5UnnecesaryLoadElimination +Replacing label b1_from_b1 with b1 +Replacing label b1_from_b1 with b1 +Replacing label b2_from_b2 with b2 +Replacing label b2_from_b2 with b2 +Removing instruction bbegin: +Removing instruction b1_from_bbegin: +Removing instruction main_from_b1: +Removing instruction bend_from_b1: +Removing instruction b1_from_b1: +Removing instruction b2_from_b2: +Succesful ASM optimization Pass5RedundantLabelElimination +Removing instruction b1: +Removing instruction bend: +Removing instruction b1_from_main: +Removing instruction b2_from_b1: +Removing instruction breturn: +Succesful ASM optimization Pass5UnusedLabelElimination +Removing instruction jmp b1 +Removing instruction jmp b2 +Succesful ASM optimization Pass5NextJumpElimination + +FINAL SYMBOL TABLE +(label) @1 +(label) @begin +(label) @end +(void()) main() +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(signed word) main::sw +(signed word) main::sw#1 sw zp ZP_WORD:2 16.5 +(signed word) main::sw#2 sw zp ZP_WORD:2 8.8 +(word) main::w +(word) main::w#1 w zp ZP_WORD:2 16.5 +(word) main::w#2 w zp ZP_WORD:2 8.8 + +zp ZP_WORD:2 [ main::w#2 main::w#1 main::sw#2 main::sw#1 ] +reg byte a [ main::$0 ] +reg byte a [ main::$1 ] +reg byte a [ main::$4 ] +reg byte a [ main::$5 ] + + +FINAL ASSEMBLER +Score: 982 + +//SEG0 Basic Upstart +.pc = $801 "Basic" +:BasicUpstart(main) +.pc = $80d "Program" +//SEG1 Global Constants & labels +//SEG2 @begin +//SEG3 [1] phi from @begin to @1 [phi:@begin->@1] +//SEG4 @1 +//SEG5 [2] call main [ ] ( ) +//SEG6 [4] phi from @1 to main [phi:@1->main] + jsr main +//SEG7 [3] phi from @1 to @end [phi:@1->@end] +//SEG8 @end +//SEG9 main +main: { + .label SCREEN = $400 + .label w = 2 + .label sw = 2 + //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] + //SEG11 [5] phi (word) main::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vwuz1=vbuc1 + lda #<0 + sta w + sta w+1 + //SEG12 [5] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG13 [5] phi (word) main::w#2 = (word) main::w#1 [phi:main::@1->main::@1#0] -- register_copy + //SEG14 main::@1 + b1: + //SEG15 [6] (byte~) main::$0 ← < (word) main::w#2 [ main::w#2 main::$0 ] ( main:2 [ main::w#2 main::$0 ] ) -- vbuaa=_lo_vwuz1 + lda w + //SEG16 [7] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ main::w#2 ] ( main:2 [ main::w#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+0 + //SEG17 [8] (byte~) main::$1 ← > (word) main::w#2 [ main::w#2 main::$1 ] ( main:2 [ main::w#2 main::$1 ] ) -- vbuaa=_hi_vwuz1 + lda w+1 + //SEG18 [9] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ main::w#2 ] ( main:2 [ main::w#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+1 + //SEG19 [10] (word) main::w#1 ← ++ (word) main::w#2 [ main::w#1 ] ( main:2 [ main::w#1 ] ) -- vwuz1=_inc_vwuz1 + inc w + bne !+ + inc w+1 + !: + //SEG20 [11] if((word) main::w#1!=(byte/signed byte/word/signed word/dword/signed dword) 0) goto main::@1 [ main::w#1 ] ( main:2 [ main::w#1 ] ) -- vwuz1_neq_0_then_la1 + lda w + bne b1 + lda w+1 + bne b1 + //SEG21 [12] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG22 [12] phi (signed word) main::sw#2 = -(word/signed word/dword/signed dword) 32767 [phi:main::@1->main::@2#0] -- vwsz1=vwsc1 + lda #<-$7fff + sta sw + lda #>-$7fff + sta sw+1 + //SEG23 [12] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG24 [12] phi (signed word) main::sw#2 = (signed word) main::sw#1 [phi:main::@2->main::@2#0] -- register_copy + //SEG25 main::@2 + b2: + //SEG26 [13] (byte~) main::$4 ← < (signed word) main::sw#2 [ main::sw#2 main::$4 ] ( main:2 [ main::sw#2 main::$4 ] ) -- vbuaa=_lo_vwsz1 + lda sw + //SEG27 [14] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 3) ← (byte~) main::$4 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+3 + //SEG28 [15] (byte~) main::$5 ← > (signed word) main::sw#2 [ main::sw#2 main::$5 ] ( main:2 [ main::sw#2 main::$5 ] ) -- vbuaa=_hi_vwsz1 + lda sw+1 + //SEG29 [16] *((const byte*) main::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4) ← (byte~) main::$5 [ main::sw#2 ] ( main:2 [ main::sw#2 ] ) -- _deref_pbuc1=vbuaa + sta SCREEN+4 + //SEG30 [17] (signed word) main::sw#1 ← ++ (signed word) main::sw#2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) -- vwsz1=_inc_vwsz1 + inc sw + bne !+ + inc sw+1 + !: + //SEG31 [18] if((signed word) main::sw#1!=(word/signed word/dword/signed dword) 32767) goto main::@2 [ main::sw#1 ] ( main:2 [ main::sw#1 ] ) -- vwsz1_neq_vwuc1_then_la1 + lda sw+1 + cmp #>$7fff + bne b2 + lda sw + cmp #<$7fff + bne b2 + //SEG32 main::@return + //SEG33 [19] return [ ] ( main:2 [ ] ) + rts +} + diff --git a/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.sym b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.sym new file mode 100644 index 000000000..240bb7cc7 --- /dev/null +++ b/src/test/java/dk/camelot64/kickc/test/ref/forrangedwords.sym @@ -0,0 +1,25 @@ +(label) @1 +(label) @begin +(label) @end +(void()) main() +(byte~) main::$0 reg byte a 22.0 +(byte~) main::$1 reg byte a 22.0 +(byte~) main::$4 reg byte a 22.0 +(byte~) main::$5 reg byte a 22.0 +(label) main::@1 +(label) main::@2 +(label) main::@return +(byte*) main::SCREEN +(const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(signed word) main::sw +(signed word) main::sw#1 sw zp ZP_WORD:2 16.5 +(signed word) main::sw#2 sw zp ZP_WORD:2 8.8 +(word) main::w +(word) main::w#1 w zp ZP_WORD:2 16.5 +(word) main::w#2 w zp ZP_WORD:2 8.8 + +zp ZP_WORD:2 [ main::w#2 main::w#1 main::sw#2 main::sw#1 ] +reg byte a [ main::$0 ] +reg byte a [ main::$1 ] +reg byte a [ main::$4 ] +reg byte a [ main::$5 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/helloworld.log b/src/test/java/dk/camelot64/kickc/test/ref/helloworld.log index 75424a5a5..9f444e0b0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/helloworld.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/helloworld.log @@ -793,15 +793,15 @@ Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#2)!=(byte) '@ Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#10) goto print_ln::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_char_cursor#0 = ((byte*))1024 -Constant (const string) print_str::str#1 = main::str +Constant (const byte*) print_str::str#1 = main::str Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) main::@2 Culled Empty Block (label) @16 Succesful SSA optimization Pass2CullEmptyBlocks OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_char_cursor#0 Inlining constant with var siblings (const byte*) print_char_cursor#0 Constant inlined print_char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.cfg b/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.cfg index 315f45bfd..b8198ba2b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.cfg @@ -24,10 +24,10 @@ print2: scope:[print2] from main main::@1 print2::@1: scope:[print2] from print2 print2::@1 [10] (byte) print2::j#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::j#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) [10] (byte) print2::i#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::i#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) - [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) + [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) - [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) + [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) to:print2::@return print2::@return: scope:[print2] from print2::@1 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.log b/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.log index 6cfe58d3f..3f0f6f52e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.log @@ -209,14 +209,14 @@ Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) print2::$0 if(*((byte*) print2::msg#3 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) screen#0 = ((byte*))1024 -Constant (const string) main::hello#0 = main::$3 +Constant (const byte*) main::hello#0 = main::$3 Constant (const byte) print2::j#0 = 0 Constant (const byte) print2::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print2::at#0 = screen#0 -Constant (const string) print2::msg#0 = main::hello#0 +Constant (const byte*) print2::msg#0 = main::hello#0 Constant (const byte*) print2::at#1 = screen#0+80 -Constant (const string) print2::msg#1 = main::hello#0 +Constant (const byte*) print2::msg#1 = main::hello#0 Succesful SSA optimization Pass2ConstantIdentification OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) print2::j#0 @@ -225,18 +225,18 @@ Inlining constant with var siblings (const byte) print2::i#0 Inlining constant with var siblings (const byte) print2::i#0 Inlining constant with var siblings (const byte*) print2::at#0 Inlining constant with different constant siblings (const byte*) print2::at#0 -Inlining constant with var siblings (const string) print2::msg#0 +Inlining constant with var siblings (const byte*) print2::msg#0 Inlining constant with var siblings (const byte*) print2::at#1 -Inlining constant with var siblings (const string) print2::msg#1 -Constant inlined print2::msg#1 = (const string) main::hello#0 +Inlining constant with var siblings (const byte*) print2::msg#1 +Constant inlined print2::msg#1 = (const byte*) main::hello#0 Constant inlined print2::j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined print2::msg#0 = (const string) main::hello#0 +Constant inlined print2::msg#0 = (const byte*) main::hello#0 Constant inlined print2::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print2::at#1 = (const byte*) screen#0+(byte/signed byte/word/signed word/dword/signed dword) 80 -Constant inlined main::$3 = (const string) main::hello#0 +Constant inlined main::$3 = (const byte*) main::hello#0 Constant inlined print2::at#0 = (const byte*) screen#0 Succesful SSA optimization Pass2ConstantInlining -Identical Phi Values (byte*) print2::msg#3 (const string) main::hello#0 +Identical Phi Values (byte*) print2::msg#3 (const byte*) main::hello#0 Succesful SSA optimization Pass2IdenticalPhiElimination Block Sequence Planned @begin @2 @end main main::@1 main::@return print2 print2::@1 print2::@return Added new block during phi lifting print2::@3(between print2::@1 and print2::@1) @@ -301,10 +301,10 @@ print2: scope:[print2] from main main::@1 print2::@1: scope:[print2] from print2 print2::@1 [10] (byte) print2::j#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::j#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) [10] (byte) print2::i#2 ← phi( print2/(byte/signed byte/word/signed word/dword/signed dword) 0 print2::@1/(byte) print2::i#1 ) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) - [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) + [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) - [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) + [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) to:print2::@return print2::@return: scope:[print2] from print2::@1 [15] return [ ] ( main:2::print2:5 [ ] main:2::print2:7 [ ] ) @@ -437,7 +437,7 @@ print2: { jmp b1 //SEG27 print2::@1 b1: - //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 + //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuz2=pbuc1_derefidx_vbuz3 ldy i lda main.hello,y ldy j @@ -449,7 +449,7 @@ print2: { sta j //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- vbuz1=_inc_vbuz1 inc i - //SEG31 [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG31 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy i lda main.hello,y cmp #'@' @@ -462,12 +462,12 @@ print2: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) always clobbers reg byte a +Statement [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ] -Statement [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) always clobbers reg byte a -Statement [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) always clobbers reg byte a -Statement [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) always clobbers reg byte a +Statement [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) always clobbers reg byte a +Statement [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) always clobbers reg byte a Potential registers zp ZP_WORD:2 [ print2::at#3 ] : zp ZP_WORD:2 , Potential registers zp ZP_BYTE:4 [ print2::i#2 print2::i#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:5 [ print2::j#2 print2::j#1 ] : zp ZP_BYTE:5 , reg byte x , reg byte y , @@ -553,7 +553,7 @@ print2: { jmp b1 //SEG27 print2::@1 b1: - //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda main.hello,x sta (at),y //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) -- vbuyy=vbuyy_plus_2 @@ -561,7 +561,7 @@ print2: { iny //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG31 [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG31 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda main.hello,x cmp #'@' bne b1_from_b1 @@ -608,7 +608,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte*) main::hello -(const string) main::hello#0 hello = (string) "hello world!@" +(const byte*) main::hello#0 hello = (string) "hello world!@" (void()) print2((byte*) print2::at , (byte*) print2::msg) (label) print2::@1 (label) print2::@return @@ -684,7 +684,7 @@ print2: { //SEG26 [10] phi (byte) print2::i#2 = (byte) print2::i#1 [phi:print2::@1->print2::@1#1] -- register_copy //SEG27 print2::@1 b1: - //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const string) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx + //SEG28 [11] *((byte*) print2::at#3 + (byte) print2::j#2) ← *((const byte*) main::hello#0 + (byte) print2::i#2) [ print2::at#3 print2::i#2 print2::j#2 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#2 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#2 ] ) -- pbuz1_derefidx_vbuyy=pbuc1_derefidx_vbuxx lda main.hello,x sta (at),y //SEG29 [12] (byte) print2::j#1 ← (byte) print2::j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ print2::at#3 print2::i#2 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#2 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#2 print2::j#1 ] ) -- vbuyy=vbuyy_plus_2 @@ -692,7 +692,7 @@ print2: { iny //SEG30 [13] (byte) print2::i#1 ← ++ (byte) print2::i#2 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- vbuxx=_inc_vbuxx inx - //SEG31 [14] if(*((const string) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG31 [14] if(*((const byte*) main::hello#0 + (byte) print2::i#1)!=(byte) '@') goto print2::@1 [ print2::at#3 print2::i#1 print2::j#1 ] ( main:2::print2:5 [ print2::at#3 print2::i#1 print2::j#1 ] main:2::print2:7 [ print2::at#3 print2::i#1 print2::j#1 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda main.hello,x cmp #'@' bne b1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.sym b/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.sym index 9e5cbdad2..bab1805d7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/helloworld2.sym @@ -5,7 +5,7 @@ (label) main::@1 (label) main::@return (byte*) main::hello -(const string) main::hello#0 hello = (string) "hello world!@" +(const byte*) main::hello#0 hello = (string) "hello world!@" (void()) print2((byte*) print2::at , (byte*) print2::msg) (label) print2::@1 (label) print2::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg index 961f313ac..64d9488dc 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.cfg @@ -22,7 +22,7 @@ main::@4: scope:[main] from main::@1 [9] call print_ln [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) to:main::@5 main::@5: scope:[main] from main::@4 - [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) + [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ print_line_cursor#1 main::i#1 ] ( main:2 [ print_line_cursor#1 main::i#1 ] ) [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 [ print_line_cursor#1 main::i#1 ] ( main:2 [ print_line_cursor#1 main::i#1 ] ) to:main::@return @@ -48,7 +48,7 @@ print_str: scope:[print_str] from main::@1 to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 [21] (byte*) print_char_cursor#12 ← phi( print_str/(byte*) print_char_cursor#25 print_str::@2/(byte*) print_char_cursor#1 ) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) - [21] (byte*) print_str::str#2 ← phi( print_str/(const string) txt#0 print_str::@2/(byte*) print_str::str#0 ) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) + [21] (byte*) print_str::str#2 ← phi( print_str/(const byte[]) txt#0 print_str::@2/(byte*) print_str::str#0 ) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log index 8163bd229..0a9a0c8eb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.log @@ -939,12 +939,12 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$3 if((byte) main::i#1!=rangelast(0,10)) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 -Constant (const string) txt#0 = $0 +Constant (const byte[]) txt#0 = $0 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const string) print_str::str#1 = txt#0 +Constant (const byte*) print_str::str#1 = txt#0 Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(txt#0+1) Consolidated array index constant in *(txt#0+1) @@ -962,8 +962,8 @@ Not aliassing across scopes: print_line_cursor#9 print_line_cursor#19 Not aliassing across scopes: print_char_cursor#12 print_char_cursor#25 Not aliassing across scopes: print_line_cursor#9 print_line_cursor#19 OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte*) print_cls::sc#0 Inlining constant with var siblings (const byte) main::i#0 @@ -972,10 +972,10 @@ Inlining constant with var siblings (const byte*) print_line_cursor#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 main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined print_str::str#1 = (const string) txt#0 +Constant inlined print_str::str#1 = (const byte[]) txt#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::sc#0 = ((byte*))(word/signed word/dword/signed dword) 1024 -Constant inlined $0 = (const string) txt#0 +Constant inlined $0 = (const byte[]) txt#0 Constant inlined print_line_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @15 @end main main::@1 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 print_cls print_cls::@1 print_cls::@return @@ -1055,7 +1055,7 @@ main::@4: scope:[main] from main::@1 [9] call print_ln [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) to:main::@5 main::@5: scope:[main] from main::@4 - [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) + [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) [11] (byte) main::i#1 ← ++ (byte) main::i#2 [ print_line_cursor#1 main::i#1 ] ( main:2 [ print_line_cursor#1 main::i#1 ] ) [12] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 11) goto main::@6 [ print_line_cursor#1 main::i#1 ] ( main:2 [ print_line_cursor#1 main::i#1 ] ) to:main::@return @@ -1081,7 +1081,7 @@ print_str: scope:[print_str] from main::@1 to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 [21] (byte*) print_char_cursor#12 ← phi( print_str/(byte*) print_char_cursor#25 print_str::@2/(byte*) print_char_cursor#1 ) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) - [21] (byte*) print_str::str#2 ← phi( print_str/(const string) txt#0 print_str::@2/(byte*) print_str::str#0 ) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) + [21] (byte*) print_str::str#2 ← phi( print_str/(const byte[]) txt#0 print_str::@2/(byte*) print_str::str#0 ) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) [22] if(*((byte*) print_str::str#2)!=(byte) '@') goto print_str::@2 [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) to:print_str::@return print_str::@return: scope:[print_str] from print_str::@1 @@ -1265,7 +1265,7 @@ main: { jmp b5 //SEG23 main::@5 b5: - //SEG24 [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc2 + //SEG24 [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc2 lda txt+1 clc adc #1 @@ -1333,7 +1333,7 @@ print_str: { //SEG44 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] b1_from_print_str: //SEG45 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy - //SEG46 [21] phi (byte*) print_str::str#2 = (const string) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG46 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #txt @@ -1416,7 +1416,7 @@ print_cls: { txt: .text "camelot@" REGISTER UPLIFT POTENTIAL REGISTERS -Statement [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Statement [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a @@ -1426,7 +1426,7 @@ Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ ma Statement [24] *((byte*) print_char_cursor#12) ← *((byte*) print_str::str#2) [ print_char_cursor#12 print_str::str#2 ] ( main:2::print_str:7 [ print_line_cursor#19 main::i#2 print_char_cursor#12 print_str::str#2 ] ) always clobbers reg byte a reg byte y Statement [29] *((byte*) print_cls::sc#2) ← (byte) ' ' [ print_cls::sc#2 ] ( main:2::print_cls:5 [ print_cls::sc#2 ] ) always clobbers reg byte a reg byte y Statement [31] if((byte*) print_cls::sc#1!=((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000) goto print_cls::@1 [ print_cls::sc#1 ] ( main:2::print_cls:5 [ print_cls::sc#1 ] ) always clobbers reg byte a -Statement [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a +Statement [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) always clobbers reg byte a Statement [14] (byte*~) print_char_cursor#29 ← (byte*) print_line_cursor#1 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ( main:2 [ print_char_cursor#29 print_line_cursor#1 main::i#1 ] ) always clobbers reg byte a Statement [17] (byte*) print_line_cursor#1 ← (byte*) print_line_cursor#9 + (byte/signed byte/word/signed word/dword/signed dword) 40 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a Statement [18] if((byte*) print_line_cursor#1<(byte*) print_char_cursor#12) goto print_ln::@1 [ print_line_cursor#1 print_char_cursor#12 ] ( main:2::print_ln:9 [ main::i#2 print_line_cursor#1 print_char_cursor#12 ] ) always clobbers reg byte a @@ -1520,7 +1520,7 @@ main: { jmp b5 //SEG23 main::@5 b5: - //SEG24 [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc2 + //SEG24 [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc2 lda txt+1 clc adc #1 @@ -1587,7 +1587,7 @@ print_str: { //SEG44 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] b1_from_print_str: //SEG45 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy - //SEG46 [21] phi (byte*) print_str::str#2 = (const string) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG46 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #txt @@ -1758,7 +1758,7 @@ FINAL SYMBOL TABLE (byte*) print_str::str#0 str zp ZP_WORD:4 202.0 (byte*) print_str::str#2 str zp ZP_WORD:4 101.0 (byte[]) txt -(const string) txt#0 txt = (string) "camelot@" +(const byte[]) txt#0 txt = (string) "camelot@" reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] @@ -1813,7 +1813,7 @@ main: { //SEG22 [15] phi from main::@4 to print_ln [phi:main::@4->print_ln] jsr print_ln //SEG23 main::@5 - //SEG24 [10] *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const string) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc2 + //SEG24 [10] *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← ++ *((const byte[]) txt#0+(byte/signed byte/word/signed word/dword/signed dword) 1) [ main::i#2 print_line_cursor#1 ] ( main:2 [ main::i#2 print_line_cursor#1 ] ) -- _deref_pbuc1=_inc__deref_pbuc2 lda txt+1 clc adc #1 @@ -1871,7 +1871,7 @@ print_str: { .label str = 4 //SEG44 [21] phi from print_str to print_str::@1 [phi:print_str->print_str::@1] //SEG45 [21] phi (byte*) print_char_cursor#12 = (byte*) print_char_cursor#25 [phi:print_str->print_str::@1#0] -- register_copy - //SEG46 [21] phi (byte*) print_str::str#2 = (const string) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 + //SEG46 [21] phi (byte*) print_str::str#2 = (const byte[]) txt#0 [phi:print_str->print_str::@1#1] -- pbuz1=pbuc1 lda #txt diff --git a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym index 764db589b..2d3439efb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/incrementinarray.sym @@ -37,7 +37,7 @@ (byte*) print_str::str#0 str zp ZP_WORD:4 202.0 (byte*) print_str::str#2 str zp ZP_WORD:4 101.0 (byte[]) txt -(const string) txt#0 txt = (string) "camelot@" +(const byte[]) txt#0 txt = (string) "camelot@" reg byte x [ main::i#2 main::i#1 ] zp ZP_WORD:2 [ print_line_cursor#9 print_line_cursor#19 print_line_cursor#1 print_cls::sc#2 print_cls::sc#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.cfg index c48299ba7..e3470ab52 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.cfg @@ -16,10 +16,10 @@ main::print1: scope:[main] from main main::print1_@1: scope:[main] from main::print1 main::print1_@1 [6] (byte) main::print1_j#2 ← phi( main::print1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print1_@1/(byte) main::print1_j#1 ) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) [6] (byte) main::print1_i#2 ← phi( main::print1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print1_@1/(byte) main::print1_i#1 ) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) - [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) + [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print1_i#2 main::print1_j#1 ] ( main:2 [ main::print1_i#2 main::print1_j#1 ] ) [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) - [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) + [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) to:main::print2 main::print2: scope:[main] from main::print1_@1 [11] phi() [ ] ( main:2 [ ] ) @@ -27,10 +27,10 @@ main::print2: scope:[main] from main::print1_@1 main::print2_@1: scope:[main] from main::print2 main::print2_@1 [12] (byte) main::print2_j#2 ← phi( main::print2/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print2_@1/(byte) main::print2_j#1 ) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) [12] (byte) main::print2_i#2 ← phi( main::print2/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print2_@1/(byte) main::print2_i#1 ) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) - [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) + [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print2_i#2 main::print2_j#1 ] ( main:2 [ main::print2_i#2 main::print2_j#1 ] ) [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) - [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) + [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) to:main::@return main::@return: scope:[main] from main::print2_@1 [17] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.log index ce3e26b6d..240489f64 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.log @@ -261,7 +261,7 @@ Simple Condition (bool) main::print1_$0#0 if(*((byte*) main::print1_msg#0 + (byt Simple Condition (bool) main::print2_$0#0 if(*((byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) screen#0 = ((byte*))1024 -Constant (const string) main::print1_msg#0 = main::$4 +Constant (const byte*) main::print1_msg#0 = main::$4 Constant (const byte) main::print1_j#0 = 0 Constant (const byte) main::print1_i#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$1 = 2*40 @@ -286,7 +286,7 @@ Constant inlined main::print2_j#0 = (byte/signed byte/word/signed word/dword/sig Constant inlined main::print1_at#0 = (const byte*) screen#0 Constant inlined main::print2_i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::$1 = (byte/signed byte/word/signed word/dword/signed dword) 2*(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined main::$4 = (const string) main::print1_msg#0 +Constant inlined main::$4 = (const byte*) main::print1_msg#0 Constant inlined main::print1_i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::print1_j#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining @@ -346,10 +346,10 @@ main::print1: scope:[main] from main main::print1_@1: scope:[main] from main::print1 main::print1_@1 [6] (byte) main::print1_j#2 ← phi( main::print1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print1_@1/(byte) main::print1_j#1 ) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) [6] (byte) main::print1_i#2 ← phi( main::print1/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print1_@1/(byte) main::print1_i#1 ) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) - [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) + [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print1_i#2 main::print1_j#1 ] ( main:2 [ main::print1_i#2 main::print1_j#1 ] ) [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) - [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) + [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) to:main::print2 main::print2: scope:[main] from main::print1_@1 [11] phi() [ ] ( main:2 [ ] ) @@ -357,10 +357,10 @@ main::print2: scope:[main] from main::print1_@1 main::print2_@1: scope:[main] from main::print2 main::print2_@1 [12] (byte) main::print2_j#2 ← phi( main::print2/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print2_@1/(byte) main::print2_j#1 ) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) [12] (byte) main::print2_i#2 ← phi( main::print2/(byte/signed byte/word/signed word/dword/signed dword) 0 main::print2_@1/(byte) main::print2_i#1 ) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) - [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) + [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print2_i#2 main::print2_j#1 ] ( main:2 [ main::print2_i#2 main::print2_j#1 ] ) [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) - [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) + [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) to:main::@return main::@return: scope:[main] from main::print2_@1 [17] return [ ] ( main:2 [ ] ) @@ -483,7 +483,7 @@ main: { jmp print1_b1 //SEG18 main::print1_@1 print1_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy print1_i lda print1_msg,y ldy print1_j @@ -495,7 +495,7 @@ main: { sta print1_j //SEG21 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- vbuz1=_inc_vbuz1 inc print1_i - //SEG22 [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG22 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy print1_i lda print1_msg,y cmp #'@' @@ -521,7 +521,7 @@ main: { jmp print2_b1 //SEG31 main::print2_@1 print2_b1: - //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 + //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz2 ldy print2_i lda print1_msg,y ldy print2_j @@ -533,7 +533,7 @@ main: { sta print2_j //SEG34 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- vbuz1=_inc_vbuz1 inc print2_i - //SEG35 [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG35 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy print2_i lda print1_msg,y cmp #'@' @@ -547,18 +547,18 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::print1_i#2 main::print1_i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::print1_j#2 main::print1_j#1 ] -Statement [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a +Statement [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) always clobbers reg byte a +Statement [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:4 [ main::print2_i#2 main::print2_i#1 ] Removing always clobbered register reg byte a as potential for zp ZP_BYTE:5 [ main::print2_j#2 main::print2_j#1 ] -Statement [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) always clobbers reg byte a -Statement [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a -Statement [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a -Statement [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) always clobbers reg byte a +Statement [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) always clobbers reg byte a +Statement [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) always clobbers reg byte a +Statement [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) always clobbers reg byte a +Statement [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::print1_i#2 main::print1_i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:3 [ main::print1_j#2 main::print1_j#1 ] : zp ZP_BYTE:3 , reg byte x , reg byte y , Potential registers zp ZP_BYTE:4 [ main::print2_i#2 main::print2_i#1 ] : zp ZP_BYTE:4 , reg byte x , reg byte y , @@ -616,7 +616,7 @@ main: { jmp print1_b1 //SEG18 main::print1_@1 print1_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta screen,x //SEG20 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print1_i#2 main::print1_j#1 ] ( main:2 [ main::print1_i#2 main::print1_j#1 ] ) -- vbuxx=vbuxx_plus_2 @@ -624,7 +624,7 @@ main: { inx //SEG21 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG22 [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG22 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print1_b1_from_print1_b1 @@ -647,7 +647,7 @@ main: { jmp print2_b1 //SEG31 main::print2_@1 print2_b1: - //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta print2_at,x //SEG33 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print2_i#2 main::print2_j#1 ] ( main:2 [ main::print2_i#2 main::print2_j#1 ] ) -- vbuxx=vbuxx_plus_2 @@ -655,7 +655,7 @@ main: { inx //SEG34 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG35 [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG35 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print2_b1_from_print2_b1 @@ -717,7 +717,7 @@ FINAL SYMBOL TABLE (byte) main::print1_j#1 reg byte x 7.333333333333333 (byte) main::print1_j#2 reg byte x 16.5 (byte*) main::print1_msg -(const string) main::print1_msg#0 print1_msg = (string) "hello world!@" +(const byte*) main::print1_msg#0 print1_msg = (string) "hello world!@" (label) main::print2 (bool~) main::print2_$0 (label) main::print2_@1 @@ -771,7 +771,7 @@ main: { //SEG17 [6] phi (byte) main::print1_i#2 = (byte) main::print1_i#1 [phi:main::print1_@1->main::print1_@1#1] -- register_copy //SEG18 main::print1_@1 print1_b1: - //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG19 [7] *((const byte*) screen#0 + (byte) main::print1_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print1_i#2) [ main::print1_i#2 main::print1_j#2 ] ( main:2 [ main::print1_i#2 main::print1_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta screen,x //SEG20 [8] (byte) main::print1_j#1 ← (byte) main::print1_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print1_i#2 main::print1_j#1 ] ( main:2 [ main::print1_i#2 main::print1_j#1 ] ) -- vbuxx=vbuxx_plus_2 @@ -779,7 +779,7 @@ main: { inx //SEG21 [9] (byte) main::print1_i#1 ← ++ (byte) main::print1_i#2 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG22 [10] if(*((const string) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG22 [10] if(*((const byte*) main::print1_msg#0 + (byte) main::print1_i#1)!=(byte) '@') goto main::print1_@1 [ main::print1_i#1 main::print1_j#1 ] ( main:2 [ main::print1_i#1 main::print1_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print1_b1 @@ -795,7 +795,7 @@ main: { //SEG30 [12] phi (byte) main::print2_i#2 = (byte) main::print2_i#1 [phi:main::print2_@1->main::print2_@1#1] -- register_copy //SEG31 main::print2_@1 print2_b1: - //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const string) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy + //SEG32 [13] *((const byte*) main::print2_at#0 + (byte) main::print2_j#2) ← *((const byte*) main::print1_msg#0 + (byte) main::print2_i#2) [ main::print2_i#2 main::print2_j#2 ] ( main:2 [ main::print2_i#2 main::print2_j#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuyy lda print1_msg,y sta print2_at,x //SEG33 [14] (byte) main::print2_j#1 ← (byte) main::print2_j#2 + (byte/signed byte/word/signed word/dword/signed dword) 2 [ main::print2_i#2 main::print2_j#1 ] ( main:2 [ main::print2_i#2 main::print2_j#1 ] ) -- vbuxx=vbuxx_plus_2 @@ -803,7 +803,7 @@ main: { inx //SEG34 [15] (byte) main::print2_i#1 ← ++ (byte) main::print2_i#2 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- vbuyy=_inc_vbuyy iny - //SEG35 [16] if(*((const string) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 + //SEG35 [16] if(*((const byte*) main::print1_msg#0 + (byte) main::print2_i#1)!=(byte) '@') goto main::print2_@1 [ main::print2_i#1 main::print2_j#1 ] ( main:2 [ main::print2_i#1 main::print2_j#1 ] ) -- pbuc1_derefidx_vbuyy_neq_vbuc2_then_la1 lda print1_msg,y cmp #'@' bne print2_b1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.sym b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.sym index 52fe8fbad..8cf8ff40f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-function-print.sym @@ -15,7 +15,7 @@ (byte) main::print1_j#1 reg byte x 7.333333333333333 (byte) main::print1_j#2 reg byte x 16.5 (byte*) main::print1_msg -(const string) main::print1_msg#0 print1_msg = (string) "hello world!@" +(const byte*) main::print1_msg#0 print1_msg = (string) "hello world!@" (label) main::print2 (bool~) main::print2_$0 (label) main::print2_@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.cfg index cc7beaf72..0f868d72d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.cfg @@ -27,7 +27,7 @@ print_msg::@3: scope:[print_msg] from print_msg [11] phi() [ screen#18 ] ( main:2::print_msg:5 [ screen#18 ] main:2::print_msg:7 [ screen#18 ] ) to:print_msg::@2 print_msg::@2: scope:[print_msg] from print_msg print_msg::@3 - [12] (byte*) print_msg::msg#2 ← phi( print_msg/(const string) print_msg::msg#0 print_msg::@3/(const string) print_msg::msg#1 ) [ screen#18 print_msg::msg#2 ] ( main:2::print_msg:5 [ screen#18 print_msg::msg#2 ] main:2::print_msg:7 [ screen#18 print_msg::msg#2 ] ) + [12] (byte*) print_msg::msg#2 ← phi( print_msg/(const byte*) print_msg::msg#0 print_msg::@3/(const byte*) print_msg::msg#1 ) [ screen#18 print_msg::msg#2 ] ( main:2::print_msg:5 [ screen#18 print_msg::msg#2 ] main:2::print_msg:7 [ screen#18 print_msg::msg#2 ] ) [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 [ screen#18 print::msg#0 ] ( main:2::print_msg:5 [ screen#18 print::msg#0 ] main:2::print_msg:7 [ screen#18 print::msg#0 ] ) [14] call print [ screen#14 ] ( main:2::print_msg:5 [ screen#14 ] main:2::print_msg:7 [ screen#14 ] ) to:print_msg::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.log index caa375895..120d87030 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.log @@ -346,8 +346,8 @@ Simple Condition (bool~) print::$0 if(*((byte*) print::msg#2)!=(byte) '@') goto Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte) print_msg::idx#0 = 1 Constant (const byte) print_msg::idx#1 = 2 -Constant (const string) print_msg::msg#0 = print_msg::$2 -Constant (const string) print_msg::msg#1 = print_msg::$3 +Constant (const byte*) print_msg::msg#0 = print_msg::$2 +Constant (const byte*) print_msg::msg#1 = print_msg::$3 Constant (const byte*) screen#20 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) main::@2 @@ -370,21 +370,21 @@ Inlining constant with var siblings (const byte) print_msg::idx#0 Inlining constant with different constant siblings (const byte) print_msg::idx#0 Inlining constant with var siblings (const byte) print_msg::idx#1 Inlining constant with different constant siblings (const byte) print_msg::idx#1 -Inlining constant with var siblings (const string) print_msg::msg#0 -Inlining constant with var siblings (const string) print_msg::msg#1 +Inlining constant with var siblings (const byte*) print_msg::msg#0 +Inlining constant with var siblings (const byte*) print_msg::msg#1 Inlining constant with var siblings (const byte*) screen#20 Inlining constant with var siblings (const byte*) screen#20 Inlining constant with var siblings (const byte*) screen#20 Constant inlined print_msg::idx#1 = (byte/signed byte/word/signed word/dword/signed dword) 2 Constant inlined print_msg::idx#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined screen#20 = ((byte*))(word/signed word/dword/signed dword) 1024 -Constant inlined print_msg::$3 = (const string) print_msg::msg#1 -Constant inlined print_msg::$2 = (const string) print_msg::msg#0 +Constant inlined print_msg::$3 = (const byte*) print_msg::msg#1 +Constant inlined print_msg::$2 = (const byte*) print_msg::msg#0 Succesful SSA optimization Pass2ConstantInlining -Inlining constant with var siblings (const string) print_msg::msg#0 -Inlining constant with var siblings (const string) print_msg::msg#1 -Inlining constant with var siblings (const string) print_msg::msg#0 -Inlining constant with var siblings (const string) print_msg::msg#1 +Inlining constant with var siblings (const byte*) print_msg::msg#0 +Inlining constant with var siblings (const byte*) print_msg::msg#1 +Inlining constant with var siblings (const byte*) print_msg::msg#0 +Inlining constant with var siblings (const byte*) print_msg::msg#1 Block Sequence Planned @begin @3 @end main main::@1 main::@return print_msg print_msg::@3 print_msg::@2 print_msg::@return print print::@1 print::@return print::@2 Block Sequence Planned @begin @3 @end main main::@1 main::@return print_msg print_msg::@3 print_msg::@2 print_msg::@return print print::@1 print::@return print::@2 Adding NOP phi() at start of @begin @@ -456,7 +456,7 @@ print_msg::@3: scope:[print_msg] from print_msg [11] phi() [ screen#18 ] ( main:2::print_msg:5 [ screen#18 ] main:2::print_msg:7 [ screen#18 ] ) to:print_msg::@2 print_msg::@2: scope:[print_msg] from print_msg print_msg::@3 - [12] (byte*) print_msg::msg#2 ← phi( print_msg/(const string) print_msg::msg#0 print_msg::@3/(const string) print_msg::msg#1 ) [ screen#18 print_msg::msg#2 ] ( main:2::print_msg:5 [ screen#18 print_msg::msg#2 ] main:2::print_msg:7 [ screen#18 print_msg::msg#2 ] ) + [12] (byte*) print_msg::msg#2 ← phi( print_msg/(const byte*) print_msg::msg#0 print_msg::@3/(const byte*) print_msg::msg#1 ) [ screen#18 print_msg::msg#2 ] ( main:2::print_msg:5 [ screen#18 print_msg::msg#2 ] main:2::print_msg:7 [ screen#18 print_msg::msg#2 ] ) [13] (byte*) print::msg#0 ← (byte*) print_msg::msg#2 [ screen#18 print::msg#0 ] ( main:2::print_msg:5 [ screen#18 print::msg#0 ] main:2::print_msg:7 [ screen#18 print::msg#0 ] ) [14] call print [ screen#14 ] ( main:2::print_msg:5 [ screen#14 ] main:2::print_msg:7 [ screen#14 ] ) to:print_msg::@return @@ -613,7 +613,7 @@ print_msg: { b3: //SEG26 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] b2_from_b3: - //SEG27 [12] phi (byte*) print_msg::msg#2 = (const string) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG27 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_1 @@ -621,7 +621,7 @@ print_msg: { jmp b2 //SEG28 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] b2_from_print_msg: - //SEG29 [12] phi (byte*) print_msg::msg#2 = (const string) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG29 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_0 @@ -777,7 +777,7 @@ print_msg: { b3: //SEG26 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] b2_from_b3: - //SEG27 [12] phi (byte*) print_msg::msg#2 = (const string) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG27 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_1 @@ -785,7 +785,7 @@ print_msg: { jmp b2 //SEG28 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] b2_from_print_msg: - //SEG29 [12] phi (byte*) print_msg::msg#2 = (const string) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG29 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_0 @@ -908,8 +908,8 @@ FINAL SYMBOL TABLE (byte) print_msg::idx (byte) print_msg::idx#2 reg byte x 2.0 (byte*) print_msg::msg -(const string) print_msg::msg#0 msg#0 = (string) "Hello @" -(const string) print_msg::msg#1 msg#1 = (string) "World!@" +(const byte*) print_msg::msg#0 msg#0 = (string) "Hello @" +(const byte*) print_msg::msg#1 msg#1 = (string) "World!@" (byte*) print_msg::msg#2 msg zp ZP_WORD:4 2.0 (byte*) screen (byte*) screen#14 screen zp ZP_WORD:2 4.625 @@ -971,7 +971,7 @@ print_msg: { //SEG24 [11] phi from print_msg to print_msg::@3 [phi:print_msg->print_msg::@3] //SEG25 print_msg::@3 //SEG26 [12] phi from print_msg::@3 to print_msg::@2 [phi:print_msg::@3->print_msg::@2] - //SEG27 [12] phi (byte*) print_msg::msg#2 = (const string) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG27 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#1 [phi:print_msg::@3->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_1 @@ -979,7 +979,7 @@ print_msg: { jmp b2 //SEG28 [12] phi from print_msg to print_msg::@2 [phi:print_msg->print_msg::@2] b1: - //SEG29 [12] phi (byte*) print_msg::msg#2 = (const string) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 + //SEG29 [12] phi (byte*) print_msg::msg#2 = (const byte*) print_msg::msg#0 [phi:print_msg->print_msg::@2#0] -- pbuz1=pbuc1 lda #msg_0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.sym b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.sym index 8cc2abda7..39bbd2a88 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-2.sym @@ -19,8 +19,8 @@ (byte) print_msg::idx (byte) print_msg::idx#2 reg byte x 2.0 (byte*) print_msg::msg -(const string) print_msg::msg#0 msg#0 = (string) "Hello @" -(const string) print_msg::msg#1 msg#1 = (string) "World!@" +(const byte*) print_msg::msg#0 msg#0 = (string) "Hello @" +(const byte*) print_msg::msg#1 msg#1 = (string) "World!@" (byte*) print_msg::msg#2 msg zp ZP_WORD:4 2.0 (byte*) screen (byte*) screen#14 screen zp ZP_WORD:2 4.625 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.cfg index 975e15947..f6cdf6114 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.cfg @@ -8,8 +8,8 @@ @end: scope:[] from @1 [3] phi() [ ] ( ) main: scope:[main] from @1 - [4] *((const byte*) main::PTR#0) ← <(const string) main::STRING#0 [ ] ( main:2 [ ] ) - [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const string) main::STRING#0 [ ] ( main:2 [ ] ) + [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) + [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) [ main::$6 ] ( main:2 [ main::$6 ] ) [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) [ ] ( main:2 [ ] ) to:main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.log index da22664a6..2f25fbf47 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.log @@ -113,7 +113,7 @@ Culled Empty Block (label) @2 Succesful SSA optimization Pass2CullEmptyBlocks Alias (byte*) main::ptr#0 = (byte*~) main::$4 Succesful SSA optimization Pass2AliasElimination -Constant (const string) main::STRING#0 = main::$5 +Constant (const byte[]) main::STRING#0 = main::$5 Constant (const byte*) main::PTR#0 = ((byte*))40958 Constant (const byte*) main::SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification @@ -127,11 +127,11 @@ Succesful SSA optimization Pass2FixInlineConstructors Eliminating Noop Cast (byte*) main::ptr#0 ← ((byte*)) (word~) main::$6 Succesful SSA optimization Pass2NopCastElimination OPTIMIZING CONTROL FLOW GRAPH -Constant inlined main::$5 = (const string) main::STRING#0 +Constant inlined main::$5 = (const byte[]) main::STRING#0 Constant inlined main::$3 = (const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined main::$1 = (const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined main::$2 = >(const string) main::STRING#0 -Constant inlined main::$0 = <(const string) main::STRING#0 +Constant inlined main::$2 = >(const byte[]) main::STRING#0 +Constant inlined main::$0 = <(const byte[]) main::STRING#0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @1 @end main main::@return Block Sequence Planned @begin @1 @end main main::@return @@ -163,8 +163,8 @@ FINAL CONTROL FLOW GRAPH @end: scope:[] from @1 [3] phi() [ ] ( ) main: scope:[main] from @1 - [4] *((const byte*) main::PTR#0) ← <(const string) main::STRING#0 [ ] ( main:2 [ ] ) - [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const string) main::STRING#0 [ ] ( main:2 [ ] ) + [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) + [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) [ main::$6 ] ( main:2 [ main::$6 ] ) [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) [ ] ( main:2 [ ] ) to:main::@return @@ -225,10 +225,10 @@ main: { .label PTR = $9ffe .label SCREEN = $400 .label _6 = 2 - //SEG9 [4] *((const byte*) main::PTR#0) ← <(const string) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #(const string) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG10 [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #>STRING sta PTR+1 //SEG11 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) [ main::$6 ] ( main:2 [ main::$6 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 @@ -249,8 +249,8 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [4] *((const byte*) main::PTR#0) ← <(const string) main::STRING#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const string) main::STRING#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) always clobbers reg byte a +Statement [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) [ main::$6 ] ( main:2 [ main::$6 ] ) always clobbers reg byte a Statement [7] *((const byte*) main::SCREEN#0) ← *((byte*)(word~) main::$6) [ ] ( main:2 [ ] ) always clobbers reg byte a reg byte y Potential registers zp ZP_WORD:2 [ main::$6 ] : zp ZP_WORD:2 , @@ -287,10 +287,10 @@ main: { .label PTR = $9ffe .label SCREEN = $400 .label _6 = 2 - //SEG9 [4] *((const byte*) main::PTR#0) ← <(const string) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #(const string) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG10 [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #>STRING sta PTR+1 //SEG11 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) [ main::$6 ] ( main:2 [ main::$6 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 @@ -336,7 +336,7 @@ FINAL SYMBOL TABLE (byte*) main::SCREEN (const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) main::STRING -(const string) main::STRING#0 STRING = (string) "camelot" +(const byte[]) main::STRING#0 STRING = (string) "camelot" (byte*) main::ptr zp ZP_WORD:2 [ main::$6 ] @@ -362,10 +362,10 @@ main: { .label PTR = $9ffe .label SCREEN = $400 .label _6 = 2 - //SEG9 [4] *((const byte*) main::PTR#0) ← <(const string) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG9 [4] *((const byte*) main::PTR#0) ← <(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #(const string) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG10 [5] *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← >(const byte[]) main::STRING#0 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuc2 lda #>STRING sta PTR+1 //SEG11 [6] (word~) main::$6 ← *((const byte*) main::PTR#0+(byte/signed byte/word/signed word/dword/signed dword) 1) w= *((const byte*) main::PTR#0) [ main::$6 ] ( main:2 [ main::$6 ] ) -- vwuz1=_deref_pbuc1_word__deref_pbuc2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.sym b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.sym index 368fc2a5a..1863fe484 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string-3.sym @@ -9,7 +9,7 @@ (byte*) main::SCREEN (const byte*) main::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) main::STRING -(const string) main::STRING#0 STRING = (string) "camelot" +(const byte[]) main::STRING#0 STRING = (string) "camelot" (byte*) main::ptr zp ZP_WORD:2 [ main::$6 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inline-string.cfg index 68da5e6b5..9bb3ddd34 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string.cfg @@ -24,7 +24,7 @@ main::@return: scope:[main] from main::@2 to:@return print: scope:[print] from main main::@1 main::@2 [11] (byte*) screen#18 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@1/(byte*) screen#12 main::@2/(byte*) screen#12 ) [ print::msg#6 screen#18 ] ( main:2::print:5 [ print::msg#6 screen#18 ] main:2::print:7 [ print::msg#6 screen#18 ] main:2::print:9 [ print::msg#6 screen#18 ] ) - [11] (byte*) print::msg#6 ← phi( main/(const string) msg1#0 main::@1/(const string) main::msg2#0 main::@2/(const string) main::msg ) [ print::msg#6 screen#18 ] ( main:2::print:5 [ print::msg#6 screen#18 ] main:2::print:7 [ print::msg#6 screen#18 ] main:2::print:9 [ print::msg#6 screen#18 ] ) + [11] (byte*) print::msg#6 ← phi( main/(const byte[]) msg1#0 main::@1/(const byte[]) main::msg2#0 main::@2/(const string) main::msg ) [ print::msg#6 screen#18 ] ( main:2::print:5 [ print::msg#6 screen#18 ] main:2::print:7 [ print::msg#6 screen#18 ] main:2::print:9 [ print::msg#6 screen#18 ] ) to:print::@1 print::@1: scope:[print] from print print::@2 [12] (byte*) screen#12 ← phi( print/(byte*) screen#18 print::@2/(byte*) screen#5 ) [ screen#12 print::msg#4 ] ( main:2::print:5 [ screen#12 print::msg#4 ] main:2::print:7 [ screen#12 print::msg#4 ] main:2::print:9 [ screen#12 print::msg#4 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string.log b/src/test/java/dk/camelot64/kickc/test/ref/inline-string.log index eebff9e1c..0cff59935 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string.log @@ -257,36 +257,36 @@ Redundant Phi (byte*) screen#14 (byte*) screen#10 Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) print::$0 if(*((byte*) print::msg#4)!=(byte) '@') goto print::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification -Constant (const string) msg1#0 = $0 -Constant (const string) main::msg2#0 = main::$3 -Constant (const string) print::msg#2 = main::msg +Constant (const byte[]) msg1#0 = $0 +Constant (const byte[]) main::msg2#0 = main::$3 +Constant (const byte*) print::msg#2 = main::msg Constant (const byte*) screen#17 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) print::msg#0 = msg1#0 -Constant (const string) print::msg#1 = main::msg2#0 +Constant (const byte*) print::msg#0 = msg1#0 +Constant (const byte*) print::msg#1 = main::msg2#0 Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) main::@3 Culled Empty Block (label) @1 Culled Empty Block (label) @3 Succesful SSA optimization Pass2CullEmptyBlocks OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print::msg#2 -Inlining constant with var siblings (const string) print::msg#2 -Inlining constant with var siblings (const string) print::msg#2 -Inlining constant with var siblings (const string) print::msg#0 -Inlining constant with var siblings (const string) print::msg#0 -Inlining constant with var siblings (const string) print::msg#0 -Inlining constant with var siblings (const string) print::msg#1 -Inlining constant with var siblings (const string) print::msg#1 -Inlining constant with var siblings (const string) print::msg#1 +Inlining constant with var siblings (const byte*) print::msg#2 +Inlining constant with var siblings (const byte*) print::msg#2 +Inlining constant with var siblings (const byte*) print::msg#2 +Inlining constant with var siblings (const byte*) print::msg#0 +Inlining constant with var siblings (const byte*) print::msg#0 +Inlining constant with var siblings (const byte*) print::msg#0 +Inlining constant with var siblings (const byte*) print::msg#1 +Inlining constant with var siblings (const byte*) print::msg#1 +Inlining constant with var siblings (const byte*) print::msg#1 Inlining constant with var siblings (const byte*) screen#17 Inlining constant with var siblings (const byte*) screen#17 Inlining constant with var siblings (const byte*) screen#17 -Constant inlined main::$3 = (const string) main::msg2#0 +Constant inlined main::$3 = (const byte[]) main::msg2#0 Constant inlined print::msg#2 = (const string) main::msg -Constant inlined $0 = (const string) msg1#0 -Constant inlined print::msg#1 = (const string) main::msg2#0 -Constant inlined print::msg#0 = (const string) msg1#0 +Constant inlined $0 = (const byte[]) msg1#0 +Constant inlined print::msg#1 = (const byte[]) main::msg2#0 +Constant inlined print::msg#0 = (const byte[]) msg1#0 Constant inlined screen#17 = ((byte*))(word/signed word/dword/signed dword) 1024 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @2 @end main main::@1 main::@2 main::@return print print::@1 print::@return print::@2 @@ -350,7 +350,7 @@ main::@return: scope:[main] from main::@2 to:@return print: scope:[print] from main main::@1 main::@2 [11] (byte*) screen#18 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@1/(byte*) screen#12 main::@2/(byte*) screen#12 ) [ print::msg#6 screen#18 ] ( main:2::print:5 [ print::msg#6 screen#18 ] main:2::print:7 [ print::msg#6 screen#18 ] main:2::print:9 [ print::msg#6 screen#18 ] ) - [11] (byte*) print::msg#6 ← phi( main/(const string) msg1#0 main::@1/(const string) main::msg2#0 main::@2/(const string) main::msg ) [ print::msg#6 screen#18 ] ( main:2::print:5 [ print::msg#6 screen#18 ] main:2::print:7 [ print::msg#6 screen#18 ] main:2::print:9 [ print::msg#6 screen#18 ] ) + [11] (byte*) print::msg#6 ← phi( main/(const byte[]) msg1#0 main::@1/(const byte[]) main::msg2#0 main::@2/(const string) main::msg ) [ print::msg#6 screen#18 ] ( main:2::print:5 [ print::msg#6 screen#18 ] main:2::print:7 [ print::msg#6 screen#18 ] main:2::print:9 [ print::msg#6 screen#18 ] ) to:print::@1 print::@1: scope:[print] from print print::@2 [12] (byte*) screen#12 ← phi( print/(byte*) screen#18 print::@2/(byte*) screen#5 ) [ screen#12 print::msg#4 ] ( main:2::print:5 [ screen#12 print::msg#4 ] main:2::print:7 [ screen#12 print::msg#4 ] main:2::print:9 [ screen#12 print::msg#4 ] ) @@ -448,7 +448,7 @@ main: { sta screen lda #>$400 sta screen+1 - //SEG13 [11] phi (byte*) print::msg#6 = (const string) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 + //SEG13 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 lda #msg1 @@ -463,7 +463,7 @@ main: { //SEG17 [11] phi from main::@1 to print [phi:main::@1->print] print_from_b1: //SEG18 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy - //SEG19 [11] phi (byte*) print::msg#6 = (const string) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 + //SEG19 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 lda #msg2 @@ -582,7 +582,7 @@ main: { sta screen lda #>$400 sta screen+1 - //SEG13 [11] phi (byte*) print::msg#6 = (const string) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 + //SEG13 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 lda #msg1 @@ -597,7 +597,7 @@ main: { //SEG17 [11] phi from main::@1 to print [phi:main::@1->print] print_from_b1: //SEG18 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy - //SEG19 [11] phi (byte*) print::msg#6 = (const string) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 + //SEG19 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 lda #msg2 @@ -710,9 +710,9 @@ FINAL SYMBOL TABLE (label) main::@return (const string) main::msg msg = (string) "message 3 @" (byte[]) main::msg2 -(const string) main::msg2#0 msg2 = (string) "message 2 @" +(const byte[]) main::msg2#0 msg2 = (string) "message 2 @" (byte[]) msg1 -(const string) msg1#0 msg1 = (string) "message 1 @" +(const byte[]) msg1#0 msg1 = (string) "message 1 @" (void()) print((byte*) print::msg) (label) print::@1 (label) print::@2 @@ -756,7 +756,7 @@ main: { sta screen lda #>$400 sta screen+1 - //SEG13 [11] phi (byte*) print::msg#6 = (const string) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 + //SEG13 [11] phi (byte*) print::msg#6 = (const byte[]) msg1#0 [phi:main->print#1] -- pbuz1=pbuc1 lda #msg1 @@ -767,7 +767,7 @@ main: { //SEG16 [7] call print [ screen#12 ] ( main:2 [ screen#12 ] ) //SEG17 [11] phi from main::@1 to print [phi:main::@1->print] //SEG18 [11] phi (byte*) screen#18 = (byte*) screen#12 [phi:main::@1->print#0] -- register_copy - //SEG19 [11] phi (byte*) print::msg#6 = (const string) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 + //SEG19 [11] phi (byte*) print::msg#6 = (const byte[]) main::msg2#0 [phi:main::@1->print#1] -- pbuz1=pbuc1 lda #msg2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inline-string.sym b/src/test/java/dk/camelot64/kickc/test/ref/inline-string.sym index e2f7ecb8f..445cf80f9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inline-string.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inline-string.sym @@ -7,9 +7,9 @@ (label) main::@return (const string) main::msg msg = (string) "message 3 @" (byte[]) main::msg2 -(const string) main::msg2#0 msg2 = (string) "message 2 @" +(const byte[]) main::msg2#0 msg2 = (string) "message 2 @" (byte[]) msg1 -(const string) msg1#0 msg1 = (string) "message 1 @" +(const byte[]) msg1#0 msg1 = (string) "message 1 @" (void()) print((byte*) print::msg) (label) print::@1 (label) print::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg index 27d3fc378..5d82fe63e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.cfg @@ -12,7 +12,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log b/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log index ef2576428..4fe64994f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.log @@ -153,7 +153,7 @@ Simple Condition (bool~) main::$0 if((byte) main::i#1!=rangelast(0,3)) goto main Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const word/signed word/dword/signed dword) $0 = 1024+40 -Constant (const string) main::txt#0 = main::$1 +Constant (const byte[]) main::txt#0 = main::$1 Constant (const byte[]) main::data#0 = { 1, 2, 3 } Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification @@ -165,7 +165,7 @@ OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Constant inlined $0 = (word/signed word/dword/signed dword) 1024+(byte/signed byte/word/signed word/dword/signed dword) 40 -Constant inlined main::$1 = (const string) main::txt#0 +Constant inlined main::$1 = (const byte[]) main::txt#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @1 @end main main::@1 main::@return @@ -207,7 +207,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [8] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [9] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) @@ -291,7 +291,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda txt,y sta SCREEN,y @@ -315,10 +315,10 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Statement [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Statement [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , @@ -366,7 +366,7 @@ main: { jmp b1 //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda txt,x sta SCREEN,x //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx @@ -424,7 +424,7 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 22.0 (byte[]) main::txt -(const string) main::txt#0 txt = (string) "qwe" +(const byte[]) main::txt#0 txt = (string) "qwe" reg byte x [ main::i#2 main::i#1 ] @@ -456,7 +456,7 @@ main: { //SEG13 [5] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG14 main::@1 b1: - //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const string) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG15 [6] *((const byte*) SCREEN#0 + (byte) main::i#2) ← *((const byte[]) main::txt#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda txt,x sta SCREEN,x //SEG16 [7] *((const byte*) SCREEN2#0 + (byte) main::i#2) ← *((const byte[]) main::data#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym b/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym index 4039dfc3e..7e707e882 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inlinearrayproblem.sym @@ -14,6 +14,6 @@ (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 22.0 (byte[]) main::txt -(const string) main::txt#0 txt = (string) "qwe" +(const byte[]) main::txt#0 txt = (string) "qwe" reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.cfg b/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.cfg index d9ecec5da..f2f8a38c9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.cfg @@ -13,7 +13,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) [5] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) - [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) + [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) to:main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.log b/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.log index 6174c194a..93b5620f7 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.log @@ -186,7 +186,7 @@ Simple Condition (bool~) main::$1 if((byte) main::i#1!=(byte/signed byte/word/si Simple Condition (bool~) main::$3 if((byte*) main::cursor#1<(byte*~) main::$2) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) SCREEN#0 = ((byte*))1024 -Constant (const string) TEXT#0 = $0 +Constant (const byte[]) TEXT#0 = $0 Constant (const byte) main::i#0 = 0 Constant (const byte) main::i#2 = 0 Succesful SSA optimization Pass2ConstantIdentification @@ -205,7 +205,7 @@ Inlining constant with var siblings (const byte*) main::cursor#0 Inlining constant with var siblings (const byte*) main::cursor#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $0 = (const string) TEXT#0 +Constant inlined $0 = (const byte[]) TEXT#0 Constant inlined main::$2 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000 Constant inlined main::cursor#0 = (const byte*) SCREEN#0 Succesful SSA optimization Pass2ConstantInlining @@ -262,7 +262,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@2 [5] (byte*) main::cursor#2 ← phi( main/(const byte*) SCREEN#0 main::@2/(byte*) main::cursor#1 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) [5] (byte) main::i#3 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#4 ) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) - [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) + [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) [8] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 8) goto main::@6 [ main::cursor#2 main::i#1 ] ( main:2 [ main::cursor#2 main::i#1 ] ) to:main::@2 @@ -366,7 +366,7 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 + //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuz2 ldy i lda TEXT,y ldy #0 @@ -417,11 +417,11 @@ main: { TEXT: .text "camelot " REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] Statement [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a -Statement [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y +Statement [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) always clobbers reg byte a reg byte y Statement [11] if((byte*) main::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto main::@1 [ main::i#4 main::cursor#1 ] ( main:2 [ main::i#4 main::cursor#1 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#3 main::i#4 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ main::cursor#2 main::cursor#1 ] : zp ZP_WORD:3 , @@ -477,7 +477,7 @@ main: { jmp b1 //SEG16 main::@1 b1: - //SEG17 [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda TEXT,x ldy #0 sta (cursor),y @@ -565,7 +565,7 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) TEXT -(const string) TEXT#0 TEXT = (string) "camelot " +(const byte[]) TEXT#0 TEXT = (string) "camelot " (void()) main() (label) main::@1 (label) main::@2 @@ -616,7 +616,7 @@ main: { //SEG15 [5] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG16 main::@1 b1: - //SEG17 [6] *((byte*) main::cursor#2) ← *((const string) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx + //SEG17 [6] *((byte*) main::cursor#2) ← *((const byte[]) TEXT#0 + (byte) main::i#3) [ main::i#3 main::cursor#2 ] ( main:2 [ main::i#3 main::cursor#2 ] ) -- _deref_pbuz1=pbuc1_derefidx_vbuxx lda TEXT,x ldy #0 sta (cursor),y diff --git a/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.sym b/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.sym index dcc233502..de9bf8f1a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/inmemstring.sym @@ -4,7 +4,7 @@ (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) TEXT -(const string) TEXT#0 TEXT = (string) "camelot " +(const byte[]) TEXT#0 TEXT = (string) "camelot " (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/iterarray.cfg b/src/test/java/dk/camelot64/kickc/test/ref/iterarray.cfg index 9524061a6..cf8fefc48 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/iterarray.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/iterarray.cfg @@ -13,7 +13,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [7] *((const byte*) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return diff --git a/src/test/java/dk/camelot64/kickc/test/ref/iterarray.log b/src/test/java/dk/camelot64/kickc/test/ref/iterarray.log index 8575c091c..b5507a1ac 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/iterarray.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/iterarray.log @@ -107,7 +107,7 @@ Alias (byte) main::i#1 = (byte/signed word/word/dword/signed dword~) main::$2 Succesful SSA optimization Pass2AliasElimination Simple Condition (bool~) main::$3 if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification -Constant (const byte*) main::buf#0 = ((byte*))4352 +Constant (const byte[16]) main::buf#0 = ((byte*))4352 Constant (const byte) main::i#0 = 5 Succesful SSA optimization Pass2ConstantIdentification Consolidated constant in assignment main::$1 @@ -160,7 +160,7 @@ main: scope:[main] from @1 main::@1: scope:[main] from main main::@1 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 5 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [6] (byte/signed word/word/dword/signed dword~) main::$1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 2+(byte/signed byte/word/signed word/dword/signed dword) 2 [ main::i#2 main::$1 ] ( main:2 [ main::i#2 main::$1 ] ) - [7] *((const byte*) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [9] if((byte) main::i#1<(byte/signed byte/word/signed word/dword/signed dword) 10) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@return @@ -249,7 +249,7 @@ main: { clc adc i sta _1 - //SEG16 [7] *((const byte*) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 + //SEG16 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuz2 lda _1 ldy i sta buf,y @@ -320,7 +320,7 @@ main: { txa clc adc #2+2 - //SEG16 [7] *((const byte*) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG16 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta buf,x //SEG17 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=vbuxx_plus_1 inx @@ -364,7 +364,7 @@ FINAL SYMBOL TABLE (label) main::@1 (label) main::@return (byte[16]) main::buf -(const byte*) main::buf#0 buf = ((byte*))(word/signed word/dword/signed dword) 4352 +(const byte[16]) main::buf#0 buf = ((byte*))(word/signed word/dword/signed dword) 4352 (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 @@ -403,7 +403,7 @@ main: { txa clc adc #2+2 - //SEG16 [7] *((const byte*) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa + //SEG16 [7] *((const byte[16]) main::buf#0 + (byte) main::i#2) ← (byte/signed word/word/dword/signed dword~) main::$1 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuaa sta buf,x //SEG17 [8] (byte) main::i#1 ← (byte) main::i#2 + (byte/signed byte/word/signed word/dword/signed dword) 1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=vbuxx_plus_1 inx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/iterarray.sym b/src/test/java/dk/camelot64/kickc/test/ref/iterarray.sym index f90e26f7a..400f35e1b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/iterarray.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/iterarray.sym @@ -6,7 +6,7 @@ (label) main::@1 (label) main::@return (byte[16]) main::buf -(const byte*) main::buf#0 buf = ((byte*))(word/signed word/dword/signed dword) 4352 +(const byte[16]) main::buf#0 buf = ((byte*))(word/signed word/dword/signed dword) 4352 (byte) main::i (byte) main::i#1 reg byte x 16.5 (byte) main::i#2 reg byte x 14.666666666666666 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm index dc3363eeb..2453dde03 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.asm @@ -497,8 +497,8 @@ bitmap_init: { y_start: .byte $a, $a, $a, $14 x_end: .word $14, $a, $14, $14 y_end: .byte $14, $14, $a, $14 - x_cur: .fill 8, 0 - y_cur: .fill 8, 0 + x_cur: .fill 2*4, 0 + y_cur: .fill 2*4, 0 x_add: .fill 4, 0 y_add: .fill 4, 0 delay: .fill 4, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log index 0f2b32969..46f460c5e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/line-anim.log @@ -6043,8 +6043,8 @@ bitmap_init: { y_start: .byte $a, $a, $a, $14 x_end: .word $14, $a, $14, $14 y_end: .byte $14, $14, $a, $14 - x_cur: .fill 8, 0 - y_cur: .fill 8, 0 + x_cur: .fill 2*4, 0 + y_cur: .fill 2*4, 0 x_add: .fill 4, 0 y_add: .fill 4, 0 delay: .fill 4, 0 @@ -7324,8 +7324,8 @@ bitmap_init: { y_start: .byte $a, $a, $a, $14 x_end: .word $14, $a, $14, $14 y_end: .byte $14, $14, $a, $14 - x_cur: .fill 8, 0 - y_cur: .fill 8, 0 + x_cur: .fill 2*4, 0 + y_cur: .fill 2*4, 0 x_add: .fill 4, 0 y_add: .fill 4, 0 delay: .fill 4, 0 @@ -8678,8 +8678,8 @@ bitmap_init: { y_start: .byte $a, $a, $a, $14 x_end: .word $14, $a, $14, $14 y_end: .byte $14, $14, $a, $14 - x_cur: .fill 8, 0 - y_cur: .fill 8, 0 + x_cur: .fill 2*4, 0 + y_cur: .fill 2*4, 0 x_add: .fill 4, 0 y_add: .fill 4, 0 delay: .fill 4, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm b/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm index f855918db..e61e8b73e 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.asm @@ -178,9 +178,9 @@ main: { str6: .text " @" str7: .text " @" str8: .text " @" - lintab1: .fill $28, 0 - lintab2: .fill $28, 0 - lintab3: .fill $28, 0 + lintab1: .fill 2*$14, 0 + lintab2: .fill 2*$14, 0 + lintab3: .fill 2*$14, 0 } print_ln: { b1: diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.cfg b/src/test/java/dk/camelot64/kickc/test/ref/linegen.cfg index 451a4d45a..2094fb88f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.cfg @@ -147,12 +147,12 @@ print_byte: scope:[print_byte] from main::@1 print_word print_word::@1 [72] (byte*) print_char_cursor#81 ← phi( main::@1/(byte*~) print_char_cursor#91 print_word/(byte*) print_char_cursor#2 print_word::@1/(byte*) print_char_cursor#11 ) [ print_byte::b#3 print_char_cursor#81 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] ) [72] (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#3 print_char_cursor#81 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] ) [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ) - [74] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) + [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) [75] call print_char [ print_char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] ) - [77] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) + [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) [78] call print_char [ print_char_cursor#11 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.log b/src/test/java/dk/camelot64/kickc/test/ref/linegen.log index ff2aea220..24e37aafb 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.log @@ -2953,7 +2953,7 @@ Constant (const word) rem16u#0 = 0 Constant (const word) divr16u::quotient#0 = 0 Constant (const byte) divr16u::i#0 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word[20]) main::lintab1#0 = { fill( 20, 0) } Constant (const word) lin16u_gen::min#0 = 557 Constant (const word) lin16u_gen::max#0 = 29793 @@ -2966,22 +2966,22 @@ Constant (const word[20]) main::lintab3#0 = { fill( 20, 0) } Constant (const word) lin16u_gen::min#2 = 0 Constant (const word) lin16u_gen::max#2 = 25736 Constant (const word) lin16u_gen::length#2 = 20 -Constant (const string) print_str::str#1 = main::str +Constant (const byte*) print_str::str#1 = main::str Constant (const word) print_word::w#0 = 557 -Constant (const string) print_str::str#2 = main::str1 +Constant (const byte*) print_str::str#2 = main::str1 Constant (const word) print_word::w#1 = 31179 -Constant (const string) print_str::str#3 = main::str2 +Constant (const byte*) print_str::str#3 = main::str2 Constant (const word) print_word::w#2 = 0 Constant (const byte) main::i#0 = 0 -Constant (const string) print_str::str#4 = main::str3 -Constant (const string) print_str::str#5 = main::str4 -Constant (const string) print_str::str#6 = main::str5 +Constant (const byte*) print_str::str#4 = main::str3 +Constant (const byte*) print_str::str#5 = main::str4 +Constant (const byte*) print_str::str#6 = main::str5 Constant (const byte/signed byte/word/signed word/dword/signed dword) main::$20 = 20*2 -Constant (const string) print_str::str#7 = main::str6 +Constant (const byte*) print_str::str#7 = main::str6 Constant (const word) print_word::w#6 = 29793 -Constant (const string) print_str::str#8 = main::str7 +Constant (const byte*) print_str::str#8 = main::str7 Constant (const word) print_word::w#7 = 63361 -Constant (const string) print_str::str#9 = main::str8 +Constant (const byte*) print_str::str#9 = main::str8 Constant (const word) print_word::w#8 = 25736 Constant (const word) divr16u::rem#3 = 0 Constant (const word) divr16u::dividend#2 = 0 @@ -2989,9 +2989,9 @@ Constant (const word) lin16u_gen::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const word[20]) lin16u_gen::lintab#0 = main::lintab1#0 -Constant (const word[20]) lin16u_gen::lintab#1 = main::lintab2#0 -Constant (const word[20]) lin16u_gen::lintab#2 = main::lintab3#0 +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#2 = main::lintab3#0 Succesful SSA optimization Pass2ConstantIdentification 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 @@ -3079,33 +3079,33 @@ Inlining constant with var siblings (const word) divr16u::dividend#2 Inlining constant with var siblings (const word) divr16u::dividend#2 Inlining constant with var siblings (const word) divr16u::dividend#2 Inlining constant with var siblings (const word) divr16u::dividend#2 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 Inlining constant with var siblings (const word) print_word::w#0 Inlining constant with var siblings (const word) print_word::w#0 Inlining constant with var siblings (const word) print_word::w#0 @@ -3187,15 +3187,15 @@ Inlining constant with different constant siblings (const word) lin16u_gen::max# Inlining constant with var siblings (const word) lin16u_gen::length#2 Inlining constant with var siblings (const word) lin16u_gen::i#0 Inlining constant with var siblings (const word) lin16u_gen::i#0 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#0 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#0 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#0 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#1 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#1 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#1 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#2 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#2 -Inlining constant with var siblings (const word[20]) lin16u_gen::lintab#2 +Inlining constant with var siblings (const word*) lin16u_gen::lintab#0 +Inlining constant with var siblings (const word*) lin16u_gen::lintab#0 +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#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 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 Inlining constant with var siblings (const byte*) print_line_cursor#0 @@ -3205,7 +3205,7 @@ Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed 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#1 = (word/dword/signed dword) 63361 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined divr16u::quotient#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 lin16u_gen::min#0 = (word/signed word/dword/signed dword) 557 @@ -3552,12 +3552,12 @@ print_byte: scope:[print_byte] from main::@1 print_word print_word::@1 [72] (byte*) print_char_cursor#81 ← phi( main::@1/(byte*~) print_char_cursor#91 print_word/(byte*) print_char_cursor#2 print_word::@1/(byte*) print_char_cursor#11 ) [ print_byte::b#3 print_char_cursor#81 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] ) [72] (byte) print_byte::b#3 ← phi( main::@1/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#3 print_char_cursor#81 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 ] ) [73] (byte~) print_byte::$0 ← (byte) print_byte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_byte::$0 ] ) - [74] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) + [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) [75] call print_char [ print_char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] ) - [77] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) + [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) [78] call print_char [ print_char_cursor#11 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -4447,9 +4447,9 @@ main: { str6: .text " @" str7: .text " @" str8: .text " @" - lintab1: .fill $28, 0 - lintab2: .fill $28, 0 - lintab3: .fill $28, 0 + lintab1: .fill 2*$14, 0 + lintab2: .fill 2*$14, 0 + lintab3: .fill 2*$14, 0 } //SEG163 print_ln print_ln: { @@ -4525,7 +4525,7 @@ print_byte: { lsr lsr sta _0 - //SEG187 [74] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG187 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -4542,7 +4542,7 @@ print_byte: { lda #$f and b sta _2 - //SEG194 [77] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG194 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -5564,9 +5564,9 @@ main: { str6: .text " @" str7: .text " @" str8: .text " @" - lintab1: .fill $28, 0 - lintab2: .fill $28, 0 - lintab3: .fill $28, 0 + lintab1: .fill 2*$14, 0 + lintab2: .fill 2*$14, 0 + lintab3: .fill 2*$14, 0 } //SEG163 print_ln print_ln: { @@ -5638,7 +5638,7 @@ print_byte: { lsr lsr lsr - //SEG187 [74] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG187 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG188 [75] call print_char [ print_char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] ) @@ -5653,7 +5653,7 @@ print_byte: { //SEG193 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG194 [77] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG194 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG195 [78] call print_char [ print_char_cursor#11 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] ) @@ -6381,7 +6381,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 8.891891891891891 (byte*) print_line_cursor#11 print_line_cursor zp ZP_WORD:3 204.0 @@ -6774,9 +6774,9 @@ main: { str6: .text " @" str7: .text " @" str8: .text " @" - lintab1: .fill $28, 0 - lintab2: .fill $28, 0 - lintab3: .fill $28, 0 + lintab1: .fill 2*$14, 0 + lintab2: .fill 2*$14, 0 + lintab3: .fill 2*$14, 0 } //SEG163 print_ln print_ln: { @@ -6837,7 +6837,7 @@ print_byte: { lsr lsr lsr - //SEG187 [74] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG187 [74] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:15::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:19::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:23::print_byte:70 [ print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_byte::b#3 print_char_cursor#81 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG188 [75] call print_char [ print_char_cursor#11 print_byte::b#3 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::b#3 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::b#3 ] ) @@ -6849,7 +6849,7 @@ print_byte: { //SEG193 [76] (byte~) print_byte::$2 ← (byte) print_byte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#11 print_byte::$2 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_byte::$2 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_byte::$2 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG194 [77] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG194 [77] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#11 print_char::ch#1 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 print_char::ch#1 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG195 [78] call print_char [ print_char_cursor#11 ] ( main:2::print_byte:29 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:15::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:19::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:23::print_byte:68 [ print_word::w#10 print_char_cursor#11 ] main:2::print_word:33::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:37::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:41::print_byte:68 [ main::i#10 print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:49::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:53::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:57::print_byte:68 [ print_line_cursor#1 print_word::w#10 print_char_cursor#11 ] main:2::print_word:15::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:19::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:23::print_byte:70 [ print_char_cursor#11 ] main:2::print_word:33::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:37::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:41::print_byte:70 [ main::i#10 print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:49::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:53::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] main:2::print_word:57::print_byte:70 [ print_line_cursor#1 print_char_cursor#11 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym b/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym index 3158aeff2..cc67d7f37 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/linegen.sym @@ -146,7 +146,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 8.891891891891891 (byte*) print_line_cursor#11 print_line_cursor zp ZP_WORD:3 204.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/literals.cfg b/src/test/java/dk/camelot64/kickc/test/ref/literals.cfg index 30c6e72a4..58766c545 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/literals.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/literals.cfg @@ -13,7 +13,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/literals.log b/src/test/java/dk/camelot64/kickc/test/ref/literals.log index 077ff32a9..e8b5d4fac 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/literals.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/literals.log @@ -186,7 +186,7 @@ Constant (const string) $0 = "bc"+"d" Constant (const byte[]) nums#0 = { 2, 3, 4, 5 } Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) str#0 = "bc"+"d"+'e' +Constant (const byte[]) str#0 = "bc"+"d"+'e' Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(SCREEN#0+0) Consolidated array index constant in *(SCREEN#0+2) @@ -246,7 +246,7 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@1 [6] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@1/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) [10] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 4) goto main::@1 [ main::i#1 ] ( main:2 [ main::i#1 ] ) @@ -336,7 +336,7 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda str,y sta SCREEN+4,y @@ -362,12 +362,12 @@ main: { REGISTER UPLIFT POTENTIAL REGISTERS Statement [4] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) char#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] Statement [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Statement [4] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (const byte) char#0 [ ] ( main:2 [ ] ) always clobbers reg byte a Statement [5] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 2) ← (const byte) num#0 [ ] ( main:2 [ ] ) always clobbers reg byte a -Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Statement [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , @@ -420,7 +420,7 @@ main: { jmp b1 //SEG15 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda str,x sta SCREEN+4,x //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx @@ -479,7 +479,7 @@ FINAL SYMBOL TABLE (byte[]) nums (const byte[]) nums#0 nums = { (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5 } (byte[]) str -(const string) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' +(const byte[]) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' reg byte x [ main::i#2 main::i#1 ] @@ -517,7 +517,7 @@ main: { //SEG14 [6] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG15 main::@1 b1: - //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const string) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG16 [7] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 4 + (byte) main::i#2) ← *((const byte[]) str#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda str,x sta SCREEN+4,x //SEG17 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 9 + (byte) main::i#2) ← *((const byte[]) nums#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/literals.sym b/src/test/java/dk/camelot64/kickc/test/ref/literals.sym index ee37f5aac..169d3ec60 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/literals.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/literals.sym @@ -16,6 +16,6 @@ (byte[]) nums (const byte[]) nums#0 nums = { (byte/signed byte/word/signed word/dword/signed dword) 2, (byte/signed byte/word/signed word/dword/signed dword) 3, (byte/signed byte/word/signed word/dword/signed dword) 4, (byte/signed byte/word/signed word/dword/signed dword) 5 } (byte[]) str -(const string) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' +(const byte[]) str#0 str = (string) "bc"+(string) "d"+(byte) 'e' reg byte x [ main::i#2 main::i#1 ] diff --git a/src/test/java/dk/camelot64/kickc/test/ref/local-string.cfg b/src/test/java/dk/camelot64/kickc/test/ref/local-string.cfg index 0c95d1834..d01849629 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/local-string.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/local-string.cfg @@ -12,12 +12,12 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] ( main:2 [ ] ) to:@return main::@2: scope:[main] from main::@1 - [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/local-string.log b/src/test/java/dk/camelot64/kickc/test/ref/local-string.log index 4366bbc73..10e0577b5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/local-string.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/local-string.log @@ -136,13 +136,13 @@ Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$0 if(*((byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) main::screen#0 = ((byte*))1024 -Constant (const string) main::msg#0 = main::$1 +Constant (const byte[]) main::msg#0 = main::$1 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Constant inlined main::$1 = (const string) main::msg#0 +Constant inlined main::$1 = (const byte[]) main::msg#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @1 @end main main::@1 main::@return main::@2 @@ -182,13 +182,13 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#1 ) [ main::i#2 ] ( main:2 [ main::i#2 ] ) - [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) to:main::@return main::@return: scope:[main] from main::@1 [7] return [ ] ( main:2 [ ] ) to:@return main::@2: scope:[main] from main::@1 - [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) + [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) to:main::@1 @@ -261,7 +261,7 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 + //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1_neq_vbuc2_then_la1 ldy i lda msg,y cmp #'@' @@ -273,7 +273,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda msg,y sta screen,y @@ -287,11 +287,11 @@ main: { } REGISTER UPLIFT POTENTIAL REGISTERS -Statement [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::i#2 main::i#1 ] -Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a -Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a +Statement [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ main::i#2 main::i#1 ] : zp ZP_BYTE:2 , reg byte x , reg byte y , REGISTER UPLIFT SCOPES @@ -333,7 +333,7 @@ main: { jmp b1 //SEG12 main::@1 b1: - //SEG13 [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda msg,x cmp #'@' bne b2 @@ -344,7 +344,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -386,7 +386,7 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 22.0 (byte) main::i#2 reg byte x 18.333333333333332 (byte[]) main::msg -(const string) main::msg#0 msg = (string) "message 2 @" +(const byte[]) main::msg#0 msg = (string) "message 2 @" (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 @@ -417,7 +417,7 @@ main: { ldx #0 //SEG12 main::@1 b1: - //SEG13 [6] if(*((const string) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 + //SEG13 [6] if(*((const byte[]) main::msg#0 + (byte) main::i#2)!=(byte) '@') goto main::@2 [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx_neq_vbuc2_then_la1 lda msg,x cmp #'@' bne b2 @@ -426,7 +426,7 @@ main: { rts //SEG16 main::@2 b2: - //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const string) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG17 [8] *((const byte*) main::screen#0 + (byte) main::i#2) ← *((const byte[]) main::msg#0 + (byte) main::i#2) [ main::i#2 ] ( main:2 [ main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda msg,x sta screen,x //SEG18 [9] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] ( main:2 [ main::i#1 ] ) -- vbuxx=_inc_vbuxx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/local-string.sym b/src/test/java/dk/camelot64/kickc/test/ref/local-string.sym index 4685a8acd..7abe9e0c4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/local-string.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/local-string.sym @@ -9,7 +9,7 @@ (byte) main::i#1 reg byte x 22.0 (byte) main::i#2 reg byte x 18.333333333333332 (byte[]) main::msg -(const string) main::msg#0 msg = (string) "message 2 @" +(const byte[]) main::msg#0 msg = (string) "message 2 @" (byte*) main::screen (const byte*) main::screen#0 screen = ((byte*))(word/signed word/dword/signed dword) 1024 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/modglobal.cfg b/src/test/java/dk/camelot64/kickc/test/ref/modglobal.cfg index 7b7c46300..0a8561819 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/modglobal.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/modglobal.cfg @@ -14,14 +14,14 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [7] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ) - [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) + [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) [9] (byte) cnt#2 ← ++ (byte) cnt#12 [ cnt#2 cnt2#11 cnt3#11 ] ( main:2 [ cnt#2 cnt2#11 cnt3#11 ] ) [10] call inccnt [ inccnt::return#2 ] ( main:2 [ inccnt::return#2 ] ) [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 [ inccnt::return#1 ] ( main:2 [ inccnt::return#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [12] (byte~) main::$1 ← (byte) inccnt::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) - [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) + [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [14] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/modglobal.log b/src/test/java/dk/camelot64/kickc/test/ref/modglobal.log index c603564b6..64855dfb4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/modglobal.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/modglobal.log @@ -325,7 +325,7 @@ Succesful SSA optimization Pass2RedundantPhiElimination Constant (const byte) cnt#0 = 0 Constant (const byte) cnt2#0 = 0 Constant (const byte) cnt3#0 = 0 -Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte[256]) SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(SCREEN#0+0) Consolidated array index constant in *(SCREEN#0+1) @@ -411,14 +411,14 @@ main: scope:[main] from @2 to:main::@1 main::@1: scope:[main] from main [7] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ) - [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) + [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) [9] (byte) cnt#2 ← ++ (byte) cnt#12 [ cnt#2 cnt2#11 cnt3#11 ] ( main:2 [ cnt#2 cnt2#11 cnt3#11 ] ) [10] call inccnt [ inccnt::return#2 ] ( main:2 [ inccnt::return#2 ] ) [11] (byte) inccnt::return#1 ← (byte) inccnt::return#2 [ inccnt::return#1 ] ( main:2 [ inccnt::return#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [12] (byte~) main::$1 ← (byte) inccnt::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) - [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) + [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [14] return [ ] ( main:2 [ ] ) @@ -559,7 +559,7 @@ main: { //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ) -- vbuz1=vbuz2 lda inccnt.return sta _0 - //SEG18 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) -- _deref_pbuc1=vbuz1 + //SEG18 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) -- _deref_pbuc1=vbuz1 lda _0 sta SCREEN+0 //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 [ cnt#2 cnt2#11 cnt3#11 ] ( main:2 [ cnt#2 cnt2#11 cnt3#11 ] ) -- vbuz1=_inc_vbuz2 @@ -582,7 +582,7 @@ main: { //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) -- vbuz1=vbuz2 lda inccnt.return_1 sta _1 - //SEG28 [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1 + //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1 lda _1 sta SCREEN+1 jmp breturn @@ -681,7 +681,7 @@ main: { b1: //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ) // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG18 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) -- _deref_pbuc1=vbuaa + //SEG18 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) -- _deref_pbuc1=vbuaa sta SCREEN+0 //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 [ cnt#2 cnt2#11 cnt3#11 ] ( main:2 [ cnt#2 cnt2#11 cnt3#11 ] ) -- vbuaa=_inc_vbuz1 lda cnt @@ -701,7 +701,7 @@ main: { b2: //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) // (byte~) main::$1 = (byte) inccnt::return#1 // register copy reg byte a - //SEG28 [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa + //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa sta SCREEN+1 jmp breturn //SEG29 main::@return @@ -759,7 +759,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) cnt (byte) cnt#11 reg byte a 4.0 (byte) cnt#12 cnt zp ZP_BYTE:2 0.6666666666666666 @@ -828,7 +828,7 @@ main: { //SEG16 main::@1 //SEG17 [7] (byte~) main::$0 ← (byte) inccnt::return#0 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ main::$0 cnt#12 cnt2#11 cnt3#11 ] ) // (byte~) main::$0 = (byte) inccnt::return#0 // register copy reg byte a - //SEG18 [8] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) -- _deref_pbuc1=vbuaa + //SEG18 [8] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte~) main::$0 [ cnt#12 cnt2#11 cnt3#11 ] ( main:2 [ cnt#12 cnt2#11 cnt3#11 ] ) -- _deref_pbuc1=vbuaa sta SCREEN+0 //SEG19 [9] (byte) cnt#2 ← ++ (byte) cnt#12 [ cnt#2 cnt2#11 cnt3#11 ] ( main:2 [ cnt#2 cnt2#11 cnt3#11 ] ) -- vbuaa=_inc_vbuz1 lda cnt @@ -845,7 +845,7 @@ main: { //SEG26 main::@2 //SEG27 [12] (byte~) main::$1 ← (byte) inccnt::return#1 [ main::$1 ] ( main:2 [ main::$1 ] ) // (byte~) main::$1 = (byte) inccnt::return#1 // register copy reg byte a - //SEG28 [13] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa + //SEG28 [13] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte~) main::$1 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuaa sta SCREEN+1 //SEG29 main::@return //SEG30 [14] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/modglobal.sym b/src/test/java/dk/camelot64/kickc/test/ref/modglobal.sym index 2026a20d5..41454f6dd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/modglobal.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/modglobal.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[256]) SCREEN -(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) cnt (byte) cnt#11 reg byte a 4.0 (byte) cnt#12 cnt zp ZP_BYTE:2 0.6666666666666666 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg b/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg index 2bbb25583..745770d13 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.cfg @@ -12,13 +12,13 @@ main: scope:[main] from @2 [5] call inccnt [ cnt#13 ] ( main:2 [ cnt#13 ] ) to:main::@1 main::@1: scope:[main] from main - [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) + [6] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) [7] (byte) cnt#2 ← ++ (byte) cnt#13 [ cnt#2 ] ( main:2 [ cnt#2 ] ) [8] call inccnt [ cnt#13 ] ( main:2 [ cnt#13 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [9] (byte) cnt#11 ← ++ (byte) cnt#13 [ cnt#11 ] ( main:2 [ cnt#11 ] ) - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) + [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [11] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.log b/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.log index 77f6a92bb..7aaa0a2dd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.log @@ -175,7 +175,7 @@ Redundant Phi (byte) cnt#10 (byte) cnt#13 Redundant Phi (byte) cnt#14 (byte) cnt#11 Succesful SSA optimization Pass2RedundantPhiElimination Constant (const byte) cnt#0 = 0 -Constant (const byte*) SCREEN#0 = ((byte*))1024 +Constant (const byte[256]) SCREEN#0 = ((byte*))1024 Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(SCREEN#0+0) Consolidated array index constant in *(SCREEN#0+1) @@ -229,13 +229,13 @@ main: scope:[main] from @2 [5] call inccnt [ cnt#13 ] ( main:2 [ cnt#13 ] ) to:main::@1 main::@1: scope:[main] from main - [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) + [6] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) [7] (byte) cnt#2 ← ++ (byte) cnt#13 [ cnt#2 ] ( main:2 [ cnt#2 ] ) [8] call inccnt [ cnt#13 ] ( main:2 [ cnt#13 ] ) to:main::@2 main::@2: scope:[main] from main::@1 [9] (byte) cnt#11 ← ++ (byte) cnt#13 [ cnt#11 ] ( main:2 [ cnt#11 ] ) - [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) + [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) to:main::@return main::@return: scope:[main] from main::@2 [11] return [ ] ( main:2 [ ] ) @@ -327,7 +327,7 @@ main: { jmp b1 //SEG13 main::@1 b1: - //SEG14 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) -- _deref_pbuc1=vbuz1 + //SEG14 [6] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) -- _deref_pbuc1=vbuz1 lda cnt_13 sta SCREEN+0 //SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 [ cnt#2 ] ( main:2 [ cnt#2 ] ) -- vbuz1=_inc_vbuz2 @@ -346,7 +346,7 @@ main: { ldy cnt_13 iny sty cnt_11 - //SEG21 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1 + //SEG21 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuz1 lda cnt_11 sta SCREEN+1 jmp breturn @@ -416,7 +416,7 @@ main: { jmp b1 //SEG13 main::@1 b1: - //SEG14 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) -- _deref_pbuc1=vbuxx + //SEG14 [6] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) -- _deref_pbuc1=vbuxx stx SCREEN+0 //SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 [ cnt#2 ] ( main:2 [ cnt#2 ] ) -- vbuxx=_inc_vbuxx inx @@ -430,7 +430,7 @@ main: { b2: //SEG20 [9] (byte) cnt#11 ← ++ (byte) cnt#13 [ cnt#11 ] ( main:2 [ cnt#11 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuxx + //SEG21 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuxx stx SCREEN+1 jmp breturn //SEG22 main::@return @@ -477,7 +477,7 @@ FINAL SYMBOL TABLE (label) @begin (label) @end (byte[256]) SCREEN -(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) cnt (byte) cnt#11 reg byte x 4.0 (byte) cnt#12 reg byte x 4.0 @@ -520,7 +520,7 @@ main: { ldx #0 jsr inccnt //SEG13 main::@1 - //SEG14 [6] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) -- _deref_pbuc1=vbuxx + //SEG14 [6] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 0) ← (byte) cnt#13 [ cnt#13 ] ( main:2 [ cnt#13 ] ) -- _deref_pbuc1=vbuxx stx SCREEN+0 //SEG15 [7] (byte) cnt#2 ← ++ (byte) cnt#13 [ cnt#2 ] ( main:2 [ cnt#2 ] ) -- vbuxx=_inc_vbuxx inx @@ -531,7 +531,7 @@ main: { //SEG19 main::@2 //SEG20 [9] (byte) cnt#11 ← ++ (byte) cnt#13 [ cnt#11 ] ( main:2 [ cnt#11 ] ) -- vbuxx=_inc_vbuxx inx - //SEG21 [10] *((const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuxx + //SEG21 [10] *((const byte[256]) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte) cnt#11 [ ] ( main:2 [ ] ) -- _deref_pbuc1=vbuxx stx SCREEN+1 //SEG22 main::@return //SEG23 [11] return [ ] ( main:2 [ ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.sym b/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.sym index f3eb98d47..eaba58bbf 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/modglobalmin.sym @@ -2,7 +2,7 @@ (label) @begin (label) @end (byte[256]) SCREEN -(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(const byte[256]) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) cnt (byte) cnt#11 reg byte x 4.0 (byte) cnt#12 reg byte x 4.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg index a13a1ed51..82aa65445 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.cfg @@ -47,7 +47,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1 to:@return print_str: scope:[print_str] from main main::@2 main::@4 [22] (byte*) print_char_cursor#29 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@2/(byte*~) print_char_cursor#31 main::@4/(byte*~) print_char_cursor#32 ) [ print_str::str#6 print_char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 print_char_cursor#29 ] main:2::print_str:9 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] main:2::print_str:13 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] ) - [22] (byte*) print_str::str#6 ← phi( main/(const string) msg#0 main::@2/(const string) msg2#0 main::@4/(const string) msg3#0 ) [ print_str::str#6 print_char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 print_char_cursor#29 ] main:2::print_str:9 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] main:2::print_str:13 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] ) + [22] (byte*) print_str::str#6 ← phi( main/(const byte[]) msg#0 main::@2/(const byte[]) msg2#0 main::@4/(const byte[]) msg3#0 ) [ print_str::str#6 print_char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 print_char_cursor#29 ] main:2::print_str:9 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] main:2::print_str:13 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 [23] (byte*) print_char_cursor#13 ← phi( print_str/(byte*) print_char_cursor#29 print_str::@2/(byte*) print_char_cursor#1 ) [ print_char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ print_char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log index d6cedcd8b..98067dc9d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.log @@ -915,13 +915,13 @@ Simple Condition (bool~) print_str::$0 if(*((byte*) print_str::str#4)!=(byte) '@ Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) print_char_cursor#13) goto print_ln::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_char_cursor#0 = ((byte*))1024 -Constant (const string) msg#0 = $0 -Constant (const string) msg2#0 = $1 -Constant (const string) msg3#0 = $2 +Constant (const byte[]) msg#0 = $0 +Constant (const byte[]) msg2#0 = $1 +Constant (const byte[]) msg3#0 = $2 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) print_str::str#1 = msg#0 -Constant (const string) print_str::str#2 = msg2#0 -Constant (const string) print_str::str#3 = msg3#0 +Constant (const byte*) print_str::str#1 = msg#0 +Constant (const byte*) print_str::str#2 = msg2#0 +Constant (const byte*) print_str::str#3 = msg3#0 Succesful SSA optimization Pass2ConstantIdentification Culled Empty Block (label) print_ln::@2 Culled Empty Block (label) @14 @@ -929,25 +929,25 @@ Culled Empty Block (label) main::@6 Culled Empty Block (label) @16 Succesful SSA optimization Pass2CullEmptyBlocks OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 Inlining constant with var siblings (const byte*) print_char_cursor#0 Inlining constant with var siblings (const byte*) print_char_cursor#0 Inlining constant with var siblings (const byte*) print_char_cursor#0 Constant inlined print_char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 -Constant inlined print_str::str#3 = (const string) msg3#0 -Constant inlined print_str::str#2 = (const string) msg2#0 -Constant inlined print_str::str#1 = (const string) msg#0 -Constant inlined $0 = (const string) msg#0 -Constant inlined $1 = (const string) msg2#0 -Constant inlined $2 = (const string) msg3#0 +Constant inlined print_str::str#3 = (const byte[]) msg3#0 +Constant inlined print_str::str#2 = (const byte[]) msg2#0 +Constant inlined print_str::str#1 = (const byte[]) msg#0 +Constant inlined $0 = (const byte[]) msg#0 +Constant inlined $1 = (const byte[]) msg2#0 +Constant inlined $2 = (const byte[]) msg3#0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @15 @end main main::@1 main::@2 main::@3 main::@4 main::@5 main::@return print_ln print_ln::@1 print_ln::@return print_str print_str::@1 print_str::@return print_str::@2 Added new block during phi lifting print_ln::@3(between print_ln::@1 and print_ln::@1) @@ -1048,7 +1048,7 @@ print_ln::@return: scope:[print_ln] from print_ln::@1 to:@return print_str: scope:[print_str] from main main::@2 main::@4 [22] (byte*) print_char_cursor#29 ← phi( main/((byte*))(word/signed word/dword/signed dword) 1024 main::@2/(byte*~) print_char_cursor#31 main::@4/(byte*~) print_char_cursor#32 ) [ print_str::str#6 print_char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 print_char_cursor#29 ] main:2::print_str:9 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] main:2::print_str:13 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] ) - [22] (byte*) print_str::str#6 ← phi( main/(const string) msg#0 main::@2/(const string) msg2#0 main::@4/(const string) msg3#0 ) [ print_str::str#6 print_char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 print_char_cursor#29 ] main:2::print_str:9 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] main:2::print_str:13 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] ) + [22] (byte*) print_str::str#6 ← phi( main/(const byte[]) msg#0 main::@2/(const byte[]) msg2#0 main::@4/(const byte[]) msg3#0 ) [ print_str::str#6 print_char_cursor#29 ] ( main:2::print_str:5 [ print_str::str#6 print_char_cursor#29 ] main:2::print_str:9 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] main:2::print_str:13 [ print_line_cursor#1 print_str::str#6 print_char_cursor#29 ] ) to:print_str::@1 print_str::@1: scope:[print_str] from print_str print_str::@2 [23] (byte*) print_char_cursor#13 ← phi( print_str/(byte*) print_char_cursor#29 print_str::@2/(byte*) print_char_cursor#1 ) [ print_char_cursor#13 print_str::str#4 ] ( main:2::print_str:5 [ print_char_cursor#13 print_str::str#4 ] main:2::print_str:9 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] main:2::print_str:13 [ print_line_cursor#1 print_char_cursor#13 print_str::str#4 ] ) @@ -1171,7 +1171,7 @@ main: { sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG13 [22] phi (byte*) print_str::str#6 = (const string) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 + //SEG13 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 lda #msg @@ -1203,7 +1203,7 @@ main: { //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] print_str_from_b2: //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#31 [phi:main::@2->print_str#0] -- register_copy - //SEG24 [22] phi (byte*) print_str::str#6 = (const string) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + //SEG24 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #msg2 @@ -1231,7 +1231,7 @@ main: { //SEG33 [22] phi from main::@4 to print_str [phi:main::@4->print_str] print_str_from_b4: //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@4->print_str#0] -- register_copy - //SEG35 [22] phi (byte*) print_str::str#6 = (const string) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 + //SEG35 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #msg3 @@ -1385,7 +1385,7 @@ main: { sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG13 [22] phi (byte*) print_str::str#6 = (const string) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 + //SEG13 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 lda #msg @@ -1417,7 +1417,7 @@ main: { //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] print_str_from_b2: //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#31 [phi:main::@2->print_str#0] -- register_copy - //SEG24 [22] phi (byte*) print_str::str#6 = (const string) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + //SEG24 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #msg2 @@ -1445,7 +1445,7 @@ main: { //SEG33 [22] phi from main::@4 to print_str [phi:main::@4->print_str] print_str_from_b4: //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@4->print_str#0] -- register_copy - //SEG35 [22] phi (byte*) print_str::str#6 = (const string) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 + //SEG35 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #msg3 @@ -1604,11 +1604,11 @@ FINAL SYMBOL TABLE (label) main::@5 (label) main::@return (byte[]) msg -(const string) msg#0 msg = (string) "hello world! @" +(const byte[]) msg#0 msg = (string) "hello world! @" (byte[]) msg2 -(const string) msg2#0 msg2 = (string) "hello c64! @" +(const byte[]) msg2#0 msg2 = (string) "hello c64! @" (byte[]) msg3 -(const string) msg3#0 msg3 = (string) "hello 2017! @" +(const byte[]) msg3#0 msg3 = (string) "hello 2017! @" (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:6 11.0 (byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:6 3.2857142857142856 @@ -1664,7 +1664,7 @@ main: { sta print_char_cursor lda #>$400 sta print_char_cursor+1 - //SEG13 [22] phi (byte*) print_str::str#6 = (const string) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 + //SEG13 [22] phi (byte*) print_str::str#6 = (const byte[]) msg#0 [phi:main->print_str#1] -- pbuz1=pbuc1 lda #msg @@ -1689,7 +1689,7 @@ main: { //SEG21 [9] call print_str [ print_line_cursor#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#1 print_char_cursor#13 ] ) //SEG22 [22] phi from main::@2 to print_str [phi:main::@2->print_str] //SEG23 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#31 [phi:main::@2->print_str#0] -- register_copy - //SEG24 [22] phi (byte*) print_str::str#6 = (const string) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 + //SEG24 [22] phi (byte*) print_str::str#6 = (const byte[]) msg2#0 [phi:main::@2->print_str#1] -- pbuz1=pbuc1 lda #msg2 @@ -1710,7 +1710,7 @@ main: { //SEG32 [13] call print_str [ print_line_cursor#1 print_char_cursor#13 ] ( main:2 [ print_line_cursor#1 print_char_cursor#13 ] ) //SEG33 [22] phi from main::@4 to print_str [phi:main::@4->print_str] //SEG34 [22] phi (byte*) print_char_cursor#29 = (byte*~) print_char_cursor#32 [phi:main::@4->print_str#0] -- register_copy - //SEG35 [22] phi (byte*) print_str::str#6 = (const string) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 + //SEG35 [22] phi (byte*) print_str::str#6 = (const byte[]) msg3#0 [phi:main::@4->print_str#1] -- pbuz1=pbuc1 lda #msg3 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym index 98f954979..fc7151c86 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/printmsg.sym @@ -9,11 +9,11 @@ (label) main::@5 (label) main::@return (byte[]) msg -(const string) msg#0 msg = (string) "hello world! @" +(const byte[]) msg#0 msg = (string) "hello world! @" (byte[]) msg2 -(const string) msg2#0 msg2 = (string) "hello c64! @" +(const byte[]) msg2#0 msg2 = (string) "hello c64! @" (byte[]) msg3 -(const string) msg3#0 msg3 = (string) "hello 2017! @" +(const byte[]) msg3#0 msg3 = (string) "hello 2017! @" (byte*) print_char_cursor (byte*) print_char_cursor#1 print_char_cursor zp ZP_WORD:6 11.0 (byte*) print_char_cursor#13 print_char_cursor zp ZP_WORD:6 3.2857142857142856 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.cfg b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.cfg index b45857889..3cf664c10 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.cfg @@ -71,8 +71,8 @@ rvalue::@2: scope:[rvalue] from rvalue::@1 [30] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] ( main:2::rvalue:7 [ rvalue::i#1 ] ) to:rvalue::@1 lvalue: scope:[lvalue] from main - [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) - [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) + [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) + [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) to:lvalue::@1 lvalue::@1: scope:[lvalue] from lvalue lvalue::@2 [33] (byte) lvalue::i#2 ← phi( lvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 lvalue::@2/(byte) lvalue::i#1 ) [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) @@ -82,6 +82,6 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 [35] return [ ] ( main:2::lvalue:5 [ ] ) to:@return lvalue::@2: scope:[lvalue] from lvalue::@1 - [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) + [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) [37] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:2::lvalue:5 [ lvalue::i#1 ] ) to:lvalue::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log index 23c78425f..77efb03e4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.log @@ -501,9 +501,9 @@ Simple Condition (bool~) rvalue::$0 if((byte) rvalue::i#2<(byte/signed byte/word Simple Condition (bool~) lvaluevar::$0 if((byte) lvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto lvaluevar::@2 Simple Condition (bool~) rvaluevar::$0 if((byte) rvaluevar::i#2<(byte/signed byte/word/signed word/dword/signed dword) 10) goto rvaluevar::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification -Constant (const byte*) lvalue::SCREEN#0 = ((byte*))1024 +Constant (const byte[1024]) lvalue::SCREEN#0 = ((byte*))1024 Constant (const byte) lvalue::i#0 = 2 -Constant (const byte*) rvalue::SCREEN#0 = ((byte*))1024 +Constant (const byte[1024]) rvalue::SCREEN#0 = ((byte*))1024 Constant (const byte) rvalue::i#0 = 2 Constant (const byte*) lvaluevar::screen#0 = ((byte*))1024 Constant (const byte) lvaluevar::b#0 = 4 @@ -514,11 +514,11 @@ Succesful SSA optimization Pass2ConstantIdentification Consolidated array index constant in *(lvalue::SCREEN#0+1) Consolidated array index constant in *(rvalue::SCREEN#0+1) Succesful SSA optimization Pass2ConstantAdditionElimination -Eliminating unused variable (byte) rvalue::b#0 and assignment [12] (byte) rvalue::b#0 ← *((const byte*) rvalue::SCREEN#0) -Eliminating unused variable (byte) rvalue::b#1 and assignment [13] (byte) rvalue::b#1 ← *((const byte*) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) -Eliminating unused variable (byte) rvalue::b#2 and assignment [16] (byte) rvalue::b#2 ← *((const byte*) rvalue::SCREEN#0 + (byte) rvalue::i#2) +Eliminating unused variable (byte) rvalue::b#0 and assignment [12] (byte) rvalue::b#0 ← *((const byte[1024]) rvalue::SCREEN#0) +Eliminating unused variable (byte) rvalue::b#1 and assignment [13] (byte) rvalue::b#1 ← *((const byte[1024]) rvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) +Eliminating unused variable (byte) rvalue::b#2 and assignment [16] (byte) rvalue::b#2 ← *((const byte[1024]) rvalue::SCREEN#0 + (byte) rvalue::i#2) Succesful SSA optimization PassNEliminateUnusedVars -Eliminating unused constant (const byte*) rvalue::SCREEN#0 +Eliminating unused constant (const byte[1024]) rvalue::SCREEN#0 Succesful SSA optimization PassNEliminateUnusedVars OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) lvalue::i#0 @@ -658,8 +658,8 @@ rvalue::@2: scope:[rvalue] from rvalue::@1 [30] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] ( main:2::rvalue:7 [ rvalue::i#1 ] ) to:rvalue::@1 lvalue: scope:[lvalue] from main - [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) - [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) + [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) + [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) to:lvalue::@1 lvalue::@1: scope:[lvalue] from lvalue lvalue::@2 [33] (byte) lvalue::i#2 ← phi( lvalue/(byte/signed byte/word/signed word/dword/signed dword) 2 lvalue::@2/(byte) lvalue::i#1 ) [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) @@ -669,7 +669,7 @@ lvalue::@return: scope:[lvalue] from lvalue::@1 [35] return [ ] ( main:2::lvalue:5 [ ] ) to:@return lvalue::@2: scope:[lvalue] from lvalue::@1 - [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) + [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) [37] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:2::lvalue:5 [ lvalue::i#1 ] ) to:lvalue::@1 @@ -959,10 +959,10 @@ rvalue: { lvalue: { .label SCREEN = $400 .label i = 9 - //SEG66 [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG66 [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG67 [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG67 [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1 //SEG68 [33] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] @@ -984,7 +984,7 @@ lvalue: { rts //SEG74 lvalue::@2 b2: - //SEG75 [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 + //SEG75 [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) -- pbuc1_derefidx_vbuz1=vbuc2 ldy i lda #3 sta SCREEN,y @@ -1000,14 +1000,14 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] Removing always clobbered register reg byte y as potential for zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] -Statement [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:9 [ lvalue::i#2 lvalue::i#1 ] Statement [17] *((byte*) lvaluevar::screen#2) ← (const byte) lvaluevar::b#0 [ lvaluevar::i#2 lvaluevar::screen#2 ] ( main:2::lvaluevar:11 [ lvaluevar::i#2 lvaluevar::screen#2 ] ) always clobbers reg byte a reg byte y -Statement [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a -Statement [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a +Statement [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) always clobbers reg byte a +Statement [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) always clobbers reg byte a Potential registers zp ZP_BYTE:2 [ lvaluevar::i#2 lvaluevar::i#1 ] : zp ZP_BYTE:2 , reg byte x , Potential registers zp ZP_WORD:3 [ lvaluevar::screen#2 lvaluevar::screen#1 ] : zp ZP_WORD:3 , Potential registers zp ZP_BYTE:5 [ rvaluevar::i#2 rvaluevar::i#1 ] : zp ZP_BYTE:5 , reg byte a , reg byte x , reg byte y , @@ -1201,10 +1201,10 @@ rvalue: { //SEG65 lvalue lvalue: { .label SCREEN = $400 - //SEG66 [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG66 [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG67 [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG67 [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1 //SEG68 [33] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] @@ -1224,7 +1224,7 @@ lvalue: { rts //SEG74 lvalue::@2 b2: - //SEG75 [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG75 [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #3 sta SCREEN,x //SEG76 [37] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:2::lvalue:5 [ lvalue::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -1292,7 +1292,7 @@ FINAL SYMBOL TABLE (label) lvalue::@2 (label) lvalue::@return (byte[1024]) lvalue::SCREEN -(const byte*) lvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(const byte[1024]) lvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) lvalue::i (byte) lvalue::i#1 reg byte x 22.0 (byte) lvalue::i#2 reg byte x 14.666666666666666 @@ -1474,10 +1474,10 @@ rvalue: { //SEG65 lvalue lvalue: { .label SCREEN = $400 - //SEG66 [31] *((const byte*) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG66 [31] *((const byte[1024]) lvalue::SCREEN#0) ← (byte/signed byte/word/signed word/dword/signed dword) 1 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #1 sta SCREEN - //SEG67 [32] *((const byte*) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 + //SEG67 [32] *((const byte[1024]) lvalue::SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 1) ← (byte/signed byte/word/signed word/dword/signed dword) 2 [ ] ( main:2::lvalue:5 [ ] ) -- _deref_pbuc1=vbuc2 lda #2 sta SCREEN+1 //SEG68 [33] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] @@ -1493,7 +1493,7 @@ lvalue: { rts //SEG74 lvalue::@2 b2: - //SEG75 [36] *((const byte*) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 + //SEG75 [36] *((const byte[1024]) lvalue::SCREEN#0 + (byte) lvalue::i#2) ← (byte/signed byte/word/signed word/dword/signed dword) 3 [ lvalue::i#2 ] ( main:2::lvalue:5 [ lvalue::i#2 ] ) -- pbuc1_derefidx_vbuxx=vbuc2 lda #3 sta SCREEN,x //SEG76 [37] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] ( main:2::lvalue:5 [ lvalue::i#1 ] ) -- vbuxx=_inc_vbuxx diff --git a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym index 8a60e0e43..fbbd58e90 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/ptrtest.sym @@ -6,7 +6,7 @@ (label) lvalue::@2 (label) lvalue::@return (byte[1024]) lvalue::SCREEN -(const byte*) lvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 +(const byte[1024]) lvalue::SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte) lvalue::i (byte) lvalue::i#1 reg byte x 22.0 (byte) lvalue::i#2 reg byte x 14.666666666666666 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg b/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg index d594885b1..52ac7495a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.cfg @@ -12,15 +12,15 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:2 [ main::nxt#3 main::i#2 ] ) - [5] (byte*) main::nxt#3 ← phi( main/(const string) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:2 [ main::nxt#3 main::i#2 ] ) + [5] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:2 [ main::nxt#3 main::i#2 ] ) [6] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] ) [7] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::c#1 ← *((const string) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) + [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [9] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const string) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:2 [ main::i#2 main::c#2 main::nxt#4 ] ) + [9] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const byte[]) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:2 [ main::i#2 main::c#2 main::nxt#4 ] ) [9] (byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:2 [ main::i#2 main::c#2 main::nxt#4 ] ) [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::c#2 main::nxt#4 ] ( main:2 [ main::i#1 main::c#2 main::nxt#4 ] ) [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] ( main:2 [ main::i#1 main::nxt#4 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.log b/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.log index 5ebfe104c..2956d2b59 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.log @@ -200,11 +200,11 @@ Succesful SSA optimization Pass2RedundantPhiElimination Simple Condition (bool~) main::$1 if((byte) main::c#0!=(byte) '@') goto main::@2 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) SCREEN#0 = ((byte*))1024 -Constant (const string) TEXT#0 = $0 +Constant (const byte[]) TEXT#0 = $0 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const string) main::nxt#0 = TEXT#0 -Constant (const string) main::nxt#2 = TEXT#0 +Constant (const byte*) main::nxt#0 = TEXT#0 +Constant (const byte*) main::nxt#2 = TEXT#0 Succesful SSA optimization Pass2ConstantIdentification if() condition always true - replacing block destination if(true) goto main::@1 Succesful SSA optimization Pass2ConstantIfs @@ -213,16 +213,16 @@ Succesful SSA optimization Pass2EliminateUnusedBlocks OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#2 -Inlining constant with var siblings (const string) main::nxt#2 -Inlining constant with var siblings (const string) main::nxt#2 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#2 +Inlining constant with var siblings (const byte*) main::nxt#2 +Inlining constant with var siblings (const byte*) main::nxt#2 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined main::nxt#0 = (const string) TEXT#0 -Constant inlined $0 = (const string) TEXT#0 -Constant inlined main::nxt#2 = (const string) TEXT#0 +Constant inlined main::nxt#0 = (const byte[]) TEXT#0 +Constant inlined $0 = (const byte[]) TEXT#0 +Constant inlined main::nxt#2 = (const byte[]) TEXT#0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @1 @end main main::@1 main::@3 main::@2 Added new block during phi lifting main::@5(between main::@1 and main::@2) @@ -274,15 +274,15 @@ main: scope:[main] from @1 to:main::@1 main::@1: scope:[main] from main main::@2 [5] (byte) main::i#2 ← phi( main/(byte/signed byte/word/signed word/dword/signed dword) 0 main::@2/(byte) main::i#1 ) [ main::nxt#3 main::i#2 ] ( main:2 [ main::nxt#3 main::i#2 ] ) - [5] (byte*) main::nxt#3 ← phi( main/(const string) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:2 [ main::nxt#3 main::i#2 ] ) + [5] (byte*) main::nxt#3 ← phi( main/(const byte[]) TEXT#0 main::@2/(byte*) main::nxt#1 ) [ main::nxt#3 main::i#2 ] ( main:2 [ main::nxt#3 main::i#2 ] ) [6] (byte) main::c#0 ← *((byte*) main::nxt#3) [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] ) [7] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#2 main::c#0 ] ( main:2 [ main::nxt#3 main::i#2 main::c#0 ] ) to:main::@3 main::@3: scope:[main] from main::@1 - [8] (byte) main::c#1 ← *((const string) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) + [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) to:main::@2 main::@2: scope:[main] from main::@1 main::@3 - [9] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const string) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:2 [ main::i#2 main::c#2 main::nxt#4 ] ) + [9] (byte*) main::nxt#4 ← phi( main::@1/(byte*) main::nxt#3 main::@3/(const byte[]) TEXT#0 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:2 [ main::i#2 main::c#2 main::nxt#4 ] ) [9] (byte) main::c#2 ← phi( main::@1/(byte) main::c#0 main::@3/(byte) main::c#1 ) [ main::i#2 main::c#2 main::nxt#4 ] ( main:2 [ main::i#2 main::c#2 main::nxt#4 ] ) [10] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 main::c#2 main::nxt#4 ] ( main:2 [ main::i#1 main::c#2 main::nxt#4 ] ) [11] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] ( main:2 [ main::i#1 main::nxt#4 ] ) @@ -371,7 +371,7 @@ main: { //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuz1=vbuc1 lda #0 sta i - //SEG12 [5] phi (byte*) main::nxt#3 = (const string) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #TEXT @@ -390,12 +390,12 @@ main: { jmp b3 //SEG16 main::@3 b3: - //SEG17 [8] (byte) main::c#1 ← *((const string) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) -- vbuz1=_deref_pbuc1 + //SEG17 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) -- vbuz1=_deref_pbuc1 lda TEXT sta c //SEG18 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG19 [9] phi (byte*) main::nxt#4 = (const string) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 + //SEG19 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 lda #TEXT @@ -475,7 +475,7 @@ main: { b1_from_main: //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi (byte*) main::nxt#3 = (const string) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #TEXT @@ -493,11 +493,11 @@ main: { jmp b3 //SEG16 main::@3 b3: - //SEG17 [8] (byte) main::c#1 ← *((const string) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) -- vbuyy=_deref_pbuc1 + //SEG17 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) -- vbuyy=_deref_pbuc1 ldy TEXT //SEG18 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG19 [9] phi (byte*) main::nxt#4 = (const string) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 + //SEG19 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 lda #TEXT @@ -560,7 +560,7 @@ FINAL SYMBOL TABLE (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) TEXT -(const string) TEXT#0 TEXT = (string) "01234567@" +(const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() (label) main::@1 (label) main::@2 @@ -605,7 +605,7 @@ main: { //SEG10 [5] phi from main to main::@1 [phi:main->main::@1] //SEG11 [5] phi (byte) main::i#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 [phi:main->main::@1#0] -- vbuxx=vbuc1 ldx #0 - //SEG12 [5] phi (byte*) main::nxt#3 = (const string) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 + //SEG12 [5] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- pbuz1=pbuc1 lda #TEXT @@ -620,10 +620,10 @@ main: { cpy #'@' bne b2 //SEG16 main::@3 - //SEG17 [8] (byte) main::c#1 ← *((const string) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) -- vbuyy=_deref_pbuc1 + //SEG17 [8] (byte) main::c#1 ← *((const byte[]) TEXT#0) [ main::i#2 main::c#1 ] ( main:2 [ main::i#2 main::c#1 ] ) -- vbuyy=_deref_pbuc1 ldy TEXT //SEG18 [9] phi from main::@3 to main::@2 [phi:main::@3->main::@2] - //SEG19 [9] phi (byte*) main::nxt#4 = (const string) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 + //SEG19 [9] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- pbuz1=pbuc1 lda #TEXT diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym b/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym index fe89891e9..f8a1ffb76 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym @@ -4,7 +4,7 @@ (byte*) SCREEN (const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024 (byte[]) TEXT -(const string) TEXT#0 TEXT = (string) "01234567@" +(const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() (label) main::@1 (label) main::@2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll.cfg b/src/test/java/dk/camelot64/kickc/test/ref/scroll.cfg index 63ed259f4..c4299aad9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll.cfg @@ -12,7 +12,7 @@ main: scope:[main] from @2 [5] call fillscreen [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main main::@2 main::@4 - [6] (byte*) main::nxt#9 ← phi( main::@4/(byte*) main::nxt#10 main/(const string) TEXT#0 ) [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) + [6] (byte*) main::nxt#9 ← phi( main::@4/(byte*) main::nxt#10 main/(const byte*) TEXT#0 ) [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) [6] (byte) main::scroll#7 ← phi( main::@4/(byte) main::scroll#10 main/(byte/signed byte/word/signed word/dword/signed dword) 7 ) [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) to:main::@3 @@ -26,7 +26,7 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@5 main::@8 [12] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) - [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) + [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) to:main::@10 @@ -35,12 +35,12 @@ main::@10: scope:[main] from main::@5 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) to:main::@11 main::@11: scope:[main] from main::@10 - [18] (byte) main::c#1 ← *((const string) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) + [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) to:main::@6 main::@6: scope:[main] from main::@10 main::@11 - [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const string) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) + [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) [19] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) - [20] *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) + [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) to:main::@4 main::@4: scope:[main] from main::@6 main::@8 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll.log b/src/test/java/dk/camelot64/kickc/test/ref/scroll.log index dfc627c9f..76028a000 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll.log @@ -676,15 +676,15 @@ Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) BGCOL#0 = ((byte*))53280 Constant (const byte*) SCROLL#0 = ((byte*))53270 -Constant (const string) TEXT#0 = $0 +Constant (const byte*) TEXT#0 = $0 Constant (const byte) fillscreen::fill#0 = 32 Constant (const byte) main::scroll#0 = 7 Constant (const byte) main::scroll#2 = 7 Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) fillscreen::screen#0 = SCREEN#0 -Constant (const string) main::nxt#0 = TEXT#0 -Constant (const byte*) main::line#0 = SCREEN#0+40 +Constant (const byte*) main::nxt#0 = TEXT#0 +Constant (const byte[]) main::line#0 = SCREEN#0+40 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) fillscreen::$0 = fillscreen::screen#0+1000 Succesful SSA optimization Pass2ConstantIdentification @@ -720,9 +720,9 @@ Succesful SSA optimization Pass2SelfPhiElimination Redundant Phi (byte*) RASTER#1 (const byte*) RASTER#0 Redundant Phi (byte*) BGCOL#5 (const byte*) BGCOL#0 Redundant Phi (byte*) SCROLL#7 (const byte*) SCROLL#0 -Redundant Phi (byte*) TEXT#10 (const string) TEXT#0 +Redundant Phi (byte*) TEXT#10 (const byte*) TEXT#0 Succesful SSA optimization Pass2RedundantPhiElimination -Constant (const string) main::nxt#2 = TEXT#0 +Constant (const byte*) main::nxt#2 = TEXT#0 Succesful SSA optimization Pass2ConstantIdentification OPTIMIZING CONTROL FLOW GRAPH Inlining constant with var siblings (const byte) main::scroll#0 @@ -733,22 +733,22 @@ Inlining constant with var siblings (const byte) main::scroll#2 Inlining constant with var siblings (const byte) main::scroll#2 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#0 -Inlining constant with var siblings (const string) main::nxt#2 -Inlining constant with var siblings (const string) main::nxt#2 -Inlining constant with var siblings (const string) main::nxt#2 -Inlining constant with var siblings (const string) main::nxt#2 -Constant inlined main::nxt#0 = (const string) TEXT#0 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#0 +Inlining constant with var siblings (const byte*) main::nxt#2 +Inlining constant with var siblings (const byte*) main::nxt#2 +Inlining constant with var siblings (const byte*) main::nxt#2 +Inlining constant with var siblings (const byte*) main::nxt#2 +Constant inlined main::nxt#0 = (const byte*) TEXT#0 Constant inlined main::scroll#0 = (byte/signed byte/word/signed word/dword/signed dword) 7 Constant inlined fillscreen::$0 = (const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000 Constant inlined fillscreen::screen#0 = (const byte*) SCREEN#0 Constant inlined main::scroll#2 = (byte/signed byte/word/signed word/dword/signed dword) 7 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $0 = (const string) TEXT#0 -Constant inlined main::nxt#2 = (const string) TEXT#0 +Constant inlined $0 = (const byte*) TEXT#0 +Constant inlined main::nxt#2 = (const byte*) TEXT#0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @2 @end main main::@2 main::@3 main::@8 main::@5 main::@10 main::@11 main::@6 main::@4 fillscreen fillscreen::@1 fillscreen::@return Added new block during phi lifting main::@14(between main::@5 and main::@5) @@ -818,7 +818,7 @@ main: scope:[main] from @2 [5] call fillscreen [ ] ( main:2 [ ] ) to:main::@2 main::@2: scope:[main] from main main::@2 main::@4 - [6] (byte*) main::nxt#9 ← phi( main::@4/(byte*) main::nxt#10 main/(const string) TEXT#0 ) [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) + [6] (byte*) main::nxt#9 ← phi( main::@4/(byte*) main::nxt#10 main/(const byte*) TEXT#0 ) [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) [6] (byte) main::scroll#7 ← phi( main::@4/(byte) main::scroll#10 main/(byte/signed byte/word/signed word/dword/signed dword) 7 ) [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) to:main::@3 @@ -832,7 +832,7 @@ main::@8: scope:[main] from main::@3 to:main::@5 main::@5: scope:[main] from main::@5 main::@8 [12] (byte) main::i#2 ← phi( main::@5/(byte) main::i#1 main::@8/(byte/signed byte/word/signed word/dword/signed dword) 0 ) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) - [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) + [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) [15] if((byte) main::i#1!=(byte/signed byte/word/signed word/dword/signed dword) 39) goto main::@5 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) to:main::@10 @@ -841,12 +841,12 @@ main::@10: scope:[main] from main::@5 [17] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) to:main::@11 main::@11: scope:[main] from main::@10 - [18] (byte) main::c#1 ← *((const string) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) + [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) to:main::@6 main::@6: scope:[main] from main::@10 main::@11 - [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const string) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) + [19] (byte*) main::nxt#4 ← phi( main::@10/(byte*) main::nxt#9 main::@11/(const byte*) TEXT#0 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) [19] (byte) main::c#2 ← phi( main::@10/(byte) main::c#0 main::@11/(byte) main::c#1 ) [ main::c#2 main::nxt#4 ] ( main:2 [ main::c#2 main::nxt#4 ] ) - [20] *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) + [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) to:main::@4 main::@4: scope:[main] from main::@6 main::@8 @@ -1006,7 +1006,7 @@ main: { jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte*) main::nxt#9 = (const string) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #TEXT @@ -1054,7 +1054,7 @@ main: { jmp b5 //SEG28 main::@5 b5: - //SEG29 [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 + //SEG29 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuz1=pbuc2_derefidx_vbuz1 ldy i lda line+1,y sta line,y @@ -1078,12 +1078,12 @@ main: { jmp b11 //SEG35 main::@11 b11: - //SEG36 [18] (byte) main::c#1 ← *((const string) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuz1=_deref_pbuc1 + //SEG36 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuz1=_deref_pbuc1 lda TEXT sta c //SEG37 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG38 [19] phi (byte*) main::nxt#4 = (const string) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG38 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT @@ -1097,7 +1097,7 @@ main: { jmp b6 //SEG43 main::@6 b6: - //SEG44 [20] *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuz1 + //SEG44 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuz1 lda c sta line+$27 //SEG45 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 @@ -1178,14 +1178,14 @@ REGISTER UPLIFT POTENTIAL REGISTERS Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:2 [ main::scroll#7 main::scroll#10 main::scroll#1 ] Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) always clobbers reg byte a +Statement [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) always clobbers reg byte a Removing always clobbered register reg byte a as potential for zp ZP_BYTE:3 [ main::i#2 main::i#1 ] Statement [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y Statement [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y Statement [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a Statement [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a Statement [8] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 255) goto main::@3 [ main::scroll#7 main::nxt#9 ] ( main:2 [ main::scroll#7 main::nxt#9 ] ) always clobbers reg byte a -Statement [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) always clobbers reg byte a +Statement [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) always clobbers reg byte a Statement [16] (byte) main::c#0 ← *((byte*) main::nxt#9) [ main::nxt#9 main::c#0 ] ( main:2 [ main::nxt#9 main::c#0 ] ) always clobbers reg byte a reg byte y Statement [27] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] ( main:2::fillscreen:5 [ fillscreen::cursor#2 ] ) always clobbers reg byte a reg byte y Statement [29] if((byte*) fillscreen::cursor#1<(const byte*) SCREEN#0+(word/signed word/dword/signed dword) 1000) goto fillscreen::@1 [ fillscreen::cursor#1 ] ( main:2::fillscreen:5 [ fillscreen::cursor#1 ] ) always clobbers reg byte a @@ -1242,7 +1242,7 @@ main: { jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG13 [6] phi (byte*) main::nxt#9 = (const string) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #TEXT @@ -1287,7 +1287,7 @@ main: { jmp b5 //SEG28 main::@5 b5: - //SEG29 [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG29 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line+1,x sta line,x //SEG30 [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -1308,11 +1308,11 @@ main: { jmp b11 //SEG35 main::@11 b11: - //SEG36 [18] (byte) main::c#1 ← *((const string) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 + //SEG36 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 ldx TEXT //SEG37 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG38 [19] phi (byte*) main::nxt#4 = (const string) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG38 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT @@ -1326,7 +1326,7 @@ main: { jmp b6 //SEG43 main::@6 b6: - //SEG44 [20] *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx + //SEG44 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx stx line+$27 //SEG45 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 inc nxt @@ -1464,7 +1464,7 @@ FINAL SYMBOL TABLE (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = ((byte*))(word/dword/signed dword) 53270 (byte*) TEXT -(const string) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" +(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (label) fillscreen::@1 (label) fillscreen::@return @@ -1491,7 +1491,7 @@ FINAL SYMBOL TABLE (byte) main::i#1 reg byte x 151.5 (byte) main::i#2 reg byte x 202.0 (byte[]) main::line -(const byte*) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 +(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 (byte*) main::nxt (byte*) main::nxt#1 nxt zp ZP_WORD:2 22.0 (byte*) main::nxt#10 nxt zp ZP_WORD:2 11.0 @@ -1536,7 +1536,7 @@ main: { //SEG11 [25] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen //SEG12 [6] phi from main to main::@2 [phi:main->main::@2] - //SEG13 [6] phi (byte*) main::nxt#9 = (const string) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 + //SEG13 [6] phi (byte*) main::nxt#9 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- pbuz1=pbuc1 lda #TEXT @@ -1571,7 +1571,7 @@ main: { //SEG27 [12] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG28 main::@5 b5: - //SEG29 [13] *((const byte*) main::line#0 + (byte) main::i#2) ← *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx + //SEG29 [13] *((const byte[]) main::line#0 + (byte) main::i#2) ← *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 1 + (byte) main::i#2) [ main::nxt#9 main::i#2 ] ( main:2 [ main::nxt#9 main::i#2 ] ) -- pbuc1_derefidx_vbuxx=pbuc2_derefidx_vbuxx lda line+1,x sta line,x //SEG30 [14] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::nxt#9 main::i#1 ] ( main:2 [ main::nxt#9 main::i#1 ] ) -- vbuxx=_inc_vbuxx @@ -1588,10 +1588,10 @@ main: { cpx #'@' bne b6 //SEG35 main::@11 - //SEG36 [18] (byte) main::c#1 ← *((const string) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 + //SEG36 [18] (byte) main::c#1 ← *((const byte*) TEXT#0) [ main::c#1 ] ( main:2 [ main::c#1 ] ) -- vbuxx=_deref_pbuc1 ldx TEXT //SEG37 [19] phi from main::@11 to main::@6 [phi:main::@11->main::@6] - //SEG38 [19] phi (byte*) main::nxt#4 = (const string) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 + //SEG38 [19] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- pbuz1=pbuc1 lda #TEXT @@ -1602,7 +1602,7 @@ main: { //SEG42 [19] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG43 main::@6 b6: - //SEG44 [20] *((const byte*) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx + //SEG44 [20] *((const byte[]) main::line#0+(byte/signed byte/word/signed word/dword/signed dword) 39) ← (byte) main::c#2 [ main::nxt#4 ] ( main:2 [ main::nxt#4 ] ) -- _deref_pbuc1=vbuxx stx line+$27 //SEG45 [21] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] ( main:2 [ main::nxt#1 ] ) -- pbuz1=_inc_pbuz1 inc nxt diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scroll.sym b/src/test/java/dk/camelot64/kickc/test/ref/scroll.sym index 677602b32..a13e99bcf 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scroll.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/scroll.sym @@ -10,7 +10,7 @@ (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = ((byte*))(word/dword/signed dword) 53270 (byte*) TEXT -(const string) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" +(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (void()) fillscreen((byte*) fillscreen::screen , (byte) fillscreen::fill) (label) fillscreen::@1 (label) fillscreen::@return @@ -37,7 +37,7 @@ (byte) main::i#1 reg byte x 151.5 (byte) main::i#2 reg byte x 202.0 (byte[]) main::line -(const byte*) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 +(const byte[]) main::line#0 line = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40 (byte*) main::nxt (byte*) main::nxt#1 nxt zp ZP_WORD:2 22.0 (byte*) main::nxt#10 nxt zp ZP_WORD:2 11.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg index a5a69c352..3f4a89e06 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.cfg @@ -13,7 +13,7 @@ main: scope:[main] from @6 to:main::@2 main::@2: scope:[main] from main main::@2 main::@8 [6] (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#11 main/(const byte*) CHARGEN#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [6] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#14 main/(const string) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [6] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#14 main/(const byte*) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [6] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#12 main/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [6] (byte) scroll#18 ← phi( main::@8/(byte) scroll#10 main/(byte/signed byte/word/signed word/dword/signed dword) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) @@ -119,11 +119,11 @@ next_char: scope:[next_char] from scroll_bit::@4 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ nxt#31 next_char::c#0 ] ) to:next_char::@2 next_char::@2: scope:[next_char] from next_char - [60] (byte) next_char::c#1 ← *((const string) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) + [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) to:next_char::@1 next_char::@1: scope:[next_char] from next_char next_char::@2 [61] (byte) next_char::return#1 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#18 ] ) - [61] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const string) TEXT#0 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#18 ] ) + [61] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#18 ] ) [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#19 ] ) to:next_char::@return next_char::@return: scope:[next_char] from next_char::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log index f97016379..0fc0f17c3 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.log @@ -1725,7 +1725,7 @@ Constant (const byte*) SCREEN#0 = ((byte*))1024 Constant (const byte*) RASTER#0 = ((byte*))53266 Constant (const byte*) BGCOL#0 = ((byte*))53280 Constant (const byte*) SCROLL#0 = ((byte*))53270 -Constant (const string) TEXT#0 = $0 +Constant (const byte*) TEXT#0 = $0 Constant (const byte) fillscreen::fill#0 = 32 Constant (const byte) scroll#15 = 7 Constant (const byte) scroll#14 = 7 @@ -1808,7 +1808,7 @@ Redundant Phi (byte*) SCROLL#7 (const byte*) SCROLL#0 Redundant Phi (byte*) PROCPORT#14 (const byte*) PROCPORT#0 Redundant Phi (byte*) SCREEN#17 (const byte*) SCREEN#0 Redundant Phi (byte*) CHARGEN#10 (const byte*) CHARGEN#0 -Redundant Phi (byte*) TEXT#12 (const string) TEXT#0 +Redundant Phi (byte*) TEXT#12 (const byte*) TEXT#0 Succesful SSA optimization Pass2RedundantPhiElimination Constant (const byte*) scroll_bit::$7 = SCREEN#0 Constant (const byte*) scroll_hard::$1 = SCREEN#0+scroll_hard::$0 @@ -1920,7 +1920,7 @@ Constant inlined scroll_hard::$5 = (byte/signed byte/word/signed word/dword/sign Constant inlined scroll_hard::$0 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined scroll_hard::$2 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined scroll_hard::$1 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $0 = (const string) TEXT#0 +Constant inlined $0 = (const byte*) TEXT#0 Constant inlined scroll_hard::$23 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 4 Constant inlined scroll_hard::$25 = (byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 Constant inlined scroll_hard::$26 = (const byte*) SCREEN#0+(byte/signed byte/word/signed word/dword/signed dword) 40*(byte/signed byte/word/signed word/dword/signed dword) 5 @@ -2077,7 +2077,7 @@ main: scope:[main] from @6 to:main::@2 main::@2: scope:[main] from main main::@2 main::@8 [6] (byte*) current_chargen#27 ← phi( main::@8/(byte*) current_chargen#11 main/(const byte*) CHARGEN#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) - [6] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#14 main/(const string) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) + [6] (byte*) nxt#31 ← phi( main::@8/(byte*) nxt#14 main/(const byte*) TEXT#0 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [6] (byte) current_bit#29 ← phi( main::@8/(byte) current_bit#12 main/(byte/signed byte/word/signed word/dword/signed dword) 1 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [6] (byte) scroll#18 ← phi( main::@8/(byte) scroll#10 main/(byte/signed byte/word/signed word/dword/signed dword) 7 ) [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) [7] if(*((const byte*) RASTER#0)!=(byte/word/signed word/dword/signed dword) 254) goto main::@2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ( main:2 [ scroll#18 current_bit#29 nxt#31 current_chargen#27 ] ) @@ -2183,11 +2183,11 @@ next_char: scope:[next_char] from scroll_bit::@4 [59] if((byte) next_char::c#0!=(byte) '@') goto next_char::@1 [ nxt#31 next_char::c#0 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ nxt#31 next_char::c#0 ] ) to:next_char::@2 next_char::@2: scope:[next_char] from next_char - [60] (byte) next_char::c#1 ← *((const string) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) + [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) to:next_char::@1 next_char::@1: scope:[next_char] from next_char next_char::@2 [61] (byte) next_char::return#1 ← phi( next_char/(byte) next_char::c#0 next_char::@2/(byte) next_char::c#1 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#18 ] ) - [61] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const string) TEXT#0 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#18 ] ) + [61] (byte*) nxt#18 ← phi( next_char/(byte*) nxt#31 next_char::@2/(const byte*) TEXT#0 ) [ next_char::return#1 nxt#18 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#18 ] ) [62] (byte*) nxt#19 ← ++ (byte*) nxt#18 [ next_char::return#1 nxt#19 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::return#1 nxt#19 ] ) to:next_char::@return next_char::@return: scope:[next_char] from next_char::@1 @@ -2442,7 +2442,7 @@ main: { sta current_chargen lda #>CHARGEN sta current_chargen+1 - //SEG14 [6] phi (byte*) nxt#31 = (const string) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 lda #TEXT @@ -2770,13 +2770,13 @@ next_char: { jmp b2 //SEG125 next_char::@2 b2: - //SEG126 [60] (byte) next_char::c#1 ← *((const string) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) -- vbuz1=_deref_pbuc1 + //SEG126 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) -- vbuz1=_deref_pbuc1 lda TEXT sta c //SEG127 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: //SEG128 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG129 [61] phi (byte*) nxt#18 = (const string) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG129 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT @@ -2985,7 +2985,7 @@ main: { sta current_chargen lda #>CHARGEN sta current_chargen+1 - //SEG14 [6] phi (byte*) nxt#31 = (const string) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 lda #TEXT @@ -3274,12 +3274,12 @@ next_char: { jmp b2 //SEG125 next_char::@2 b2: - //SEG126 [60] (byte) next_char::c#1 ← *((const string) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 + //SEG126 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 lda TEXT //SEG127 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] b1_from_b2: //SEG128 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG129 [61] phi (byte*) nxt#18 = (const string) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG129 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT @@ -3453,7 +3453,7 @@ FINAL SYMBOL TABLE (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = ((byte*))(word/dword/signed dword) 53270 (byte*) TEXT -(const string) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" +(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte) current_bit (byte) current_bit#12 current_bit zp ZP_BYTE:2 3.0 (byte) current_bit#21 current_bit zp ZP_BYTE:2 5.833333333333333 @@ -3585,7 +3585,7 @@ main: { sta current_chargen lda #>CHARGEN sta current_chargen+1 - //SEG14 [6] phi (byte*) nxt#31 = (const string) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 + //SEG14 [6] phi (byte*) nxt#31 = (const byte*) TEXT#0 [phi:main->main::@2#1] -- pbuz1=pbuc1 lda #TEXT @@ -3823,11 +3823,11 @@ next_char: { cmp #'@' bne b1 //SEG125 next_char::@2 - //SEG126 [60] (byte) next_char::c#1 ← *((const string) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 + //SEG126 [60] (byte) next_char::c#1 ← *((const byte*) TEXT#0) [ next_char::c#1 ] ( main:2::scroll_soft:10::scroll_bit:15::next_char:22 [ next_char::c#1 ] ) -- vbuaa=_deref_pbuc1 lda TEXT //SEG127 [61] phi from next_char::@2 to next_char::@1 [phi:next_char::@2->next_char::@1] //SEG128 [61] phi (byte) next_char::return#1 = (byte) next_char::c#1 [phi:next_char::@2->next_char::@1#0] -- register_copy - //SEG129 [61] phi (byte*) nxt#18 = (const string) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 + //SEG129 [61] phi (byte*) nxt#18 = (const byte*) TEXT#0 [phi:next_char::@2->next_char::@1#1] -- pbuz1=pbuc1 lda #TEXT diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym index 8b65cbcbb..87b526814 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrollbig.sym @@ -14,7 +14,7 @@ (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = ((byte*))(word/dword/signed dword) 53270 (byte*) TEXT -(const string) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" +(const byte*) TEXT#0 TEXT = (string) "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" (byte) current_bit (byte) current_bit#12 current_bit zp ZP_BYTE:2 3.0 (byte) current_bit#21 current_bit zp ZP_BYTE:2 5.833333333333333 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.asm b/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.asm index 2b3682dc6..ccde39a18 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.asm @@ -720,4 +720,4 @@ fill: { rts } .align $100 - xsin: .fill $400, 0 + xsin: .fill 2*$200, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.log b/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.log index 164f059f7..d8e87f54d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/scrolllogo.log @@ -4974,7 +4974,7 @@ Constant (const byte*) fill::start#0 = SCREEN#0 Constant (const byte) fill::val#0 = BLACK#0 Constant (const byte) fill::val#1 = WHITE#0|8 Constant (const byte*) fill::start#1 = COLS#0 -Constant (const signed word[512]) sin16s_gen2::sintab#1 = xsin#0 +Constant (const signed word*) sin16s_gen2::sintab#1 = xsin#0 Constant (const word) sin16s_gen2::wavelength#0 = XSIN_SIZE#0 Constant (const word/signed dword/dword) loop::$3 = XSIN_SIZE#0*2 Succesful SSA optimization Pass2ConstantIdentification @@ -5232,8 +5232,8 @@ Inlining constant with var siblings (const dword) sin16s_gen2::x#0 Inlining constant with var siblings (const dword) sin16s_gen2::x#0 Inlining constant with var siblings (const word) sin16s_gen2::i#0 Inlining constant with var siblings (const word) sin16s_gen2::i#0 -Inlining constant with var siblings (const signed word[512]) sin16s_gen2::sintab#1 -Inlining constant with var siblings (const signed word[512]) sin16s_gen2::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen2::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen2::sintab#1 Inlining constant with var siblings (const byte) sin16s::isUpper#0 Inlining constant with different constant siblings (const byte) sin16s::isUpper#0 Inlining constant with var siblings (const byte) sin16s::isUpper#1 @@ -8246,7 +8246,7 @@ fill: { rts } .align $100 - xsin: .fill $400, 0 + xsin: .fill 2*$200, 0 REGISTER UPLIFT POTENTIAL REGISTERS Statement [5] *((const byte*) BORDERCOL#0) ← (const byte) WHITE#0 [ ] ( main:2 [ ] ) always clobbers reg byte a @@ -10032,7 +10032,7 @@ fill: { rts } .align $100 - xsin: .fill $400, 0 + xsin: .fill 2*$200, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp b27 @@ -11778,5 +11778,5 @@ fill: { rts } .align $100 - xsin: .fill $400, 0 + xsin: .fill 2*$200, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.asm b/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.asm index 352e1212f..2c8aade8f 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.asm @@ -781,4 +781,4 @@ fill: { bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 - sin: .fill $400, 0 + sin: .fill 2*$200, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.log b/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.log index 4d0a4a829..efb988846 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sine-plotter.log @@ -5011,7 +5011,7 @@ Constant (const byte*) main::toD0181_gfx#0 = BITMAP#0 Constant (const byte*) fill::start#0 = SCREEN#0 Constant (const byte) fill::val#0 = WHITE#0 Constant (const byte*) bitmap_init::bitmap#0 = BITMAP#0 -Constant (const signed word[512]) sin16s_gen2::sintab#1 = sin#0 +Constant (const signed word*) sin16s_gen2::sintab#1 = sin#0 Constant (const word) sin16s_gen2::wavelength#0 = SIN_SIZE#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::dividend#1 = >div32u16u::dividend#0 @@ -5294,8 +5294,8 @@ Inlining constant with var siblings (const dword) sin16s_gen2::x#0 Inlining constant with var siblings (const dword) sin16s_gen2::x#0 Inlining constant with var siblings (const word) sin16s_gen2::i#0 Inlining constant with var siblings (const word) sin16s_gen2::i#0 -Inlining constant with var siblings (const signed word[512]) sin16s_gen2::sintab#1 -Inlining constant with var siblings (const signed word[512]) sin16s_gen2::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen2::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen2::sintab#1 Inlining constant with var siblings (const byte) sin16s::isUpper#0 Inlining constant with different constant siblings (const byte) sin16s::isUpper#0 Inlining constant with var siblings (const byte) sin16s::isUpper#1 @@ -8534,7 +8534,7 @@ fill: { bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 - sin: .fill $400, 0 + sin: .fill 2*$200, 0 REGISTER UPLIFT POTENTIAL REGISTERS Equivalence Class zp ZP_BYTE:191 [ bitmap_init::$4 ] has ALU potential. @@ -10457,7 +10457,7 @@ fill: { bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 - sin: .fill $400, 0 + sin: .fill 2*$200, 0 ASSEMBLER OPTIMIZATIONS Removing instruction jmp b28 @@ -12435,5 +12435,5 @@ fill: { bitmap_plot_yhi: .fill $100, 0 bitmap_plot_bit: .fill $100, 0 .align $100 - sin: .fill $400, 0 + sin: .fill 2*$200, 0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg index 652ea395a..22a59415c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.cfg @@ -103,12 +103,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [48] (byte*) print_char_cursor#31 ← phi( print_word/(byte*) print_char_cursor#32 print_word::@1/(byte*) print_char_cursor#10 ) [ print_byte::b#2 print_char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 ] ) [48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 ] ) [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ) - [50] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) + [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) [51] call print_char [ print_char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) - [53] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) + [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) [54] call print_char [ print_char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log index 0cb7490b4..f7f3b4b6c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.log @@ -2023,7 +2023,7 @@ Simple Condition (bool~) print_ln::$1 if((byte*) print_line_cursor#1<(byte*) pri Simple Condition (bool~) main::$15 if((byte) main::i#1!=rangelast(1,25)) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_char_cursor#0 = ((byte*))1024 -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const byte*) memLo#0 = ((byte*))254 Constant (const byte*) memHi#0 = ((byte*))255 Constant (const byte[]) main::f_i#0 = { 0, 0, 0, 0, 0 } @@ -2033,15 +2033,15 @@ Constant (const word) setFAC::w#0 = 1275 Constant (const byte) main::i#0 = 1 Constant (const word) setFAC::w#2 = 25 Succesful SSA optimization Pass2ConstantIdentification -Constant (const byte[]) setMEMtoFAC::mem#0 = main::f_127#0 +Constant (const byte*) setMEMtoFAC::mem#0 = main::f_127#0 Constant (const byte*) mulFACbyMEM::mem#0 = main::f_2pi#0 -Constant (const byte[]) setMEMtoFAC::mem#1 = main::f_i#0 -Constant (const byte[]) divMEMbyFAC::mem#0 = main::f_i#0 -Constant (const byte[]) mulFACbyMEM::mem#1 = main::f_127#0 -Constant (const byte[]) addMEMtoFAC::mem#0 = main::f_127#0 +Constant (const byte*) setMEMtoFAC::mem#1 = main::f_i#0 +Constant (const byte*) divMEMbyFAC::mem#0 = main::f_i#0 +Constant (const byte*) mulFACbyMEM::mem#1 = main::f_127#0 +Constant (const byte*) addMEMtoFAC::mem#0 = main::f_127#0 Succesful SSA optimization Pass2ConstantIdentification -Constant (const byte[]) prepareMEM::mem#2 = addMEMtoFAC::mem#0 -Constant (const byte[]) prepareMEM::mem#3 = divMEMbyFAC::mem#0 +Constant (const byte*) prepareMEM::mem#2 = addMEMtoFAC::mem#0 +Constant (const byte*) prepareMEM::mem#3 = divMEMbyFAC::mem#0 Succesful SSA optimization Pass2ConstantIdentification Fixing inline constructor with getFAC::$0 ← *(memHi#0) w= *(memLo#0) Succesful SSA optimization Pass2FixInlineConstructors @@ -2093,22 +2093,22 @@ Not aliassing across scopes: print_line_cursor#13 print_line_cursor#1 Not aliassing across scopes: getFAC::return#2 getFAC::return#0 Not aliassing across scopes: print_word::w#0 getFAC::return#2 OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#3 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#3 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#3 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#3 +Inlining constant with var siblings (const byte*) prepareMEM::mem#3 +Inlining constant with var siblings (const byte*) prepareMEM::mem#3 Inlining constant with var siblings (const word) setFAC::w#0 Inlining constant with var siblings (const word) setFAC::w#0 Inlining constant with different constant siblings (const word) setFAC::w#0 Inlining constant with var siblings (const word) setFAC::w#2 Inlining constant with var siblings (const word) setFAC::w#2 Inlining constant with different constant siblings (const word) setFAC::w#2 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#0 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#1 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#0 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#1 Inlining constant with var siblings (const byte*) mulFACbyMEM::mem#0 -Inlining constant with var siblings (const byte[]) mulFACbyMEM::mem#1 +Inlining constant with var siblings (const byte*) mulFACbyMEM::mem#1 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte) main::i#0 Inlining constant with var siblings (const byte*) print_char_cursor#0 @@ -2119,7 +2119,7 @@ Constant inlined addMEMtoFAC::mem#0 = (const byte[]) main::f_127#0 Constant inlined setFAC::w#2 = (byte/signed byte/word/signed word/dword/signed dword) 25 Constant inlined prepareMEM::mem#2 = (const byte[]) main::f_127#0 Constant inlined prepareMEM::mem#3 = (const byte[]) main::f_i#0 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined print_char_cursor#0 = ((byte*))(word/signed word/dword/signed dword) 1024 Constant inlined divMEMbyFAC::mem#0 = (const byte[]) main::f_i#0 Constant inlined main::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -2356,12 +2356,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [48] (byte*) print_char_cursor#31 ← phi( print_word/(byte*) print_char_cursor#32 print_word::@1/(byte*) print_char_cursor#10 ) [ print_byte::b#2 print_char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 ] ) [48] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#31 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 ] ) [49] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_byte::$0 ] ) - [50] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) + [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) [51] call print_char [ print_char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) - [53] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) + [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) [54] call print_char [ print_char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -2968,7 +2968,7 @@ print_byte: { lsr lsr sta _0 - //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -2985,7 +2985,7 @@ print_byte: { lda #$f and b sta _2 - //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -3610,7 +3610,7 @@ print_byte: { lsr lsr lsr - //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG108 [51] call print_char [ print_char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#2 ] ) @@ -3625,7 +3625,7 @@ print_byte: { //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG115 [54] call print_char [ print_char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 ] ) @@ -4035,7 +4035,7 @@ FINAL SYMBOL TABLE (byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 0.5909090909090909 (byte*~) print_char_cursor#49 print_char_cursor zp ZP_WORD:5 22.0 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 46.42857142857143 (byte*) print_line_cursor#13 print_line_cursor zp ZP_WORD:3 0.5416666666666666 @@ -4300,7 +4300,7 @@ print_byte: { lsr lsr lsr - //SEG107 [50] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG107 [50] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_byte::b#2 print_char_cursor#31 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG108 [51] call print_char [ print_char_cursor#10 print_byte::b#2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::b#2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::b#2 ] ) @@ -4312,7 +4312,7 @@ print_byte: { //SEG113 [52] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_byte::$2 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG114 [53] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG114 [53] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#1 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 print_char::ch#1 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG115 [54] call print_char [ print_char_cursor#10 ] ( main:2::print_word:31::print_byte:44 [ main::i#10 print_line_cursor#13 print_word::w#0 print_char_cursor#10 ] main:2::print_word:31::print_byte:46 [ main::i#10 print_line_cursor#13 print_char_cursor#10 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym index c7ddd55fe..4938af911 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-basic.sym @@ -83,7 +83,7 @@ (byte*) print_char_cursor#32 print_char_cursor zp ZP_WORD:5 0.5909090909090909 (byte*~) print_char_cursor#49 print_char_cursor zp ZP_WORD:5 22.0 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 46.42857142857143 (byte*) print_line_cursor#13 print_line_cursor zp ZP_WORD:3 0.5416666666666666 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg index 6b1a3c12a..35e291457 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.cfg @@ -354,7 +354,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 [171] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) [171] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word/dword/signed dword) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) - [172] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) + [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) [174] call gen_chargen_sprite [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) to:gen_sprites::@3 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log index 537c72a2b..fd223ec64 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.log @@ -4659,7 +4659,7 @@ Constant (const byte) place_sprites::j2#0 = 0 Constant (const byte) place_sprites::col#0 = 5 Constant (const byte) place_sprites::j#0 = 0 Constant (const byte/signed byte/word/signed word/dword/signed dword) place_sprites::$4 = 7^5 -Constant (const string) gen_sprites::cml#0 = gen_sprites::$3 +Constant (const byte[]) gen_sprites::cml#0 = gen_sprites::$3 Constant (const byte) gen_sprites::i#0 = 0 Constant (const byte) gen_chargen_sprite::y#0 = 0 Constant (const byte) gen_chargen_sprite::s_gen#0 = 0 @@ -4678,27 +4678,27 @@ Constant (const word) setFAC::w#2 = 2 Constant (const byte) gen_sintab::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) progress_init::line#0 = SCREEN#0 -Constant (const byte[221]) gen_sintab::sintab#0 = sintab_x#0 +Constant (const byte*) gen_sintab::sintab#0 = sintab_x#0 Constant (const byte) gen_sintab::length#0 = sinlen_x#0 Constant (const byte*) progress_init::line#1 = SCREEN#0+40 -Constant (const byte[197]) gen_sintab::sintab#1 = sintab_y#0 +Constant (const byte*) gen_sintab::sintab#1 = sintab_y#0 Constant (const byte) gen_sintab::length#1 = sinlen_y#0 Constant (const byte*) clear_screen::sc#0 = SCREEN#0 Constant (const byte*) clear_screen::$0 = SCREEN#0+1000 Constant (const byte*) place_sprites::sprites_ptr#0 = SCREEN#0+1016 Constant (const byte*) place_sprites::$1 = sprites#0/64 Constant (const byte*) gen_sprites::spr#0 = sprites#0 -Constant (const byte[]) setMEMtoFAC::mem#0 = gen_sintab::f_min#0 -Constant (const byte[]) setMEMtoFAC::mem#1 = gen_sintab::f_amp#0 -Constant (const byte[]) divMEMbyFAC::mem#0 = gen_sintab::f_amp#0 -Constant (const byte[]) setMEMtoFAC::mem#2 = gen_sintab::f_amp#0 -Constant (const byte[]) addMEMtoFAC::mem#0 = gen_sintab::f_min#0 -Constant (const byte[]) setMEMtoFAC::mem#3 = gen_sintab::f_min#0 +Constant (const byte*) setMEMtoFAC::mem#0 = gen_sintab::f_min#0 +Constant (const byte*) setMEMtoFAC::mem#1 = gen_sintab::f_amp#0 +Constant (const byte*) divMEMbyFAC::mem#0 = gen_sintab::f_amp#0 +Constant (const byte*) setMEMtoFAC::mem#2 = gen_sintab::f_amp#0 +Constant (const byte*) addMEMtoFAC::mem#0 = gen_sintab::f_min#0 +Constant (const byte*) setMEMtoFAC::mem#3 = gen_sintab::f_min#0 Constant (const byte*) mulFACbyMEM::mem#0 = gen_sintab::f_2pi#0 -Constant (const byte[]) setMEMtoFAC::mem#4 = gen_sintab::f_i#0 -Constant (const byte[]) divMEMbyFAC::mem#1 = gen_sintab::f_i#0 -Constant (const byte[]) mulFACbyMEM::mem#1 = gen_sintab::f_amp#0 -Constant (const byte[]) addMEMtoFAC::mem#1 = gen_sintab::f_min#0 +Constant (const byte*) setMEMtoFAC::mem#4 = gen_sintab::f_i#0 +Constant (const byte*) divMEMbyFAC::mem#1 = gen_sintab::f_i#0 +Constant (const byte*) mulFACbyMEM::mem#1 = gen_sintab::f_amp#0 +Constant (const byte*) addMEMtoFAC::mem#1 = gen_sintab::f_min#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) place_sprites::spr_id#0 = ((byte))place_sprites::$1 Succesful SSA optimization Pass2ConstantIdentification @@ -4841,17 +4841,17 @@ Inlining constant with var siblings (const word) setFAC::w#2 Inlining constant with var siblings (const word) setFAC::w#2 Inlining constant with var siblings (const word) setFAC::w#2 Inlining constant with var siblings (const word) setFAC::w#2 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#0 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#1 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#2 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#3 -Inlining constant with var siblings (const byte[]) setMEMtoFAC::mem#4 -Inlining constant with var siblings (const byte[]) addMEMtoFAC::mem#0 -Inlining constant with var siblings (const byte[]) addMEMtoFAC::mem#1 -Inlining constant with var siblings (const byte[]) divMEMbyFAC::mem#0 -Inlining constant with var siblings (const byte[]) divMEMbyFAC::mem#1 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#0 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#1 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#2 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#3 +Inlining constant with var siblings (const byte*) setMEMtoFAC::mem#4 +Inlining constant with var siblings (const byte*) addMEMtoFAC::mem#0 +Inlining constant with var siblings (const byte*) addMEMtoFAC::mem#1 +Inlining constant with var siblings (const byte*) divMEMbyFAC::mem#0 +Inlining constant with var siblings (const byte*) divMEMbyFAC::mem#1 Inlining constant with var siblings (const byte*) mulFACbyMEM::mem#0 -Inlining constant with var siblings (const byte[]) mulFACbyMEM::mem#1 +Inlining constant with var siblings (const byte*) mulFACbyMEM::mem#1 Inlining constant with var siblings (const byte) init::i#0 Inlining constant with var siblings (const byte) init::i#0 Inlining constant with var siblings (const byte*) clear_screen::sc#0 @@ -4916,9 +4916,9 @@ Inlining constant with var siblings (const byte) gen_sintab::max#1 Inlining constant with different constant siblings (const byte) gen_sintab::max#1 Inlining constant with var siblings (const byte) gen_sintab::i#0 Inlining constant with var siblings (const byte) gen_sintab::i#0 -Inlining constant with var siblings (const byte[221]) gen_sintab::sintab#0 +Inlining constant with var siblings (const byte*) gen_sintab::sintab#0 Inlining constant with var siblings (const byte) gen_sintab::length#0 -Inlining constant with var siblings (const byte[197]) gen_sintab::sintab#1 +Inlining constant with var siblings (const byte*) gen_sintab::sintab#1 Inlining constant with var siblings (const byte) gen_sintab::length#1 Inlining constant with var siblings (const byte) progress_idx#23 Inlining constant with var siblings (const byte) progress_idx#23 @@ -4991,17 +4991,17 @@ Constant inlined place_sprites::col#0 = (byte/signed byte/word/signed word/dword Constant inlined gen_chargen_sprite::y#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sin_idx_y#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined progress_idx#11 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined gen_sprites::$3 = (const string) gen_sprites::cml#0 +Constant inlined gen_sprites::$3 = (const byte[]) gen_sprites::cml#0 Constant inlined anim::j2#0 = (byte/signed byte/word/signed word/dword/signed dword) 12 Succesful SSA optimization Pass2ConstantInlining Identical Phi Values (byte*) addMEMtoFAC::mem#2 (const byte[]) gen_sintab::f_min#0 Succesful SSA optimization Pass2IdenticalPhiElimination -Constant (const byte[]) prepareMEM::mem#2 = gen_sintab::f_min#0 +Constant (const byte*) prepareMEM::mem#2 = gen_sintab::f_min#0 Succesful SSA optimization Pass2ConstantIdentification -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 -Inlining constant with var siblings (const byte[]) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 +Inlining constant with var siblings (const byte*) prepareMEM::mem#2 Constant inlined prepareMEM::mem#2 = (const byte[]) gen_sintab::f_min#0 Succesful SSA optimization Pass2ConstantInlining Block Sequence Planned @begin @54 @end main main::@2 main::@3 anim anim::@1 anim::@6 anim::@2 anim::@7 anim::@3 anim::@8 anim::@9 anim::@4 anim::@10 anim::@5 anim::@return init init::@1 init::@2 init::@4 init::@5 init::@6 init::@7 init::@8 init::@9 init::@return clear_screen clear_screen::@1 clear_screen::@return gen_sintab gen_sintab::@3 gen_sintab::@4 gen_sintab::@5 gen_sintab::@6 gen_sintab::@7 gen_sintab::@8 gen_sintab::@9 gen_sintab::@10 gen_sintab::@11 gen_sintab::@12 gen_sintab::@1 gen_sintab::@14 gen_sintab::@15 gen_sintab::@16 gen_sintab::@17 gen_sintab::@18 gen_sintab::@19 gen_sintab::@20 gen_sintab::@21 gen_sintab::@22 gen_sintab::@23 gen_sintab::@return progress_inc progress_inc::@2 progress_inc::@1 progress_inc::@return getFAC getFAC::@return addMEMtoFAC addMEMtoFAC::@1 addMEMtoFAC::@return prepareMEM prepareMEM::@return mulFACbyMEM mulFACbyMEM::@1 mulFACbyMEM::@return sinFAC sinFAC::@return divMEMbyFAC divMEMbyFAC::@1 divMEMbyFAC::@return setFAC setFAC::@1 setFAC::@return setMEMtoFAC setMEMtoFAC::@1 setMEMtoFAC::@return subFACfromARG subFACfromARG::@return setARGtoFAC setARGtoFAC::@return progress_init progress_init::@return gen_sprites gen_sprites::@1 gen_sprites::@3 gen_sprites::@return gen_chargen_sprite gen_chargen_sprite::@1 gen_chargen_sprite::@2 gen_chargen_sprite::@6 gen_chargen_sprite::@3 gen_chargen_sprite::@4 gen_chargen_sprite::@7 gen_chargen_sprite::@5 gen_chargen_sprite::@8 gen_chargen_sprite::@9 gen_chargen_sprite::@10 gen_chargen_sprite::@return place_sprites place_sprites::@1 place_sprites::@return @@ -5641,7 +5641,7 @@ gen_sprites: scope:[gen_sprites] from init::@4 gen_sprites::@1: scope:[gen_sprites] from gen_sprites gen_sprites::@3 [171] (byte*) gen_sprites::spr#2 ← phi( gen_sprites/(const byte*) sprites#0 gen_sprites::@3/(byte*) gen_sprites::spr#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) [171] (byte) gen_sprites::i#2 ← phi( gen_sprites/(byte/signed byte/word/signed word/dword/signed dword) 0 gen_sprites::@3/(byte) gen_sprites::i#1 ) [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) - [172] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) + [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) [174] call gen_chargen_sprite [ gen_sprites::i#2 gen_sprites::spr#2 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 ] ) to:gen_sprites::@3 @@ -7329,7 +7329,7 @@ gen_sprites: { jmp b1 //SEG354 gen_sprites::@1 b1: - //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy i lda cml,y sta gen_chargen_sprite.ch @@ -9009,7 +9009,7 @@ gen_sprites: { jmp b1 //SEG354 gen_sprites::@1 b1: - //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 ldx i ldy cml,x //SEG356 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 @@ -9830,7 +9830,7 @@ FINAL SYMBOL TABLE (label) gen_sprites::@3 (label) gen_sprites::@return (byte[]) gen_sprites::cml -(const string) gen_sprites::cml#0 cml = (string) "camelot" +(const byte[]) gen_sprites::cml#0 cml = (string) "camelot" (byte) gen_sprites::i (byte) gen_sprites::i#1 i zp ZP_BYTE:2 16.5 (byte) gen_sprites::i#2 i zp ZP_BYTE:2 6.6000000000000005 @@ -10748,7 +10748,7 @@ gen_sprites: { //SEG353 [171] phi (byte) gen_sprites::i#2 = (byte) gen_sprites::i#1 [phi:gen_sprites::@3->gen_sprites::@1#1] -- register_copy //SEG354 gen_sprites::@1 b1: - //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const string) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 + //SEG355 [172] (byte) gen_chargen_sprite::ch#0 ← *((const byte[]) gen_sprites::cml#0 + (byte) gen_sprites::i#2) [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 ] ) -- vbuyy=pbuc1_derefidx_vbuz1 ldx i ldy cml,x //SEG356 [173] (byte*) gen_chargen_sprite::sprite#0 ← (byte*) gen_sprites::spr#2 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ( main:2::init:5::gen_sprites:53 [ gen_sprites::i#2 gen_sprites::spr#2 gen_chargen_sprite::ch#0 gen_chargen_sprite::sprite#0 ] ) -- pbuz1=pbuz2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym index 585ca41b4..dad70b041 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinus-sprites.sym @@ -182,7 +182,7 @@ (label) gen_sprites::@3 (label) gen_sprites::@return (byte[]) gen_sprites::cml -(const string) gen_sprites::cml#0 cml = (string) "camelot" +(const byte[]) gen_sprites::cml#0 cml = (string) "camelot" (byte) gen_sprites::i (byte) gen_sprites::i#1 i zp ZP_BYTE:2 16.5 (byte) gen_sprites::i#2 i zp ZP_BYTE:2 6.6000000000000005 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm index c4c2212fe..8ff0f00e2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.asm @@ -60,7 +60,7 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 + sintab1: .fill 2*$78, 0 } print_str: { .label str = 4 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg index 09f0b6ae9..9bc41b0c3 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.cfg @@ -91,12 +91,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [40] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 ] ) [40] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 ] ) [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) - [42] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) + [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) [43] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::$2 ] ) - [45] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) + [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) [46] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log index ea6b6ee64..8f16f3380 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.log @@ -4047,16 +4047,16 @@ Constant (const byte) mulu16_sel::select#3 = 0 Constant (const byte) mulu16_sel::select#4 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::wavelength#0 = 120 Constant (const signed word[120]) main::sintab1#0 = { fill( 120, 0) } -Constant (const string) print_str::str#1 = main::str -Constant (const string) print_str::str#2 = main::str1 +Constant (const byte*) print_str::str#1 = main::str +Constant (const byte*) print_str::str#2 = main::str1 Succesful SSA optimization Pass2ConstantIdentification Constant (const dword) div32u16u::dividend#0 = PI2_u4f28#0 Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const signed word[120]) sin16s_gen::sintab#1 = main::sintab1#0 +Constant (const signed word*) sin16s_gen::sintab#1 = main::sintab1#0 Constant (const word) sin16s_gen::wavelength#0 = main::wavelength#0 Constant (const word/signed dword/dword) main::$8 = main::wavelength#0*2 Succesful SSA optimization Pass2ConstantIdentification @@ -4262,8 +4262,8 @@ Inlining constant with var siblings (const dword) sin16s_gen::x#0 Inlining constant with var siblings (const dword) sin16s_gen::x#0 Inlining constant with var siblings (const word) sin16s_gen::i#0 Inlining constant with var siblings (const word) sin16s_gen::i#0 -Inlining constant with var siblings (const signed word[120]) sin16s_gen::sintab#1 -Inlining constant with var siblings (const signed word[120]) sin16s_gen::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen::sintab#1 Inlining constant with var siblings (const byte) sin16s::isUpper#0 Inlining constant with different constant siblings (const byte) sin16s::isUpper#0 Inlining constant with var siblings (const byte) sin16s::isUpper#1 @@ -4290,12 +4290,12 @@ Inlining constant with different constant siblings (const byte) mulu16_sel::sele Inlining constant with var siblings (const byte) mulu16_sel::select#4 Inlining constant with different constant siblings (const byte) mulu16_sel::select#4 Inlining constant with different constant siblings (const byte) mulu16_sel::select#4 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -4307,7 +4307,7 @@ Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed Constant inlined sin16s_gen::wavelength#0 = (const word) main::wavelength#0 Constant inlined div32u16u::dividend#0 = (const dword) PI2_u4f28#0 Constant inlined sin16s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined mulu16_sel::select#4 = (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 mulu16_sel::select#2 = (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -4624,12 +4624,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [40] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 ] ) [40] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 ] ) [41] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) - [42] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) + [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) [43] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::$2 ] ) - [45] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) + [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) [46] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -5485,7 +5485,7 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 + sintab1: .fill 2*$78, 0 } //SEG47 print_str print_str: { @@ -5616,7 +5616,7 @@ print_byte: { lsr lsr sta _0 - //SEG92 [42] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG92 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -5633,7 +5633,7 @@ print_byte: { lda #$f and b sta _2 - //SEG99 [45] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG99 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -7000,7 +7000,7 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 + sintab1: .fill 2*$78, 0 } //SEG47 print_str print_str: { @@ -7126,7 +7126,7 @@ print_byte: { lsr lsr lsr - //SEG92 [42] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG92 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG93 [43] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::b#2 ] ) @@ -7141,7 +7141,7 @@ print_byte: { //SEG98 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG99 [45] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG99 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG100 [46] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 ] ) @@ -8281,7 +8281,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) print_screen @@ -8509,7 +8509,7 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 + sintab1: .fill 2*$78, 0 } //SEG47 print_str print_str: { @@ -8612,7 +8612,7 @@ print_byte: { lsr lsr lsr - //SEG92 [42] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG92 [42] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG93 [43] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::b#2 ] ) @@ -8624,7 +8624,7 @@ print_byte: { //SEG98 [44] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG99 [45] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG99 [45] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG100 [46] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:15::print_word:33::print_byte:36 [ main::st1#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:15::print_word:33::print_byte:38 [ main::st1#2 print_char_cursor#12 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym index 271868bb6..7dd349995 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16.sym @@ -157,7 +157,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) print_screen diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.asm index e9331b486..49f2ad894 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.asm @@ -74,8 +74,8 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 - sintab2: .fill $f0, 0 + sintab1: .fill 2*$78, 0 + sintab2: .fill 2*$78, 0 } print_str: { .label str = 6 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.cfg index d17ff9b7b..a77c65efd 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.cfg @@ -99,12 +99,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [44] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 ] ) [44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 ] ) [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) - [46] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) + [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) [47] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::$2 ] ) - [49] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) + [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) [50] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.log index 6444915f0..bf37619f9 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.log @@ -4826,21 +4826,21 @@ Constant (const byte) mulu16_sel::select#8 = 0 Constant (const byte) mulu16_sel::select#9 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::wavelength#0 = 120 Constant (const signed word[120]) main::sintab1#0 = { fill( 120, 0) } Constant (const signed word[120]) main::sintab2#0 = { fill( 120, 0) } Constant (const byte) main::i#0 = 0 -Constant (const string) print_str::str#1 = main::str -Constant (const string) print_str::str#2 = main::str1 +Constant (const byte*) print_str::str#1 = main::str +Constant (const byte*) print_str::str#2 = main::str1 Succesful SSA optimization Pass2ConstantIdentification Constant (const dword) div32u16u::dividend#0 = PI2_u4f28#0 Constant (const dword) div32u16u::dividend#1 = PI2_u4f28#0 Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const signed word[120]) sin16s_gen::sintab#1 = main::sintab1#0 +Constant (const signed word*) sin16s_gen::sintab#1 = main::sintab1#0 Constant (const word) sin16s_gen::wavelength#0 = main::wavelength#0 -Constant (const signed word[120]) sin16s_genb::sintab#1 = main::sintab2#0 +Constant (const signed word*) sin16s_genb::sintab#1 = main::sintab2#0 Constant (const word) sin16s_genb::wavelength#0 = main::wavelength#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const word) div32u16u::divisor#0 = sin16s_gen::wavelength#0 @@ -5124,8 +5124,8 @@ Inlining constant with var siblings (const dword) sin16s_gen::x#0 Inlining constant with var siblings (const dword) sin16s_gen::x#0 Inlining constant with var siblings (const word) sin16s_gen::i#0 Inlining constant with var siblings (const word) sin16s_gen::i#0 -Inlining constant with var siblings (const signed word[120]) sin16s_gen::sintab#1 -Inlining constant with var siblings (const signed word[120]) sin16s_gen::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen::sintab#1 Inlining constant with var siblings (const byte) sin16s::isUpper#0 Inlining constant with different constant siblings (const byte) sin16s::isUpper#0 Inlining constant with var siblings (const byte) sin16s::isUpper#1 @@ -5212,18 +5212,18 @@ Inlining constant with var siblings (const dword) sin16s_genb::x#0 Inlining constant with var siblings (const dword) sin16s_genb::x#0 Inlining constant with var siblings (const word) sin16s_genb::i#0 Inlining constant with var siblings (const word) sin16s_genb::i#0 -Inlining constant with var siblings (const signed word[120]) sin16s_genb::sintab#1 -Inlining constant with var siblings (const signed word[120]) sin16s_genb::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_genb::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_genb::sintab#1 Inlining constant with var siblings (const byte) sin16sb::isUpper#0 Inlining constant with different constant siblings (const byte) sin16sb::isUpper#0 Inlining constant with var siblings (const byte) sin16sb::isUpper#1 Inlining constant with different constant siblings (const byte) sin16sb::isUpper#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -5239,7 +5239,7 @@ Constant inlined sin16s_gen::wavelength#0 = (const word) main::wavelength#0 Constant inlined div32u16u::dividend#0 = (const dword) PI2_u4f28#0 Constant inlined sin16s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulu16_sel::v2#7 = (dword/signed dword) 65536/(byte/signed byte/word/signed word/dword/signed dword) 6 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined mulu16_sel::select#4 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mulu16_sel::select#5 = (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 @@ -5627,12 +5627,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [44] (byte*) print_char_cursor#46 ← phi( print_word/(byte*) print_char_cursor#43 print_word::@1/(byte*) print_char_cursor#12 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 ] ) [44] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#46 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 ] ) [45] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_byte::$0 ] ) - [46] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) + [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) [47] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::$2 ] ) - [49] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) + [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) [50] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -6789,8 +6789,8 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 - sintab2: .fill $f0, 0 + sintab1: .fill 2*$78, 0 + sintab2: .fill 2*$78, 0 } //SEG57 print_str print_str: { @@ -6921,7 +6921,7 @@ print_byte: { lsr lsr sta _0 - //SEG102 [46] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG102 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -6938,7 +6938,7 @@ print_byte: { lda #$f and b sta _2 - //SEG109 [49] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG109 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -8923,8 +8923,8 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 - sintab2: .fill $f0, 0 + sintab1: .fill 2*$78, 0 + sintab2: .fill 2*$78, 0 } //SEG57 print_str print_str: { @@ -9051,7 +9051,7 @@ print_byte: { lsr lsr lsr - //SEG102 [46] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG102 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG103 [47] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::b#2 ] ) @@ -9066,7 +9066,7 @@ print_byte: { //SEG108 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG109 [49] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG109 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG110 [50] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 ] ) @@ -10665,7 +10665,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) print_screen @@ -10980,8 +10980,8 @@ main: { rts str: .text " @" str1: .text " @" - sintab1: .fill $f0, 0 - sintab2: .fill $f0, 0 + sintab1: .fill 2*$78, 0 + sintab2: .fill 2*$78, 0 } //SEG57 print_str print_str: { @@ -11085,7 +11085,7 @@ print_byte: { lsr lsr lsr - //SEG102 [46] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG102 [46] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_byte::b#2 print_char_cursor#46 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG103 [47] call print_char [ print_char_cursor#12 print_byte::b#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::b#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::b#2 ] ) @@ -11097,7 +11097,7 @@ print_byte: { //SEG108 [48] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_byte::$2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG109 [49] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG109 [49] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#2 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 print_char::ch#2 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG110 [50] call print_char [ print_char_cursor#12 ] ( main:2::print_sword:17::print_word:37::print_byte:40 [ main::st1#2 main::st2#2 main::i#2 print_sword::w#3 print_char_cursor#12 ] main:2::print_sword:17::print_word:37::print_byte:42 [ main::st1#2 main::st2#2 main::i#2 print_char_cursor#12 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.sym index 90ccaf650..38edca6e0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen16b.sym @@ -185,7 +185,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (byte*) print_screen diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg index 5674dbe0b..c5677e4c5 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.cfg @@ -78,12 +78,12 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 to:@return print_byte: scope:[print_byte] from print_sbyte::@1 [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ) - [36] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) + [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) [37] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) - [39] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) + [39] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) [40] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log index b593bccc6..16f8db593 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.log @@ -3943,19 +3943,19 @@ Constant (const byte) mulu8_sel::select#3 = 0 Constant (const byte) mulu8_sel::select#4 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::wavelength#0 = 192 Constant (const signed byte[192]) main::sintab2#0 = { fill( 192, 0) } Constant (const byte[]) main::sintabref#0 = { 0, 4, 8, 12, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 56, 60, 64, 67, 71, 74, 78, 81, 84, 87, 90, 93, 96, 99, 101, 104, 106, 108, 110, 112, 114, 116, 118, 119, 121, 122, 123, 124, 125, 126, 126, 127, 127, 127, 128, 127, 127, 127, 126, 126, 125, 124, 123, 122, 121, 119, 118, 116, 114, 112, 110, 108, 106, 104, 101, 99, 96, 93, 90, 87, 84, 81, 78, 74, 71, 67, 64, 60, 56, 53, 49, 45, 41, 37, 33, 29, 25, 21, 17, 12, 8, 4, 0, 252, 248, 244, 239, 235, 231, 227, 223, 219, 215, 211, 207, 203, 200, 196, 192, 189, 185, 182, 178, 175, 172, 169, 166, 163, 160, 157, 155, 152, 150, 148, 146, 144, 142, 140, 138, 137, 135, 134, 133, 132, 131, 130, 130, 129, 129, 129, 129, 129, 129, 129, 130, 130, 131, 132, 133, 134, 135, 137, 138, 140, 142, 144, 146, 148, 150, 152, 155, 157, 160, 163, 166, 169, 172, 175, 178, 182, 185, 189, 192, 196, 200, 203, 207, 211, 215, 219, 223, 227, 231, 235, 239, 244, 248, 252 } Constant (const byte) main::i#0 = 0 -Constant (const string) print_str::str#1 = main::str -Constant (const string) print_str::str#2 = main::str1 +Constant (const byte*) print_str::str#1 = main::str +Constant (const byte*) print_str::str#2 = main::str1 Succesful SSA optimization Pass2ConstantIdentification Constant (const word) div16u::dividend#0 = PI2_u4f12#0 Constant (const byte) mulu8_sel::v2#2 = sin8s::DIV_6#0 Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const signed byte[192]) sin8s_gen::sintab#1 = main::sintab2#0 +Constant (const signed byte*) sin8s_gen::sintab#1 = main::sintab2#0 Constant (const word) sin8s_gen::wavelength#0 = main::wavelength#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::dividend#1 = div16u::dividend#0 @@ -4089,8 +4089,8 @@ Inlining constant with var siblings (const word) sin8s_gen::x#0 Inlining constant with var siblings (const word) sin8s_gen::x#0 Inlining constant with var siblings (const word) sin8s_gen::i#0 Inlining constant with var siblings (const word) sin8s_gen::i#0 -Inlining constant with var siblings (const signed byte[192]) sin8s_gen::sintab#1 -Inlining constant with var siblings (const signed byte[192]) sin8s_gen::sintab#1 +Inlining constant with var siblings (const signed byte*) sin8s_gen::sintab#1 +Inlining constant with var siblings (const signed byte*) sin8s_gen::sintab#1 Inlining constant with var siblings (const byte) sin8s::isUpper#0 Inlining constant with different constant siblings (const byte) sin8s::isUpper#0 Inlining constant with var siblings (const byte) sin8s::isUpper#1 @@ -4117,12 +4117,12 @@ Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -4133,7 +4133,7 @@ Inlining constant with var siblings (const byte) main::i#0 Constant inlined divr16u::rem#3 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined print_cls::$0 = (const byte*) print_line_cursor#0+(word/signed word/dword/signed dword) 1000 Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined sin8s::isUpper#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined sin8s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sin8s_gen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -4437,12 +4437,12 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 to:@return print_byte: scope:[print_byte] from print_sbyte::@1 [35] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ) - [36] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) + [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) [37] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) - [39] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) + [39] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) [40] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -5345,7 +5345,7 @@ print_byte: { lsr lsr sta _0 - //SEG78 [36] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG78 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -5362,7 +5362,7 @@ print_byte: { lda #$f and print_sbyte.b sta _2 - //SEG85 [39] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG85 [39] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -6551,7 +6551,7 @@ print_byte: { lsr lsr lsr - //SEG78 [36] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG78 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG79 [37] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) @@ -6566,7 +6566,7 @@ print_byte: { //SEG84 [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG85 [39] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG85 [39] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG86 [40] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 ] ) @@ -7534,7 +7534,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (void()) print_sbyte((signed byte) print_sbyte::b) @@ -7839,7 +7839,7 @@ print_byte: { lsr lsr lsr - //SEG78 [36] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG78 [36] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG79 [37] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) @@ -7851,7 +7851,7 @@ print_byte: { //SEG84 [38] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG85 [39] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG85 [39] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG86 [40] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:15::print_byte:33 [ main::i#2 print_char_cursor#10 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym index c02d9d98a..2bd41ae25 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8.sym @@ -144,7 +144,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (void()) print_sbyte((signed byte) print_sbyte::b) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.asm b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.asm index 5a99d79c8..297ab1f4a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.asm +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.asm @@ -73,7 +73,7 @@ main: { str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 - sintabw: .fill $180, 0 + sintabw: .fill 2*$c0, 0 } print_str: { .label str = 2 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.cfg index 3ea9666e0..1e8455428 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.cfg @@ -88,12 +88,12 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 to:@return print_byte: scope:[print_byte] from print_sbyte::@1 [43] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ) - [44] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) + [44] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) [45] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [46] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) - [47] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) + [47] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) [48] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.log index a3f550f80..b1242412c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.log @@ -4815,22 +4815,22 @@ Constant (const byte) mulu8_sel::select#3 = 0 Constant (const byte) mulu8_sel::select#4 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::wavelength#0 = 192 Constant (const signed byte[192]) main::sintabb#0 = { fill( 192, 0) } Constant (const signed word[192]) main::sintabw#0 = { fill( 192, 0) } Constant (const byte) main::i#0 = 0 -Constant (const string) print_str::str#1 = main::str -Constant (const string) print_str::str#2 = main::str1 +Constant (const byte*) print_str::str#1 = main::str +Constant (const byte*) print_str::str#2 = main::str1 Succesful SSA optimization Pass2ConstantIdentification Constant (const dword) div32u16u::dividend#0 = PI2_u4f28#0 Constant (const word) div16u::dividend#0 = PI2_u4f12#0 Constant (const byte) mulu8_sel::v2#2 = sin8s::DIV_6#0 Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const signed byte[192]) sin8s_gen::sintab#1 = main::sintabb#0 +Constant (const signed byte*) sin8s_gen::sintab#1 = main::sintabb#0 Constant (const word) sin8s_gen::wavelength#0 = main::wavelength#0 -Constant (const signed word[192]) sin16s_gen::sintab#1 = main::sintabw#0 +Constant (const signed word*) sin16s_gen::sintab#1 = main::sintabw#0 Constant (const word) sin16s_gen::wavelength#0 = main::wavelength#0 Succesful SSA optimization Pass2ConstantIdentification Constant (const word) divr16u::dividend#1 = div16u::dividend#0 @@ -5155,14 +5155,14 @@ Inlining constant with var siblings (const dword) sin16s_gen::x#0 Inlining constant with var siblings (const dword) sin16s_gen::x#0 Inlining constant with var siblings (const word) sin16s_gen::i#0 Inlining constant with var siblings (const word) sin16s_gen::i#0 -Inlining constant with var siblings (const signed word[192]) sin16s_gen::sintab#1 -Inlining constant with var siblings (const signed word[192]) sin16s_gen::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen::sintab#1 +Inlining constant with var siblings (const signed word*) sin16s_gen::sintab#1 Inlining constant with var siblings (const word) sin8s_gen::x#0 Inlining constant with var siblings (const word) sin8s_gen::x#0 Inlining constant with var siblings (const word) sin8s_gen::i#0 Inlining constant with var siblings (const word) sin8s_gen::i#0 -Inlining constant with var siblings (const signed byte[192]) sin8s_gen::sintab#1 -Inlining constant with var siblings (const signed byte[192]) sin8s_gen::sintab#1 +Inlining constant with var siblings (const signed byte*) sin8s_gen::sintab#1 +Inlining constant with var siblings (const signed byte*) sin8s_gen::sintab#1 Inlining constant with var siblings (const byte) sin16s::isUpper#0 Inlining constant with different constant siblings (const byte) sin16s::isUpper#0 Inlining constant with var siblings (const byte) sin16s::isUpper#1 @@ -5215,12 +5215,12 @@ Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -5235,7 +5235,7 @@ Constant inlined divr16u::rem#4 = (byte/signed byte/word/signed word/dword/signe Constant inlined sin16s_gen::wavelength#0 = (const word) main::wavelength#0 Constant inlined div32u16u::dividend#0 = (const dword) PI2_u4f28#0 Constant inlined sin16s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined sin8s::isUpper#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined sin8s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sin8s_gen::x#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 @@ -5612,12 +5612,12 @@ print_sbyte::@return: scope:[print_sbyte] from print_sbyte::@1 to:@return print_byte: scope:[print_byte] from print_sbyte::@1 [43] (byte~) print_byte::$0 ← (byte)(signed byte) print_sbyte::b#3 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_byte::$0 ] ) - [44] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) + [44] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) [45] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [46] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) - [47] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) + [47] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) [48] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -6947,7 +6947,7 @@ main: { str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 - sintabw: .fill $180, 0 + sintabw: .fill 2*$c0, 0 } //SEG57 print_str print_str: { @@ -7045,7 +7045,7 @@ print_byte: { lsr lsr sta _0 - //SEG88 [44] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG88 [44] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -7062,7 +7062,7 @@ print_byte: { lda #$f and print_sbyte.b sta _2 - //SEG95 [47] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG95 [47] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -9180,7 +9180,7 @@ main: { str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 - sintabw: .fill $180, 0 + sintabw: .fill 2*$c0, 0 } //SEG57 print_str print_str: { @@ -9274,7 +9274,7 @@ print_byte: { lsr lsr lsr - //SEG88 [44] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG88 [44] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG89 [45] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) @@ -9289,7 +9289,7 @@ print_byte: { //SEG94 [46] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG95 [47] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG95 [47] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG96 [48] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 ] ) @@ -11047,7 +11047,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (void()) print_sbyte((signed byte) print_sbyte::b) @@ -11389,7 +11389,7 @@ main: { str: .text " @" str1: .text " @" sintabb: .fill $c0, 0 - sintabw: .fill $180, 0 + sintabw: .fill 2*$c0, 0 } //SEG57 print_str print_str: { @@ -11466,7 +11466,7 @@ print_byte: { lsr lsr lsr - //SEG88 [44] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG88 [44] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_sbyte::b#3 print_char_cursor#37 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG89 [45] call print_char [ print_char_cursor#10 print_sbyte::b#3 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_sbyte::b#3 ] ) @@ -11478,7 +11478,7 @@ print_byte: { //SEG94 [46] (byte~) print_byte::$2 ← (byte)(signed byte) print_sbyte::b#3 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#10 print_byte::$2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and print_sbyte.b - //SEG95 [47] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG95 [47] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#10 print_char::ch#2 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG96 [48] call print_char [ print_char_cursor#10 ] ( main:2::print_sbyte:23::print_byte:41 [ main::i#2 print_char_cursor#10 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.sym index aab815749..c5b589ea4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgen8b.sym @@ -229,7 +229,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (const byte*) print_line_cursor#0 print_line_cursor = ((byte*))(word/signed word/dword/signed dword) 1024 (void()) print_sbyte((signed byte) print_sbyte::b) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.cfg b/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.cfg index 500326d02..a5d80c503 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.cfg @@ -145,12 +145,12 @@ print_byte: scope:[print_byte] from print_sbyte::@1 print_word print_word::@1 s [74] (byte*) print_char_cursor#97 ← phi( print_sbyte::@1/(byte*) print_char_cursor#94 print_word/(byte*) print_char_cursor#96 print_word::@1/(byte*) print_char_cursor#17 sin8u_table::@10/(byte*) print_char_cursor#2 sin8u_table::@12/(byte*) print_char_cursor#2 sin8u_table::@23/(byte*) print_char_cursor#2 sin8u_table::@6/(byte*) print_char_cursor#2 sin8u_table::@8/(byte*) print_char_cursor#2 ) [ print_byte::b#8 print_char_cursor#97 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] ) [74] (byte) print_byte::b#8 ← phi( print_sbyte::@1/(byte~) print_byte::b#10 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@10/(const byte) sin8u_table::amplitude#0 sin8u_table::@12/(const byte) sin8u_table::mid#0 sin8u_table::@23/(byte) print_byte::b#7 sin8u_table::@6/(const byte) sin8u_table::min#0 sin8u_table::@8/(const byte) sin8u_table::max#0 ) [ print_byte::b#8 print_char_cursor#97 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] ) [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#8 print_char_cursor#97 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] ) - [76] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) + [76] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) [77] call print_char [ print_char_cursor#17 print_byte::b#8 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] ) - [79] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) + [79] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) [80] call print_char [ print_char_cursor#17 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.log b/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.log index 571b0ddfb..d22eb8352 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.log @@ -5137,27 +5137,27 @@ Constant (const byte) mulu8_sel::select#4 = 0 Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word) main::tabsize#0 = 20 Constant (const byte[20]) main::sintab#0 = { fill( 20, 0) } Constant (const byte) sin8u_table::min#0 = 10 Constant (const byte) sin8u_table::max#0 = 255 -Constant (const string) print_str::str#1 = sin8u_table::str -Constant (const string) print_str::str#2 = sin8u_table::str1 -Constant (const string) print_str::str#3 = sin8u_table::str2 -Constant (const string) print_str::str#4 = sin8u_table::str3 -Constant (const string) print_str::str#5 = sin8u_table::str4 +Constant (const byte*) print_str::str#1 = sin8u_table::str +Constant (const byte*) print_str::str#2 = sin8u_table::str1 +Constant (const byte*) print_str::str#3 = sin8u_table::str2 +Constant (const byte*) print_str::str#4 = sin8u_table::str3 +Constant (const byte*) print_str::str#5 = sin8u_table::str4 Constant (const word) sin8u_table::x#0 = 0 Constant (const word) sin8u_table::i#0 = 0 -Constant (const string) print_str::str#6 = sin8u_table::str5 -Constant (const string) print_str::str#7 = sin8u_table::str6 -Constant (const string) print_str::str#8 = sin8u_table::str7 -Constant (const string) print_str::str#9 = sin8u_table::str8 +Constant (const byte*) print_str::str#6 = sin8u_table::str5 +Constant (const byte*) print_str::str#7 = sin8u_table::str6 +Constant (const byte*) print_str::str#8 = sin8u_table::str7 +Constant (const byte*) print_str::str#9 = sin8u_table::str8 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte) mulu8_sel::v2#2 = sin8s::DIV_6#0 Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 -Constant (const byte[20]) sin8u_table::sintab#0 = main::sintab#0 +Constant (const byte*) sin8u_table::sintab#0 = main::sintab#0 Constant (const word) sin8u_table::tabsize#0 = main::tabsize#0 Constant (const byte) sin8u_table::amplitude#0 = sin8u_table::max#0-sin8u_table::min#0 Constant (const word) sin8u_table::$1 = ((word))sin8u_table::min#0 @@ -5357,33 +5357,33 @@ Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 Inlining constant with var siblings (const byte) mulu8_sel::v2#2 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 Inlining constant with var siblings (const byte) print_byte::b#3 Inlining constant with var siblings (const byte) print_byte::b#3 Inlining constant with var siblings (const byte) print_byte::b#3 @@ -5414,8 +5414,8 @@ Inlining constant with var siblings (const word) sin8u_table::x#0 Inlining constant with var siblings (const word) sin8u_table::x#0 Inlining constant with var siblings (const word) sin8u_table::i#0 Inlining constant with var siblings (const word) sin8u_table::i#0 -Inlining constant with var siblings (const byte[20]) sin8u_table::sintab#0 -Inlining constant with var siblings (const byte[20]) sin8u_table::sintab#0 +Inlining constant with var siblings (const byte*) sin8u_table::sintab#0 +Inlining constant with var siblings (const byte*) sin8u_table::sintab#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 @@ -5424,7 +5424,7 @@ Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sin8u_table::i#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sin8u_table::sintab#0 = (const byte[20]) main::sintab#0 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined sin8s::isUpper#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined sin8s::isUpper#0 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined sin8u_table::$4 = (const word) sin8u_table::sum#0>>(byte/signed byte/word/signed word/dword/signed dword) 1+(byte/signed byte/word/signed word/dword/signed dword) 1 @@ -5889,12 +5889,12 @@ print_byte: scope:[print_byte] from print_sbyte::@1 print_word print_word::@1 s [74] (byte*) print_char_cursor#97 ← phi( print_sbyte::@1/(byte*) print_char_cursor#94 print_word/(byte*) print_char_cursor#96 print_word::@1/(byte*) print_char_cursor#17 sin8u_table::@10/(byte*) print_char_cursor#2 sin8u_table::@12/(byte*) print_char_cursor#2 sin8u_table::@23/(byte*) print_char_cursor#2 sin8u_table::@6/(byte*) print_char_cursor#2 sin8u_table::@8/(byte*) print_char_cursor#2 ) [ print_byte::b#8 print_char_cursor#97 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] ) [74] (byte) print_byte::b#8 ← phi( print_sbyte::@1/(byte~) print_byte::b#10 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 sin8u_table::@10/(const byte) sin8u_table::amplitude#0 sin8u_table::@12/(const byte) sin8u_table::mid#0 sin8u_table::@23/(byte) print_byte::b#7 sin8u_table::@6/(const byte) sin8u_table::min#0 sin8u_table::@8/(const byte) sin8u_table::max#0 ) [ print_byte::b#8 print_char_cursor#97 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 ] ) [75] (byte~) print_byte::$0 ← (byte) print_byte::b#8 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#8 print_char_cursor#97 print_byte::$0 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_byte::$0 ] ) - [76] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) + [76] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) [77] call print_char [ print_char_cursor#17 print_byte::b#8 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] ) - [79] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) + [79] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) [80] call print_char [ print_char_cursor#17 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -7253,7 +7253,7 @@ print_byte: { lsr lsr sta _0 - //SEG172 [76] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG172 [76] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -7270,7 +7270,7 @@ print_byte: { lda #$f and b sta _2 - //SEG179 [79] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG179 [79] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -8931,7 +8931,7 @@ print_byte: { lsr lsr lsr - //SEG172 [76] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG172 [76] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG173 [77] call print_char [ print_char_cursor#17 print_byte::b#8 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] ) @@ -8946,7 +8946,7 @@ print_byte: { //SEG178 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG179 [79] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG179 [79] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG180 [80] call print_char [ print_char_cursor#17 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] ) @@ -10153,7 +10153,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:8 8.55263157894737 (byte*) print_line_cursor#12 print_line_cursor zp ZP_WORD:8 204.0 @@ -10748,7 +10748,7 @@ print_byte: { lsr lsr lsr - //SEG172 [76] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG172 [76] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_byte::b#8 print_char_cursor#97 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG173 [77] call print_char [ print_char_cursor#17 print_byte::b#8 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#8 ] ) @@ -10760,7 +10760,7 @@ print_byte: { //SEG178 [78] (byte~) print_byte::$2 ← (byte) print_byte::b#8 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG179 [79] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG179 [79] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG180 [80] call print_char [ print_char_cursor#17 ] ( main:2::sin8u_table:7::print_byte:19 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:23 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:27 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:31 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_byte:62 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:103 [ sin8u_table::step#0 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:103 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_word::w#3 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:15::print_byte:105 [ sin8u_table::step#0 print_char_cursor#17 ] main:2::sin8u_table:7::print_word:50::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx#0 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sword:58::print_word:99::print_byte:105 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] main:2::sin8u_table:7::print_sbyte:54::print_byte:113 [ sin8u_table::step#0 sin8u_table::x#10 sin8u_table::i#10 sin8u_table::sintab#1 sin8u_table::sinx_sc#0 sin8u_table::sinx_tr#0 print_line_cursor#1 print_char_cursor#17 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.sym b/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.sym index fa5b9bde4..c5359d0d2 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/sinusgenscale8.sym @@ -158,7 +158,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:2 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:2 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:8 8.55263157894737 (byte*) print_line_cursor#12 print_line_cursor zp ZP_WORD:8 204.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.cfg index 2a3549a0e..b7911934d 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.cfg @@ -361,12 +361,12 @@ print_byte: scope:[print_byte] from printu::@1 printu::@3 [184] (byte*) print_char_cursor#94 ← phi( printu::@1/(byte*) print_char_cursor#55 printu::@3/(byte*) print_char_cursor#2 ) [ print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] ) [184] (byte) print_byte::b#2 ← phi( printu::@1/(byte) print_byte::b#0 printu::@3/(byte) print_byte::b#1 ) [ print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] ) [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ) - [186] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) + [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) [187] call print_char [ print_char_cursor#55 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) - [189] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) + [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) [190] call print_char [ print_char_cursor#55 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log index 6e5a62ce5..e893f02d6 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.log @@ -3402,74 +3402,74 @@ Simple Condition (bool~) main::$64 if((byte) main::a#10!=(byte) main::a#10) goto Simple Condition (bool~) main::$68 if((byte) main::i#1!=rangelast(0,4)) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const byte) main::a#0 = 7 Constant (const byte) main::i#0 = 0 Constant (const byte[5]) main::cs#0 = { 7, 199, 55, 151, 103 } Constant (const byte) main::r#0 = '-' -Constant (const string) printu::op#0 = main::op +Constant (const byte[]) printu::op#0 = main::op Constant (const byte) main::r#1 = '-' Constant (const byte) main::r#2 = '+' -Constant (const string) printu::op#1 = main::op1 +Constant (const byte[]) printu::op#1 = main::op1 Constant (const byte) printu::b#1 = 55 Constant (const byte) main::r#3 = '-' Constant (const byte) main::r#4 = '+' -Constant (const string) printu::op#2 = main::op2 +Constant (const byte[]) printu::op#2 = main::op2 Constant (const byte) main::r#5 = '-' Constant (const byte) main::r#6 = '+' -Constant (const string) printu::op#3 = main::op3 +Constant (const byte[]) printu::op#3 = main::op3 Constant (const byte) main::r#7 = '-' Constant (const byte) main::r#8 = '+' -Constant (const string) printu::op#4 = main::op4 +Constant (const byte[]) printu::op#4 = main::op4 Constant (const byte) main::r#9 = '-' Constant (const byte) main::r#10 = '+' -Constant (const string) printu::op#5 = main::op5 +Constant (const byte[]) printu::op#5 = main::op5 Constant (const byte) printu::b#5 = 55 Constant (const byte) main::r#11 = '-' Constant (const byte) main::r#12 = '+' -Constant (const string) printu::op#6 = main::op6 +Constant (const byte[]) printu::op#6 = main::op6 Constant (const byte) main::r#13 = '-' Constant (const byte) main::r#14 = '+' -Constant (const string) printu::op#7 = main::op7 +Constant (const byte[]) printu::op#7 = main::op7 Constant (const byte) main::r#15 = '-' Constant (const byte) main::r#16 = '+' -Constant (const string) printu::op#8 = main::op8 +Constant (const byte[]) printu::op#8 = main::op8 Constant (const byte) main::r#17 = '-' Constant (const byte) main::r#18 = '+' -Constant (const string) printu::op#9 = main::op9 +Constant (const byte[]) printu::op#9 = main::op9 Constant (const byte) printu::b#9 = 55 Constant (const byte) main::r#19 = '-' Constant (const byte) main::r#20 = '+' -Constant (const string) printu::op#10 = main::op10 +Constant (const byte[]) printu::op#10 = main::op10 Constant (const byte) main::r#21 = '-' Constant (const byte) main::r#22 = '+' -Constant (const string) printu::op#11 = main::op11 +Constant (const byte[]) printu::op#11 = main::op11 Constant (const byte) main::r#23 = '-' Constant (const byte) main::r#24 = '+' -Constant (const string) printu::op#12 = main::op12 +Constant (const byte[]) printu::op#12 = main::op12 Constant (const byte) main::r#25 = '-' Constant (const byte) main::r#26 = '+' -Constant (const string) printu::op#13 = main::op13 +Constant (const byte[]) printu::op#13 = main::op13 Constant (const byte) printu::b#13 = 55 Constant (const byte) main::r#27 = '-' Constant (const byte) main::r#28 = '+' -Constant (const string) printu::op#14 = main::op14 +Constant (const byte[]) printu::op#14 = main::op14 Constant (const byte) main::r#29 = '-' Constant (const byte) main::r#30 = '+' -Constant (const string) printu::op#15 = main::op15 +Constant (const byte[]) printu::op#15 = main::op15 Constant (const byte) main::r#31 = '-' Constant (const byte) main::r#32 = '+' -Constant (const string) printu::op#16 = main::op16 +Constant (const byte[]) printu::op#16 = main::op16 Constant (const byte) main::r#33 = '-' Constant (const byte) main::r#34 = '+' -Constant (const string) printu::op#17 = main::op17 +Constant (const byte[]) printu::op#17 = main::op17 Constant (const byte) printu::b#17 = 55 Constant (const byte) main::r#35 = '-' Constant (const byte) main::r#36 = '+' -Constant (const string) printu::op#18 = main::op18 +Constant (const byte[]) printu::op#18 = main::op18 Constant (const byte) main::r#37 = '-' Constant (const byte) main::r#38 = '+' -Constant (const string) printu::op#19 = main::op19 +Constant (const byte[]) printu::op#19 = main::op19 Constant (const byte) main::r#39 = '+' Constant (const byte) print_char::ch#2 = ' ' Constant (const byte) print_char::ch#3 = ' ' @@ -6064,8 +6064,8 @@ Inlining constant with different constant siblings (const byte) main::r#39 Inlining constant with different constant siblings (const byte) main::r#39 Inlining constant with different constant siblings (const byte) main::r#39 Inlining constant with different constant siblings (const byte) main::r#39 -Inlining constant with var siblings (const string) printu::op#0 -Inlining constant with var siblings (const string) printu::op#1 +Inlining constant with var siblings (const byte[]) printu::op#0 +Inlining constant with var siblings (const byte[]) printu::op#1 Inlining constant with var siblings (const byte) printu::b#1 Inlining constant with var siblings (const byte) printu::b#1 Inlining constant with var siblings (const byte) printu::b#1 @@ -6082,10 +6082,10 @@ Inlining constant with var siblings (const byte) printu::b#1 Inlining constant with var siblings (const byte) printu::b#1 Inlining constant with var siblings (const byte) printu::b#1 Inlining constant with var siblings (const byte) printu::b#1 -Inlining constant with var siblings (const string) printu::op#2 -Inlining constant with var siblings (const string) printu::op#3 -Inlining constant with var siblings (const string) printu::op#4 -Inlining constant with var siblings (const string) printu::op#5 +Inlining constant with var siblings (const byte[]) printu::op#2 +Inlining constant with var siblings (const byte[]) printu::op#3 +Inlining constant with var siblings (const byte[]) printu::op#4 +Inlining constant with var siblings (const byte[]) printu::op#5 Inlining constant with var siblings (const byte) printu::b#5 Inlining constant with var siblings (const byte) printu::b#5 Inlining constant with var siblings (const byte) printu::b#5 @@ -6102,10 +6102,10 @@ Inlining constant with var siblings (const byte) printu::b#5 Inlining constant with var siblings (const byte) printu::b#5 Inlining constant with var siblings (const byte) printu::b#5 Inlining constant with var siblings (const byte) printu::b#5 -Inlining constant with var siblings (const string) printu::op#6 -Inlining constant with var siblings (const string) printu::op#7 -Inlining constant with var siblings (const string) printu::op#8 -Inlining constant with var siblings (const string) printu::op#9 +Inlining constant with var siblings (const byte[]) printu::op#6 +Inlining constant with var siblings (const byte[]) printu::op#7 +Inlining constant with var siblings (const byte[]) printu::op#8 +Inlining constant with var siblings (const byte[]) printu::op#9 Inlining constant with var siblings (const byte) printu::b#9 Inlining constant with var siblings (const byte) printu::b#9 Inlining constant with var siblings (const byte) printu::b#9 @@ -6122,10 +6122,10 @@ Inlining constant with var siblings (const byte) printu::b#9 Inlining constant with var siblings (const byte) printu::b#9 Inlining constant with var siblings (const byte) printu::b#9 Inlining constant with var siblings (const byte) printu::b#9 -Inlining constant with var siblings (const string) printu::op#10 -Inlining constant with var siblings (const string) printu::op#11 -Inlining constant with var siblings (const string) printu::op#12 -Inlining constant with var siblings (const string) printu::op#13 +Inlining constant with var siblings (const byte[]) printu::op#10 +Inlining constant with var siblings (const byte[]) printu::op#11 +Inlining constant with var siblings (const byte[]) printu::op#12 +Inlining constant with var siblings (const byte[]) printu::op#13 Inlining constant with var siblings (const byte) printu::b#13 Inlining constant with var siblings (const byte) printu::b#13 Inlining constant with var siblings (const byte) printu::b#13 @@ -6142,10 +6142,10 @@ Inlining constant with var siblings (const byte) printu::b#13 Inlining constant with var siblings (const byte) printu::b#13 Inlining constant with var siblings (const byte) printu::b#13 Inlining constant with var siblings (const byte) printu::b#13 -Inlining constant with var siblings (const string) printu::op#14 -Inlining constant with var siblings (const string) printu::op#15 -Inlining constant with var siblings (const string) printu::op#16 -Inlining constant with var siblings (const string) printu::op#17 +Inlining constant with var siblings (const byte[]) printu::op#14 +Inlining constant with var siblings (const byte[]) printu::op#15 +Inlining constant with var siblings (const byte[]) printu::op#16 +Inlining constant with var siblings (const byte[]) printu::op#17 Inlining constant with var siblings (const byte) printu::b#17 Inlining constant with var siblings (const byte) printu::b#17 Inlining constant with var siblings (const byte) printu::b#17 @@ -6162,8 +6162,8 @@ Inlining constant with var siblings (const byte) printu::b#17 Inlining constant with var siblings (const byte) printu::b#17 Inlining constant with var siblings (const byte) printu::b#17 Inlining constant with var siblings (const byte) printu::b#17 -Inlining constant with var siblings (const string) printu::op#18 -Inlining constant with var siblings (const string) printu::op#19 +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*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 Inlining constant with var siblings (const byte*) print_line_cursor#0 @@ -6176,7 +6176,7 @@ Constant inlined printu::op#6 = (const string) main::op6 Constant inlined main::r#39 = (byte) '+' Constant inlined printu::op#7 = (const string) main::op7 Constant inlined printu::op#4 = (const string) main::op4 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined printu::op#5 = (const string) main::op5 Constant inlined printu::op#2 = (const string) main::op2 Constant inlined printu::op#3 = (const string) main::op3 @@ -6875,12 +6875,12 @@ print_byte: scope:[print_byte] from printu::@1 printu::@3 [184] (byte*) print_char_cursor#94 ← phi( printu::@1/(byte*) print_char_cursor#55 printu::@3/(byte*) print_char_cursor#2 ) [ print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] ) [184] (byte) print_byte::b#2 ← phi( printu::@1/(byte) print_byte::b#0 printu::@3/(byte) print_byte::b#1 ) [ print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 ] ) [185] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#94 print_byte::b#2 print_byte::$0 ] ) - [186] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) + [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) [187] call print_char [ print_char_cursor#55 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) - [189] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) + [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) [190] call print_char [ print_char_cursor#55 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -8610,7 +8610,7 @@ print_byte: { lsr lsr sta _0 - //SEG485 [186] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG485 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -8627,7 +8627,7 @@ print_byte: { lda #$f and b sta _2 - //SEG492 [189] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG492 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -10154,7 +10154,7 @@ print_byte: { lsr lsr lsr - //SEG485 [186] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG485 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG486 [187] call print_char [ print_char_cursor#55 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] ) @@ -10169,7 +10169,7 @@ print_byte: { //SEG491 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG492 [189] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG492 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG493 [190] call print_char [ print_char_cursor#55 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] ) @@ -10698,7 +10698,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:4 3.2265625 (byte*) print_line_cursor#13 print_line_cursor zp ZP_WORD:4 204.0 @@ -11803,7 +11803,7 @@ print_byte: { lsr lsr lsr - //SEG485 [186] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG485 [186] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char::ch#0 print_char_cursor#94 print_byte::b#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG486 [187] call print_char [ print_char_cursor#55 print_byte::b#2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::b#2 ] ) @@ -11815,7 +11815,7 @@ print_byte: { //SEG491 [188] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#55 print_byte::$2 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG492 [189] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG492 [189] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#55 print_char::ch#1 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG493 [190] call print_char [ print_char_cursor#55 ] ( main:2::printu:14::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:170 [ main::a#10 main::i#10 print_line_cursor#1 printu::op#20 printu::b#20 printu::res#20 print_char_cursor#55 ] main:2::printu:14::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:20::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:27::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:34::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#27 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:44::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:50::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:57::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:64::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:74::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:80::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:87::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:94::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:104::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:110::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:117::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:124::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 main::b#0 printu::res#20 print_char_cursor#55 ] main:2::printu:134::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:140::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:147::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] main:2::printu:154::print_byte:174 [ main::a#10 main::i#10 print_line_cursor#1 printu::res#20 print_char_cursor#55 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym index 92f25bcaa..867d93eb0 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-comparisons.sym @@ -157,7 +157,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:4 3.2265625 (byte*) print_line_cursor#13 print_line_cursor zp ZP_WORD:4 204.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-division.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-division.cfg index c884c1eab..787c36cea 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-division.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-division.cfg @@ -132,12 +132,12 @@ print_byte: scope:[print_byte] from print_sbyte::@1 print_word print_word::@1 t [64] (byte*) print_char_cursor#133 ← phi( print_sbyte::@1/(byte*) print_char_cursor#130 print_word/(byte*) print_char_cursor#132 print_word::@1/(byte*) print_char_cursor#17 test_8u::@3/(byte*) print_char_cursor#135 test_8u::@5/(byte*) print_char_cursor#126 test_8u::@7/(byte*) print_char_cursor#126 test_8u::@9/(byte*) print_char_cursor#126 ) [ print_byte::b#7 print_char_cursor#133 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] ) [64] (byte) print_byte::b#7 ← phi( print_sbyte::@1/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@3/(byte) print_byte::b#3 test_8u::@5/(byte) print_byte::b#4 test_8u::@7/(byte) print_byte::b#5 test_8u::@9/(byte) print_byte::b#6 ) [ print_byte::b#7 print_char_cursor#133 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] ) [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#133 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] ) - [66] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) + [66] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) [67] call print_char [ print_char_cursor#17 print_byte::b#7 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] ) - [69] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) + [69] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) [70] call print_char [ print_char_cursor#17 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-division.log b/src/test/java/dk/camelot64/kickc/test/ref/test-division.log index 3d6de27fc..dec760a80 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-division.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-division.log @@ -5163,7 +5163,7 @@ Succesful SSA optimization Pass2ConditionalAndOrRewriting Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const byte) rem8u#0 = 0 Constant (const byte) divr8u::rem#0 = 0 Constant (const byte) divr8u::quotient#0 = 0 @@ -5187,23 +5187,23 @@ Constant (const signed word) divr16s::rem#0 = 0 Constant (const byte[]) test_8u::dividends#0 = { 255, 255, 255, 255, 255, 255 } Constant (const byte[]) test_8u::divisors#0 = { 5, 7, 11, 13, 17, 19 } Constant (const byte) test_8u::i#0 = 0 -Constant (const string) print_str::str#1 = test_8u::str -Constant (const string) print_str::str#2 = test_8u::str1 -Constant (const string) print_str::str#3 = test_8u::str2 +Constant (const byte*) print_str::str#1 = test_8u::str +Constant (const byte*) print_str::str#2 = test_8u::str1 +Constant (const byte*) print_str::str#3 = test_8u::str2 Constant (const word[]) test_16u::dividends#0 = { 65535, 65535, 65535, 65535, 65535, 65535 } Constant (const word[]) test_16u::divisors#0 = { 5, 7, 11, 13, 17, 19 } Constant (const byte) test_16u::i#0 = 0 -Constant (const string) print_str::str#4 = test_16u::str -Constant (const string) print_str::str#5 = test_16u::str1 -Constant (const string) print_str::str#6 = test_16u::str2 +Constant (const byte*) print_str::str#4 = test_16u::str +Constant (const byte*) print_str::str#5 = test_16u::str1 +Constant (const byte*) print_str::str#6 = test_16u::str2 Constant (const signed byte/signed word/signed dword) test_8s::$0 = -127 Constant (const signed byte/signed word/signed dword) test_8s::$1 = -127 Constant (const signed byte/signed word/signed dword) test_8s::$2 = -11 Constant (const signed byte/signed word/signed dword) test_8s::$3 = -13 Constant (const byte) test_8s::i#0 = 0 -Constant (const string) print_str::str#7 = test_8s::str -Constant (const string) print_str::str#8 = test_8s::str1 -Constant (const string) print_str::str#9 = test_8s::str2 +Constant (const byte*) print_str::str#7 = test_8s::str +Constant (const byte*) print_str::str#8 = test_8s::str1 +Constant (const byte*) print_str::str#9 = test_8s::str2 Constant (const signed word/signed dword) test_16s::$0 = -32767 Constant (const signed word/signed dword) test_16s::$1 = -32767 Constant (const signed word/signed dword) test_16s::$2 = -32767 @@ -5211,9 +5211,9 @@ Constant (const signed byte/signed word/signed dword) test_16s::$3 = -7 Constant (const signed byte/signed word/signed dword) test_16s::$4 = -13 Constant (const signed byte/signed word/signed dword) test_16s::$5 = -17 Constant (const byte) test_16s::i#0 = 0 -Constant (const string) print_str::str#10 = test_16s::str -Constant (const string) print_str::str#11 = test_16s::str1 -Constant (const string) print_str::str#12 = test_16s::str2 +Constant (const byte*) print_str::str#10 = test_16s::str +Constant (const byte*) print_str::str#11 = test_16s::str1 +Constant (const byte*) print_str::str#12 = test_16s::str2 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 @@ -5436,42 +5436,42 @@ Not aliassing across scopes: print_sword::w#2 test_16s::divisor#0 Not aliassing across scopes: print_sword::w#3 test_16s::res#0 Not aliassing across scopes: print_sword::w#4 rem16s#11 OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#11 -Inlining constant with var siblings (const string) print_str::str#11 -Inlining constant with var siblings (const string) print_str::str#11 -Inlining constant with var siblings (const string) print_str::str#12 -Inlining constant with var siblings (const string) print_str::str#12 -Inlining constant with var siblings (const string) print_str::str#12 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#11 +Inlining constant with var siblings (const byte*) print_str::str#11 +Inlining constant with var siblings (const byte*) print_str::str#11 +Inlining constant with var siblings (const byte*) print_str::str#12 +Inlining constant with var siblings (const byte*) print_str::str#12 +Inlining constant with var siblings (const byte*) print_str::str#12 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -5544,7 +5544,7 @@ Constant inlined divr16u::i#0 = (byte/signed byte/word/signed word/dword/signed 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 string) 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 @@ -6001,12 +6001,12 @@ print_byte: scope:[print_byte] from print_sbyte::@1 print_word print_word::@1 t [64] (byte*) print_char_cursor#133 ← phi( print_sbyte::@1/(byte*) print_char_cursor#130 print_word/(byte*) print_char_cursor#132 print_word::@1/(byte*) print_char_cursor#17 test_8u::@3/(byte*) print_char_cursor#135 test_8u::@5/(byte*) print_char_cursor#126 test_8u::@7/(byte*) print_char_cursor#126 test_8u::@9/(byte*) print_char_cursor#126 ) [ print_byte::b#7 print_char_cursor#133 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] ) [64] (byte) print_byte::b#7 ← phi( print_sbyte::@1/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 test_8u::@3/(byte) print_byte::b#3 test_8u::@5/(byte) print_byte::b#4 test_8u::@7/(byte) print_byte::b#5 test_8u::@9/(byte) print_byte::b#6 ) [ print_byte::b#7 print_char_cursor#133 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 ] ) [65] (byte~) print_byte::$0 ← (byte) print_byte::b#7 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#7 print_char_cursor#133 print_byte::$0 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_byte::$0 ] ) - [66] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) + [66] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) [67] call print_char [ print_char_cursor#17 print_byte::b#7 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] ) - [69] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) + [69] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) [70] call print_char [ print_char_cursor#17 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -7575,7 +7575,7 @@ print_byte: { lsr lsr sta _0 - //SEG138 [66] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG138 [66] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -7592,7 +7592,7 @@ print_byte: { lda #$f and b sta _2 - //SEG145 [69] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG145 [69] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -9764,7 +9764,7 @@ print_byte: { lsr lsr lsr - //SEG138 [66] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG138 [66] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG139 [67] call print_char [ print_char_cursor#17 print_byte::b#7 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] ) @@ -9779,7 +9779,7 @@ print_byte: { //SEG144 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG145 [69] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG145 [69] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG146 [70] call print_char [ print_char_cursor#17 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 ] ) @@ -11608,7 +11608,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.9099999999999993 (byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:3 204.0 @@ -12116,7 +12116,7 @@ print_byte: { lsr lsr lsr - //SEG138 [66] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG138 [66] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_byte::b#7 print_char_cursor#133 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG139 [67] call print_char [ print_char_cursor#17 print_byte::b#7 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::b#7 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::b#7 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::b#7 ] ) @@ -12128,7 +12128,7 @@ print_byte: { //SEG144 [68] (byte~) print_byte::$2 ← (byte) print_byte::b#7 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_byte::$2 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_byte::$2 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuz1_band_vbuc1 lda #$f and b - //SEG145 [69] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG145 [69] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 print_char::ch#3 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 print_char::ch#3 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG146 [70] call print_char [ print_char_cursor#17 ] ( main:2::test_16s:13::print_sword:26::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:60 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:60 [ test_16s::i#10 print_line_cursor#1 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:60 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:60 [ print_line_cursor#1 test_16u::i#10 print_word::w#5 print_char_cursor#17 ] main:2::test_16s:13::print_sword:26::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::divisor#0 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:30::print_word:56::print_byte:62 [ test_16s::i#10 test_16s::res#0 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:34::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 rem16s#11 print_char_cursor#17 ] main:2::test_16s:13::print_sword:38::print_word:56::print_byte:62 [ test_16s::i#10 print_line_cursor#1 print_char_cursor#17 ] main:2::test_16u:9::print_word:227::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::divisor#0 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:231::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 test_16u::res#0 print_char_cursor#17 ] main:2::test_16u:9::print_word:235::print_byte:62 [ print_line_cursor#1 rem16u#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_16u:9::print_word:239::print_byte:62 [ print_line_cursor#1 test_16u::i#10 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:142::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::divisor#0 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:146::print_byte:167 [ print_line_cursor#1 test_8s::i#10 test_8s::res#0 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:150::print_byte:167 [ print_line_cursor#1 test_8s::i#10 rem8s#3 print_char_cursor#17 ] main:2::test_8s:11::print_sbyte:154::print_byte:167 [ print_line_cursor#1 test_8s::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:261 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::divisor#0 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:265 [ print_line_cursor#41 rem8u#17 test_8u::i#10 test_8u::res#0 print_char_cursor#17 ] main:2::test_8u:7::print_byte:269 [ print_line_cursor#41 rem8u#17 test_8u::i#10 print_char_cursor#17 ] main:2::test_8u:7::print_byte:273 [ print_line_cursor#41 test_8u::i#10 print_char_cursor#17 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym index 467475c2d..b5304aace 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-division.sym @@ -233,7 +233,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:3 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:3 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:3 3.9099999999999993 (byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:3 204.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.cfg index 6ca5add1a..90d43a554 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.cfg @@ -105,12 +105,12 @@ print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 prin [54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) [ print_byte::b#6 print_char_cursor#67 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] ) [54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#6 print_char_cursor#67 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] ) [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) - [56] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) + [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) [57] call print_char [ print_char_cursor#12 print_byte::b#6 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) - [59] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) + [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) [60] call print_char [ print_char_cursor#12 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.log b/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.log index 623f6c38c..b14d6e0db 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.log @@ -1472,7 +1472,7 @@ Simple Condition (bool~) print_cls::$1 if((byte*) print_cls::sc#1!=(byte*~) prin Simple Condition (bool~) main::$31 if((dword) main::dw#1!=(dword/signed dword) 305419920) goto main::@1 Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const dword) main::dw#0 = 305419896 Constant (const byte) print_char::ch#2 = ' ' Constant (const byte) print_char::ch#3 = ' ' @@ -1572,7 +1572,7 @@ Constant inlined print_char::ch#4 = (byte) ' ' Constant inlined print_cls::$0 = ((byte*))(word/signed word/dword/signed dword) 1024+(word/signed word/dword/signed dword) 1000 Constant inlined print_line_cursor#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 $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined print_char::ch#7 = (byte) ' ' Constant inlined main::dw#0 = (dword/signed dword) 305419896 Constant inlined print_char::ch#6 = (byte) ' ' @@ -1849,12 +1849,12 @@ print_byte: scope:[print_byte] from main::@11 main::@13 main::@15 main::@9 prin [54] (byte*) print_char_cursor#67 ← phi( main::@11/(byte*) print_char_cursor#12 main::@13/(byte*) print_char_cursor#12 main::@15/(byte*) print_char_cursor#12 main::@9/(byte*) print_char_cursor#12 print_word/(byte*) print_char_cursor#65 print_word::@1/(byte*) print_char_cursor#12 ) [ print_byte::b#6 print_char_cursor#67 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] ) [54] (byte) print_byte::b#6 ← phi( main::@11/(byte) print_byte::b#3 main::@13/(byte) print_byte::b#4 main::@15/(byte) print_byte::b#5 main::@9/(byte) print_byte::b#2 print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#6 print_char_cursor#67 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 ] ) [55] (byte~) print_byte::$0 ← (byte) print_byte::b#6 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_byte::$0 ] ) - [56] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) + [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) [57] call print_char [ print_char_cursor#12 print_byte::b#6 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) - [59] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) + [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) [60] call print_char [ print_char_cursor#12 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -2489,7 +2489,7 @@ print_byte: { lsr lsr sta _0 - //SEG126 [56] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG126 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -2506,7 +2506,7 @@ print_byte: { lda #$f and b sta _2 - //SEG133 [59] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG133 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -3129,7 +3129,7 @@ print_byte: { lsr lsr lsr - //SEG126 [56] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG126 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG127 [57] call print_char [ print_char_cursor#12 print_byte::b#6 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] ) @@ -3144,7 +3144,7 @@ print_byte: { //SEG132 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG133 [59] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG133 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG134 [60] call print_char [ print_char_cursor#12 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] ) @@ -3460,7 +3460,7 @@ FINAL SYMBOL TABLE (dword) print_dword::dw (dword) print_dword::dw#0 dw zp ZP_DWORD:12 5.0 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143 (byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333 @@ -3792,7 +3792,7 @@ print_byte: { lsr lsr lsr - //SEG126 [56] (byte) print_char::ch#0 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG126 [56] (byte) print_char::ch#0 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_byte::b#6 print_char_cursor#67 print_char::ch#0 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG127 [57] call print_char [ print_char_cursor#12 print_byte::b#6 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::b#6 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::b#6 ] ) @@ -3804,7 +3804,7 @@ print_byte: { //SEG132 [58] (byte~) print_byte::$2 ← (byte) print_byte::b#6 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#12 print_byte::$2 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_byte::$2 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_byte::$2 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG133 [59] (byte) print_char::ch#1 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG133 [59] (byte) print_char::ch#1 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#12 print_char::ch#1 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 print_char::ch#1 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 print_char::ch#1 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG134 [60] call print_char [ print_char_cursor#12 ] ( main:2::print_byte:27 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:32 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:37 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_byte:42 [ main::dw#10 print_line_cursor#19 print_char_cursor#12 ] main:2::print_word:18::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:22::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_word::w#4 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:68 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_word::w#4 print_char_cursor#12 ] main:2::print_word:18::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_word:22::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] main:2::print_dword:14::print_word:73::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_dword::dw#0 print_char_cursor#12 ] main:2::print_dword:14::print_word:75::print_byte:70 [ main::dw#10 print_line_cursor#19 main::dw2#10 print_char_cursor#12 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.sym index e572d63c6..ffdba0b9c 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-lowhigh.sym @@ -71,7 +71,7 @@ (dword) print_dword::dw (dword) print_dword::dw#0 dw zp ZP_DWORD:12 5.0 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 46.42857142857143 (byte*) print_line_cursor#19 print_line_cursor zp ZP_WORD:6 0.3333333333333333 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.cfg index 1c5c6749e..12d5d5543 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.cfg @@ -208,12 +208,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [99] (byte*) print_char_cursor#120 ← phi( print_word/(byte*) print_char_cursor#116 print_word::@1/(byte*) print_char_cursor#20 ) [ print_byte::b#2 print_char_cursor#120 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] ) [99] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#120 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] ) [100] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#120 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] ) - [101] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) + [101] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) [102] call print_char [ print_char_cursor#20 print_byte::b#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [103] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] ) - [104] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) + [104] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) [105] call print_char [ print_char_cursor#20 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.log b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.log index 64cb76195..9e7938e79 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.log @@ -4723,7 +4723,7 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const dword) mul16u::res#0 = 0 Constant (const byte[512]) mulf_sqr1_lo#0 = { fill( 512, 0) } Constant (const byte[512]) mulf_sqr1_hi#0 = { fill( 512, 0) } @@ -4747,22 +4747,22 @@ Constant (const byte) mul16u_compare::i#0 = 0 Constant (const byte) mul16u_compare::j#0 = 0 Constant (const byte) mul16u_compare::ok#0 = 1 Constant (const byte) mul16u_compare::ok#1 = 0 -Constant (const string) print_str::str#1 = mul16u_compare::str -Constant (const string) print_str::str#2 = mul16u_error::str -Constant (const string) print_str::str#3 = mul16u_error::str1 -Constant (const string) print_str::str#4 = mul16u_error::str2 -Constant (const string) print_str::str#5 = mul16u_error::str3 +Constant (const byte*) print_str::str#1 = mul16u_compare::str +Constant (const byte*) print_str::str#2 = mul16u_error::str +Constant (const byte*) print_str::str#3 = mul16u_error::str1 +Constant (const byte*) print_str::str#4 = mul16u_error::str2 +Constant (const byte*) print_str::str#5 = mul16u_error::str3 Constant (const signed word) mul16s_compare::a#0 = -32767 Constant (const signed word) mul16s_compare::b#0 = -32767 Constant (const byte) mul16s_compare::i#0 = 0 Constant (const byte) mul16s_compare::j#0 = 0 Constant (const byte) mul16s_compare::ok#0 = 1 Constant (const byte) mul16s_compare::ok#1 = 0 -Constant (const string) print_str::str#6 = mul16s_compare::str -Constant (const string) print_str::str#7 = mul16s_error::str -Constant (const string) print_str::str#8 = mul16s_error::str1 -Constant (const string) print_str::str#9 = mul16s_error::str2 -Constant (const string) print_str::str#10 = mul16s_error::str3 +Constant (const byte*) print_str::str#6 = mul16s_compare::str +Constant (const byte*) print_str::str#7 = mul16s_error::str +Constant (const byte*) print_str::str#8 = mul16s_error::str1 +Constant (const byte*) print_str::str#9 = mul16s_error::str2 +Constant (const byte*) print_str::str#10 = mul16s_error::str3 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 @@ -4770,8 +4770,8 @@ Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1 Constant (const byte*) mulf_init::sqr1_lo#0 = mulf_sqr1_lo#0+1 Constant (const byte*) mulf_init::$8 = mulf_sqr1_lo#0+512 Constant (const byte) mulf_init::x_255#0 = ((byte))mulf_init::$10 -Constant (const byte[512]) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 -Constant (const byte[512]) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 +Constant (const byte*) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 +Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 Constant (const byte*) mulf_init::$15 = mulf_sqr2_lo#0+511 Constant (const byte*) mulf_init::$17 = mulf_sqr2_lo#0+511 Constant (const byte*) mulf_init::$18 = mulf_sqr1_lo#0+256 @@ -4940,36 +4940,36 @@ Not aliassing across scopes: print_sword::w#2 mul16s_error::b#0 Not aliassing across scopes: print_sdword::dw#1 mul16s_error::ms#0 Not aliassing across scopes: print_sdword::dw#2 mul16s_error::mn#0 OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#10 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -5004,10 +5004,10 @@ Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0 Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0 Inlining constant with var siblings (const byte) mulf_init::x_255#0 Inlining constant with var siblings (const byte) mulf_init::x_255#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_hi#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_hi#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_lo#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_lo#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0 Inlining constant with var siblings (const dword) muls16u::m#0 Inlining constant with var siblings (const dword) muls16u::m#0 Inlining constant with var siblings (const word) muls16u::i#0 @@ -5053,7 +5053,7 @@ 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_hi#0 = (const byte[512]) mulf_sqr2_hi#0 -Constant inlined $0 = (const string) 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 mul16u_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::dir#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 @@ -5587,12 +5587,12 @@ print_byte: scope:[print_byte] from print_word print_word::@1 [99] (byte*) print_char_cursor#120 ← phi( print_word/(byte*) print_char_cursor#116 print_word::@1/(byte*) print_char_cursor#20 ) [ print_byte::b#2 print_char_cursor#120 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] ) [99] (byte) print_byte::b#2 ← phi( print_word/(byte) print_byte::b#0 print_word::@1/(byte) print_byte::b#1 ) [ print_byte::b#2 print_char_cursor#120 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 ] ) [100] (byte~) print_byte::$0 ← (byte) print_byte::b#2 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#2 print_char_cursor#120 print_byte::$0 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_byte::$0 ] ) - [101] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) + [101] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) [102] call print_char [ print_char_cursor#20 print_byte::b#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [103] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] ) - [104] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) + [104] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) [105] call print_char [ print_char_cursor#20 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -7260,7 +7260,7 @@ print_byte: { lsr lsr sta _0 - //SEG218 [101] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG218 [101] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -7277,7 +7277,7 @@ print_byte: { lda #$f and b sta _2 - //SEG225 [104] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG225 [104] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -9502,7 +9502,7 @@ print_byte: { lsr lsr lsr - //SEG218 [101] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG218 [101] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG219 [102] call print_char [ print_char_cursor#20 print_byte::b#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] ) @@ -9517,7 +9517,7 @@ print_byte: { //SEG224 [103] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG225 [104] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG225 [104] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG226 [105] call print_char [ print_char_cursor#20 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] ) @@ -11278,7 +11278,7 @@ FINAL SYMBOL TABLE (dword) print_dword::dw#2 dw zp ZP_DWORD:10 4.0 (dword) print_dword::dw#3 dw zp ZP_DWORD:10 3.333333333333333 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 0.7068965517241378 (byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:6 24.0 @@ -11835,7 +11835,7 @@ print_byte: { lsr lsr lsr - //SEG218 [101] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG218 [101] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_byte::b#2 print_char_cursor#120 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG219 [102] call print_char [ print_char_cursor#20 print_byte::b#2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::b#2 ] ) @@ -11847,7 +11847,7 @@ print_byte: { //SEG224 [103] (byte~) print_byte::$2 ← (byte) print_byte::b#2 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#20 print_byte::$2 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG225 [104] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG225 [104] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#20 print_char::ch#3 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG226 [105] call print_char [ print_char_cursor#20 ] ( main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:95 [ print_line_cursor#1 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:95 [ mul16u_error::mn#0 print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:95 [ print_dword::dw#3 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:95 [ mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:95 [ print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:95 [ mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:95 [ print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:95 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:95 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:95 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:95 [ mul16u_error::ms#0 mul16u_error::mn#0 print_word::w#5 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:89::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:89::print_byte:97 [ print_line_cursor#1 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:89::print_byte:97 [ mul16u_error::mn#0 print_dword::dw#3 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:89::print_byte:97 [ print_dword::dw#3 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:70::print_dword:85::print_word:91::print_byte:97 [ mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sdword:74::print_dword:85::print_word:91::print_byte:97 [ print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:205::print_word:91::print_byte:97 [ mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_dword:209::print_word:91::print_byte:97 [ print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:62::print_word:118::print_byte:97 [ mul16s_error::b#0 mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16s_compare:11::mul16s_error:37::print_sword:66::print_word:118::print_byte:97 [ mul16s_error::ms#0 mul16s_error::mn#0 print_line_cursor#1 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:197::print_byte:97 [ mul16u_error::b#0 mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] main:2::mul16u_compare:9::mul16u_error:184::print_word:201::print_byte:97 [ mul16u_error::ms#0 mul16u_error::mn#0 print_char_cursor#20 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.sym index 166e4b2b6..16bb3e98b 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-16bit.sym @@ -307,7 +307,7 @@ (dword) print_dword::dw#2 dw zp ZP_DWORD:10 4.0 (dword) print_dword::dw#3 dw zp ZP_DWORD:10 3.333333333333333 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:6 0.7068965517241378 (byte*) print_line_cursor#20 print_line_cursor zp ZP_WORD:6 24.0 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.cfg b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.cfg index 97a601afc..3937ad916 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.cfg +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.cfg @@ -220,12 +220,12 @@ print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte [108] (byte*) print_char_cursor#137 ← phi( mul8u_error::@1/(byte*) print_char_cursor#130 mul8u_error::@3/(byte*) print_char_cursor#130 print_sbyte::@1/(byte*) print_char_cursor#134 print_word/(byte*) print_char_cursor#136 print_word::@1/(byte*) print_char_cursor#17 ) [ print_byte::b#5 print_char_cursor#137 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] ) [108] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@1/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) [ print_byte::b#5 print_char_cursor#137 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] ) [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#137 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] ) - [110] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) + [110] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) [111] call print_char [ print_char_cursor#17 print_byte::b#5 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] ) - [113] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) + [113] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) [114] call print_char [ print_char_cursor#17 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.log b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.log index 53c812dd1..dd26e83b4 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.log +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.log @@ -5643,7 +5643,7 @@ Succesful SSA optimization Pass2ConditionalJumpSimplification Constant (const byte*) print_line_cursor#0 = ((byte*))1024 Constant (const byte) print_char::ch#0 = '-' Constant (const byte) print_char::ch#1 = '-' -Constant (const string) print_hextab#0 = $0 +Constant (const byte[]) print_hextab#0 = $0 Constant (const word) mul8u::res#0 = 0 Constant (const byte[512]) mulf_sqr1_lo#0 = { fill( 512, 0) } Constant (const byte[512]) mulf_sqr1_hi#0 = { fill( 512, 0) } @@ -5669,20 +5669,20 @@ Constant (const byte[512]) mula_sqr2_lo#0 = { fill( 512, 0) } Constant (const byte[512]) mula_sqr2_hi#0 = { fill( 512, 0) } Constant (const byte*) mulf_init_asm::mem#0 = ((byte*))255 Constant (const word/signed word/dword/signed dword) mulf_tables_cmp::$8 = 512*4 -Constant (const string) print_str::str#1 = mulf_tables_cmp::str -Constant (const string) print_str::str#2 = mulf_tables_cmp::str1 -Constant (const string) print_str::str#3 = mulf_tables_cmp::str2 +Constant (const byte*) print_str::str#1 = mulf_tables_cmp::str +Constant (const byte*) print_str::str#2 = mulf_tables_cmp::str1 +Constant (const byte*) print_str::str#3 = mulf_tables_cmp::str2 Constant (const byte) mul8u_compare::a#0 = 0 Constant (const byte) mul8u_compare::b#0 = 0 Constant (const byte) mul8u_compare::ok#0 = 1 Constant (const byte) mul8u_compare::ok#1 = 0 Constant (const byte) mul8u_compare::ok#2 = 0 -Constant (const string) print_str::str#4 = mul8u_compare::str -Constant (const string) print_str::str#5 = mul8u_error::str -Constant (const string) print_str::str#6 = mul8u_error::str1 -Constant (const string) print_str::str#7 = mul8u_error::str2 -Constant (const string) print_str::str#8 = mul8u_error::str3 -Constant (const string) print_str::str#9 = mul8u_error::str4 +Constant (const byte*) print_str::str#4 = mul8u_compare::str +Constant (const byte*) print_str::str#5 = mul8u_error::str +Constant (const byte*) print_str::str#6 = mul8u_error::str1 +Constant (const byte*) print_str::str#7 = mul8u_error::str2 +Constant (const byte*) print_str::str#8 = mul8u_error::str3 +Constant (const byte*) print_str::str#9 = mul8u_error::str4 Constant (const signed byte) mul8s_compare::a#0 = -128 Constant (const signed byte) mul8s_compare::b#0 = -128 Constant (const byte) mul8s_compare::ok#0 = 1 @@ -5690,12 +5690,12 @@ Constant (const byte) mul8s_compare::ok#1 = 0 Constant (const byte) mul8s_compare::ok#2 = 0 Constant (const signed byte/signed word/signed dword) mul8s_compare::$12 = -128 Constant (const signed byte/signed word/signed dword) mul8s_compare::$14 = -128 -Constant (const string) print_str::str#10 = mul8s_compare::str -Constant (const string) print_str::str#11 = mul8s_error::str -Constant (const string) print_str::str#12 = mul8s_error::str1 -Constant (const string) print_str::str#13 = mul8s_error::str2 -Constant (const string) print_str::str#14 = mul8s_error::str3 -Constant (const string) print_str::str#15 = mul8s_error::str4 +Constant (const byte*) print_str::str#10 = mul8s_compare::str +Constant (const byte*) print_str::str#11 = mul8s_error::str +Constant (const byte*) print_str::str#12 = mul8s_error::str1 +Constant (const byte*) print_str::str#13 = mul8s_error::str2 +Constant (const byte*) print_str::str#14 = mul8s_error::str3 +Constant (const byte*) print_str::str#15 = mul8s_error::str4 Succesful SSA optimization Pass2ConstantIdentification Constant (const byte*) print_cls::sc#0 = print_line_cursor#0 Constant (const byte*) print_cls::$0 = print_line_cursor#0+1000 @@ -5703,15 +5703,15 @@ Constant (const byte*) mulf_init::sqr1_hi#0 = mulf_sqr1_hi#0+1 Constant (const byte*) mulf_init::sqr1_lo#0 = mulf_sqr1_lo#0+1 Constant (const byte*) mulf_init::$8 = mulf_sqr1_lo#0+512 Constant (const byte) mulf_init::x_255#0 = ((byte))mulf_init::$10 -Constant (const byte[512]) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 -Constant (const byte[512]) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 +Constant (const byte*) mulf_init::sqr2_hi#0 = mulf_sqr2_hi#0 +Constant (const byte*) mulf_init::sqr2_lo#0 = mulf_sqr2_lo#0 Constant (const byte*) mulf_init::$15 = mulf_sqr2_lo#0+511 Constant (const byte*) mulf_init::$17 = mulf_sqr2_lo#0+511 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::$20 = mulf_sqr1_hi#0+256 -Constant (const byte[512]) mulf_tables_cmp::asm_sqr#0 = mula_sqr1_lo#0 -Constant (const byte[512]) mulf_tables_cmp::kc_sqr#0 = mulf_sqr1_lo#0 +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::$9 = mulf_sqr1_lo#0+mulf_tables_cmp::$8 Succesful SSA optimization Pass2ConstantIdentification Fixing inline constructor with mulf8u::$0 ← *(mulf8u::memB#0) w= *(mulf8u::memA#0) @@ -5990,51 +5990,51 @@ Not aliassing across scopes: print_sword::w#1 mul8s_error::ms#0 Not aliassing across scopes: print_sword::w#2 mul8s_error::mn#0 Not aliassing across scopes: print_sword::w#3 mul8s_error::mf#0 OPTIMIZING CONTROL FLOW GRAPH -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#1 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#2 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#3 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#4 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#5 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#6 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#7 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#8 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#9 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#10 -Inlining constant with var siblings (const string) print_str::str#11 -Inlining constant with var siblings (const string) print_str::str#11 -Inlining constant with var siblings (const string) print_str::str#11 -Inlining constant with var siblings (const string) print_str::str#12 -Inlining constant with var siblings (const string) print_str::str#12 -Inlining constant with var siblings (const string) print_str::str#12 -Inlining constant with var siblings (const string) print_str::str#13 -Inlining constant with var siblings (const string) print_str::str#13 -Inlining constant with var siblings (const string) print_str::str#13 -Inlining constant with var siblings (const string) print_str::str#14 -Inlining constant with var siblings (const string) print_str::str#14 -Inlining constant with var siblings (const string) print_str::str#14 -Inlining constant with var siblings (const string) print_str::str#15 -Inlining constant with var siblings (const string) print_str::str#15 -Inlining constant with var siblings (const string) print_str::str#15 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#1 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#2 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#3 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#4 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#5 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#6 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#7 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#8 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#9 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#10 +Inlining constant with var siblings (const byte*) print_str::str#11 +Inlining constant with var siblings (const byte*) print_str::str#11 +Inlining constant with var siblings (const byte*) print_str::str#11 +Inlining constant with var siblings (const byte*) print_str::str#12 +Inlining constant with var siblings (const byte*) print_str::str#12 +Inlining constant with var siblings (const byte*) print_str::str#12 +Inlining constant with var siblings (const byte*) print_str::str#13 +Inlining constant with var siblings (const byte*) print_str::str#13 +Inlining constant with var siblings (const byte*) print_str::str#13 +Inlining constant with var siblings (const byte*) print_str::str#14 +Inlining constant with var siblings (const byte*) print_str::str#14 +Inlining constant with var siblings (const byte*) print_str::str#14 +Inlining constant with var siblings (const byte*) print_str::str#15 +Inlining constant with var siblings (const byte*) print_str::str#15 +Inlining constant with var siblings (const byte*) print_str::str#15 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 Inlining constant with var siblings (const byte) print_char::ch#0 @@ -6069,10 +6069,10 @@ Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0 Inlining constant with var siblings (const byte*) mulf_init::sqr1_lo#0 Inlining constant with var siblings (const byte) mulf_init::x_255#0 Inlining constant with var siblings (const byte) mulf_init::x_255#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_hi#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_hi#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_lo#0 -Inlining constant with var siblings (const byte[512]) mulf_init::sqr2_lo#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_hi#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0 +Inlining constant with var siblings (const byte*) mulf_init::sqr2_lo#0 Inlining constant with var siblings (const word) muls8u::m#0 Inlining constant with var siblings (const word) muls8u::m#0 Inlining constant with var siblings (const byte) muls8u::i#0 @@ -6085,10 +6085,10 @@ Inlining constant with var siblings (const signed byte) muls8s::i#0 Inlining constant with var siblings (const signed byte) muls8s::i#0 Inlining constant with var siblings (const signed byte) muls8s::j#0 Inlining constant with var siblings (const signed byte) muls8s::j#0 -Inlining constant with var siblings (const byte[512]) mulf_tables_cmp::asm_sqr#0 -Inlining constant with var siblings (const byte[512]) mulf_tables_cmp::asm_sqr#0 -Inlining constant with var siblings (const byte[512]) mulf_tables_cmp::kc_sqr#0 -Inlining constant with var siblings (const byte[512]) mulf_tables_cmp::kc_sqr#0 +Inlining constant with var siblings (const byte*) mulf_tables_cmp::asm_sqr#0 +Inlining constant with var siblings (const byte*) mulf_tables_cmp::asm_sqr#0 +Inlining constant with var siblings (const byte*) mulf_tables_cmp::kc_sqr#0 +Inlining constant with var siblings (const byte*) mulf_tables_cmp::kc_sqr#0 Inlining constant with var siblings (const byte) mul8u_compare::a#0 Inlining constant with var siblings (const byte) mul8u_compare::a#0 Inlining constant with var siblings (const byte) mul8u_compare::b#0 @@ -6126,7 +6126,7 @@ Constant inlined mulf_init::sqr2_hi#0 = (const byte[512]) mulf_sqr2_hi#0 Constant inlined mul8u_compare::ok#2 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul8u_compare::ok#1 = (byte/signed byte/word/signed word/dword/signed dword) 0 Constant inlined mul8u_compare::ok#0 = (byte/signed byte/word/signed word/dword/signed dword) 1 -Constant inlined $0 = (const string) print_hextab#0 +Constant inlined $0 = (const byte[]) print_hextab#0 Constant inlined mul8s_compare::b#0 = -(byte/word/signed word/dword/signed dword) 128 Constant inlined mulf_init::dir#1 = (byte/signed byte/word/signed word/dword/signed dword) 1 Constant inlined mulf_init::dir#0 = (byte/word/signed word/dword/signed dword) 255 @@ -6728,12 +6728,12 @@ print_byte: scope:[print_byte] from mul8u_error::@1 mul8u_error::@3 print_sbyte [108] (byte*) print_char_cursor#137 ← phi( mul8u_error::@1/(byte*) print_char_cursor#130 mul8u_error::@3/(byte*) print_char_cursor#130 print_sbyte::@1/(byte*) print_char_cursor#134 print_word/(byte*) print_char_cursor#136 print_word::@1/(byte*) print_char_cursor#17 ) [ print_byte::b#5 print_char_cursor#137 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] ) [108] (byte) print_byte::b#5 ← phi( mul8u_error::@1/(byte) print_byte::b#3 mul8u_error::@3/(byte) print_byte::b#4 print_sbyte::@1/(byte~) print_byte::b#9 print_word/(byte) print_byte::b#1 print_word::@1/(byte) print_byte::b#2 ) [ print_byte::b#5 print_char_cursor#137 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 ] ) [109] (byte~) print_byte::$0 ← (byte) print_byte::b#5 >> (byte/signed byte/word/signed word/dword/signed dword) 4 [ print_byte::b#5 print_char_cursor#137 print_byte::$0 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_byte::$0 ] ) - [110] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) + [110] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) [111] call print_char [ print_char_cursor#17 print_byte::b#5 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] ) to:print_byte::@1 print_byte::@1: scope:[print_byte] from print_byte [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] ) - [113] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) + [113] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) [114] call print_char [ print_char_cursor#17 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] ) to:print_byte::@return print_byte::@return: scope:[print_byte] from print_byte::@1 @@ -8591,7 +8591,7 @@ print_byte: { lsr lsr sta _0 - //SEG227 [110] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG227 [110] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _0 lda print_hextab,y sta print_char.ch @@ -8608,7 +8608,7 @@ print_byte: { lda #$f and b sta _2 - //SEG234 [113] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 + //SEG234 [113] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) -- vbuz1=pbuc1_derefidx_vbuz2 ldy _2 lda print_hextab,y sta print_char.ch @@ -11126,7 +11126,7 @@ print_byte: { lsr lsr lsr - //SEG227 [110] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG227 [110] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG228 [111] call print_char [ print_char_cursor#17 print_byte::b#5 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] ) @@ -11141,7 +11141,7 @@ print_byte: { //SEG233 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG234 [113] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG234 [113] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG235 [114] call print_char [ print_char_cursor#17 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] ) @@ -13293,7 +13293,7 @@ FINAL SYMBOL TABLE (byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:4 0.6338028169014083 (byte*) print_line_cursor#10 print_line_cursor zp ZP_WORD:4 0.09523809523809523 @@ -13855,7 +13855,7 @@ print_byte: { lsr lsr lsr - //SEG227 [110] (byte) print_char::ch#2 ← *((const string) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG227 [110] (byte) print_char::ch#2 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$0) [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_byte::b#5 print_char_cursor#137 print_char::ch#2 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG228 [111] call print_char [ print_char_cursor#17 print_byte::b#5 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::b#5 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::b#5 ] ) @@ -13867,7 +13867,7 @@ print_byte: { //SEG233 [112] (byte~) print_byte::$2 ← (byte) print_byte::b#5 & (byte/signed byte/word/signed word/dword/signed dword) 15 [ print_char_cursor#17 print_byte::$2 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_byte::$2 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_byte::$2 ] ) -- vbuaa=vbuxx_band_vbuc1 txa and #$f - //SEG234 [113] (byte) print_char::ch#3 ← *((const string) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa + //SEG234 [113] (byte) print_char::ch#3 ← *((const byte[]) print_hextab#0 + (byte~) print_byte::$2) [ print_char_cursor#17 print_char::ch#3 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 print_char::ch#3 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 print_char::ch#3 ] ) -- vbuaa=pbuc1_derefidx_vbuaa tay lda print_hextab,y //SEG235 [114] call print_char [ print_char_cursor#17 ] ( main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:104 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:104 [ mul8s_error::mf#0 print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:104 [ print_line_cursor#1 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:104 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:104 [ print_line_cursor#10 mul8u_error::mf#0 print_word::w#6 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:104 [ print_line_cursor#10 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:104 [ mulf_tables_cmp::kc_sqr#2 print_word::w#6 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:104 [ print_word::w#6 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:81::print_word:100::print_byte:106 [ mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:85::print_word:100::print_byte:106 [ mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sword:89::print_word:100::print_byte:106 [ print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:242::print_byte:106 [ print_line_cursor#10 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:246::print_byte:106 [ print_line_cursor#10 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_word:250::print_byte:106 [ print_line_cursor#10 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:267::print_byte:106 [ mulf_tables_cmp::kc_sqr#2 print_char_cursor#17 ] main:2::mulf_tables_cmp:11::print_word:271::print_byte:106 [ print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:73::print_byte:127 [ mul8s_error::b#0 mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8s_compare:15::mul8s_error:47::print_sbyte:77::print_byte:127 [ mul8s_error::ms#0 mul8s_error::mn#0 mul8s_error::mf#0 print_line_cursor#1 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:234 [ print_line_cursor#10 mul8u_error::b#0 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] main:2::mul8u_compare:13::mul8u_error:220::print_byte:238 [ print_line_cursor#10 mul8u_error::ms#0 mul8u_error::mn#0 mul8u_error::mf#0 print_char_cursor#17 ] ) diff --git a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.sym b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.sym index 12918292c..e7bfa9f5a 100644 --- a/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.sym +++ b/src/test/java/dk/camelot64/kickc/test/ref/test-multiply-8bit.sym @@ -382,7 +382,7 @@ (byte*) print_cls::sc#1 sc zp ZP_WORD:4 16.5 (byte*) print_cls::sc#2 sc zp ZP_WORD:4 16.5 (byte[]) print_hextab -(const string) print_hextab#0 print_hextab = (string) "0123456789abcdef" +(const byte[]) print_hextab#0 print_hextab = (string) "0123456789abcdef" (byte*) print_line_cursor (byte*) print_line_cursor#1 print_line_cursor zp ZP_WORD:4 0.6338028169014083 (byte*) print_line_cursor#10 print_line_cursor zp ZP_WORD:4 0.09523809523809523