From 943775d97dac386ef72378e2e975850132cab12b Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Mon, 23 Oct 2017 00:48:22 +0200 Subject: [PATCH] Implemented phi transition assignment clobber checking. --- .../dk/camelot64/kickc/asm/AsmProgram.java | 4 +- .../dk/camelot64/kickc/asm/AsmSegment.java | 29 + .../camelot64/kickc/fragment/AsmFragment.java | 1 - .../asm/zpptrby1=zpptrby1_minus_coby1.asm | 7 + .../camelot64/kickc/model/PhiTransitions.java | 253 ++++++ .../kickc/model/VariableReferenceInfo.java | 2 +- .../kickc/passes/Pass4AssertNoCpuClobber.java | 42 +- .../kickc/passes/Pass4CodeGeneration.java | 254 +----- .../passes/Pass4RegisterUpliftStatic.java | 10 + .../dk/camelot64/kickc/test/ref/bresenham.log | 180 ++--- .../camelot64/kickc/test/ref/bresenhamarr.log | 168 ++-- .../camelot64/kickc/test/ref/constantmin.log | 48 +- .../dk/camelot64/kickc/test/ref/fibmem.log | 48 +- .../camelot64/kickc/test/ref/flipper-rex2.log | 752 +++++++++--------- .../kickc/test/ref/forclassicmin.log | 60 +- .../camelot64/kickc/test/ref/forrangemin.log | 108 +-- .../dk/camelot64/kickc/test/ref/halfscii.log | 280 +++---- .../dk/camelot64/kickc/test/ref/ifmin.log | 60 +- .../camelot64/kickc/test/ref/inmemarray.log | 132 +-- .../camelot64/kickc/test/ref/inmemstring.log | 132 +-- .../dk/camelot64/kickc/test/ref/iterarray.log | 60 +- .../dk/camelot64/kickc/test/ref/literals.log | 48 +- .../dk/camelot64/kickc/test/ref/liverange.log | 50 +- .../dk/camelot64/kickc/test/ref/loopmin.log | 96 +-- .../dk/camelot64/kickc/test/ref/loopnest.log | 120 +-- .../dk/camelot64/kickc/test/ref/loopnest2.log | 324 ++++---- .../dk/camelot64/kickc/test/ref/loopsplit.log | 70 +- .../dk/camelot64/kickc/test/ref/modglobal.log | 90 +-- .../camelot64/kickc/test/ref/modglobalmin.log | 50 +- .../dk/camelot64/kickc/test/ref/ptrtest.log | 230 +++--- .../camelot64/kickc/test/ref/ptrtestmin.log | 50 +- .../kickc/test/ref/scroll-clobber.asm | 6 +- .../kickc/test/ref/scroll-clobber.log | 282 +++---- .../kickc/test/ref/scroll-clobber.sym | 10 +- .../dk/camelot64/kickc/test/ref/scroll.asm | 7 +- .../dk/camelot64/kickc/test/ref/scroll.log | 589 +++++++------- .../dk/camelot64/kickc/test/ref/scroll.sym | 8 +- .../dk/camelot64/kickc/test/ref/summin.log | 90 +-- .../dk/camelot64/kickc/test/ref/voronoi.log | 444 +++++------ .../camelot64/kickc/test/ref/zpparammin.log | 60 +- .../dk/camelot64/kickc/test/scroll-clobber.kc | 2 +- 41 files changed, 2677 insertions(+), 2579 deletions(-) create mode 100644 src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_minus_coby1.asm create mode 100644 src/main/java/dk/camelot64/kickc/model/PhiTransitions.java diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java b/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java index c4f2ad7f4..89628ab0b 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmProgram.java @@ -177,7 +177,9 @@ public class AsmProgram { } public void decIndent() { - this.indent = this.indent.substring(0, this.indent.length()-2); + if(this.indent.length()>=2) { + this.indent = this.indent.substring(0, this.indent.length() - 2); + } } public String getIndent() { diff --git a/src/main/java/dk/camelot64/kickc/asm/AsmSegment.java b/src/main/java/dk/camelot64/kickc/asm/AsmSegment.java index 2a819399f..f1bd125e6 100644 --- a/src/main/java/dk/camelot64/kickc/asm/AsmSegment.java +++ b/src/main/java/dk/camelot64/kickc/asm/AsmSegment.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.asm; import dk.camelot64.kickc.asm.parser.AsmClobber; +import dk.camelot64.kickc.model.PhiTransitions; import java.util.ArrayList; import java.util.List; @@ -36,6 +37,12 @@ public class AsmSegment { */ private String fragment; + /** If the segment represents a PHI transition (See. {@link PhiTransitions}) this contains the transition ID. */ + private String phiTransitionId; + + /** If the segment is an assignment in a PHI transition this contains the index of the assignment within the transition. */ + private Integer phiTransitionAssignmentIdx; + public AsmSegment(int index, Integer statementIdx, String source) { this.lines = new ArrayList<>(); this.index = index; @@ -67,6 +74,21 @@ public class AsmSegment { this.fragment = fragment; } + public String getPhiTransitionId() { + return phiTransitionId; + } + + public void setPhiTransitionId(String phiTransitionId) { + this.phiTransitionId = phiTransitionId; + } + + public Integer getPhiTransitionAssignmentIdx() { + return phiTransitionAssignmentIdx; + } + + public void setPhiTransitionAssignmentIdx(Integer phiTransitionAssignmentIdx) { + this.phiTransitionAssignmentIdx = phiTransitionAssignmentIdx; + } /** * Get the number of bytes the segment occupies in memory. @@ -122,6 +144,13 @@ public class AsmSegment { if (source != null) { out.append(" ").append(source); } + if(phiTransitionId!=null) { + out.append(" [").append(phiTransitionId); + if(phiTransitionAssignmentIdx!=null) { + out.append("#").append(phiTransitionAssignmentIdx); + } + out.append("]"); + } if (fragment!=null) { out.append(" -- "); out.append(fragment).append(" "); diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java index 9017dbd3e..3e18a4307 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragment.java @@ -69,7 +69,6 @@ public class AsmFragment { this.bindings = new LinkedHashMap<>(); this.program = program; setSignature(assignmentWithAluSignature(assignment, assignmentAlu)); - } /** diff --git a/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_minus_coby1.asm b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_minus_coby1.asm new file mode 100644 index 000000000..c3bbd6725 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/fragment/asm/zpptrby1=zpptrby1_minus_coby1.asm @@ -0,0 +1,7 @@ +lda {zpptrby1} +sec +sbc #{coby1} +sta {zpptrby1} +bcs !+ +dec {zpptrby1}+1 +!: \ No newline at end of file diff --git a/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java b/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java new file mode 100644 index 000000000..635ff1ea4 --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java @@ -0,0 +1,253 @@ +package dk.camelot64.kickc.model; + +import java.util.*; + +/** + * Keeps track of the phi transitions into a single block during code generation. + * Used to ensure that duplicate transitions are only code generated once. + * Also used to ensure that the assignments of each transition is generated in the optimal sequence. + */ +public class PhiTransitions { + + /** The program used for accessing information. */ + private Program program; + + /** The destination block for the phi transitions */ + private ControlFlowBlock toBlock; + + /** The phi-block of the to-block. */ + private StatementPhiBlock phiBlock; + + /** Maps from-block to the transition from the from-block to the to-block. */ + private Map transitions; + + public PhiTransitions(Program program, ControlFlowBlock toBlock) { + this.program = program; + this.toBlock = toBlock; + this.transitions = new LinkedHashMap<>(); + if (toBlock.hasPhiBlock()) { + this.phiBlock = toBlock.getPhiBlock(); + List predecessors = new ArrayList<>(program.getGraph().getPredecessors(toBlock)); + Collections.sort(predecessors, new Comparator() { + @Override + public int compare(ControlFlowBlock o1, ControlFlowBlock o2) { + return o1.getLabel().getFullName().compareTo(o2.getLabel().getFullName()); + } + }); + for (ControlFlowBlock predecessor : predecessors) { + PhiTransition transition = findTransition(predecessor); + transitions.put(predecessor, transition); + } + } + } + + /** + * Find the transition from a specific fromBlock. + * If another transition already has the same assignments it is reused. If not a new transition is created. + * + * @param fromBlock The block where the transition starts + * @return The transition into the passed block + */ + private PhiTransition findTransition(ControlFlowBlock fromBlock) { + PhiTransition transition = new PhiTransition(fromBlock); + boolean isCallTransition = toBlock.getLabel().equals(fromBlock.getCallSuccessor()); + if (!isCallTransition) { + // If the transition is not a call - then attempt to join with other equal transition(s) + for (PhiTransition candidate : transitions.values()) { + if (candidate.equalAssignments(transition)) { + candidate.addFromBlock(fromBlock); + return candidate; + } + } + } + return transition; + } + + public Collection getFromBlocks() { + return transitions.keySet(); + } + + /** + * Get the transition into the to-block from a specific from-block + * + * @param fromBlock The from-block + * @return The transition from the from-block into the to-block + */ + public PhiTransition getTransition(ControlFlowBlock fromBlock) { + PhiTransition transition = transitions.get(fromBlock); + return transition; + } + + /** + * Get a phi transition from it's phi transition ID. + * @param transitionId The ID to look for + * @return The transition with the given ID, or nulll if not found. + */ + public PhiTransition getTransition(String transitionId) { + for (PhiTransition phiTransition : transitions.values()) { + if(transitionId.equals(phiTransition.getTransitionId())) { + return phiTransition; + } + } + return null; + } + + /** + * A single transition into a to-block. + * The transition contains the assignments necessary to enter the to-block from specific from-block(s). + * The transition may be shared between multiple from-blocks, if the assignments are identical. + */ + public class PhiTransition { + + private List fromBlocks; + + private List assignments; + + private boolean generated; + + private int nextIdx; + + public PhiTransition(ControlFlowBlock fromBlock) { + this.fromBlocks = new ArrayList<>(); + this.fromBlocks.add(fromBlock); + this.generated = false; + this.nextIdx = 0; + initAssignments(fromBlock); + } + + private void initAssignments(ControlFlowBlock fromBlock) { + this.assignments = new ArrayList<>(); + if (phiBlock != null) { + List phiVariables = new ArrayList<>(phiBlock.getPhiVariables()); + Collections.reverse(phiVariables); + for (StatementPhiBlock.PhiVariable phiVariable : phiVariables) { + List phiRValues = new ArrayList<>(phiVariable.getValues()); + Collections.sort(phiRValues, new Comparator() { + @Override + public int compare(StatementPhiBlock.PhiRValue o1, StatementPhiBlock.PhiRValue o2) { + return o1.getPredecessor().getFullName().compareTo(o2.getPredecessor().getFullName()); + } + }); + for (StatementPhiBlock.PhiRValue phiRValue : phiRValues) { + if (phiRValue.getPredecessor().equals(fromBlock.getLabel())) { + this.assignments.add(new PhiTransition.PhiAssignment(phiVariable, phiRValue, nextIdx++)); + } + } + } + } + } + + /** + * Get a string ID uniquely identifying the PHI transition within the program + * @return Transition ID + */ + public String getTransitionId() { + StringBuilder id = new StringBuilder(); + id.append("phi:"); + boolean first = true; + for (ControlFlowBlock fromBlock : fromBlocks) { + if(!first) { + id.append("/"); + } + id.append(fromBlock.getLabel()); + first = false; + } + id.append("->").append(toBlock.getLabel()); + return id.toString(); + } + + public List getAssignments() { + return assignments; + } + + public boolean isGenerated() { + return generated; + } + + public void setGenerated(boolean generated) { + this.generated = generated; + } + + public void addFromBlock(ControlFlowBlock fromBlock) { + fromBlocks.add(fromBlock); + } + + /** + * Determines if another transition has the exact same assignments as this block + * + * @param other The other transition to examine + * @return true if the assignments are identical + */ + public boolean equalAssignments(PhiTransition other) { + List otherAssignments = other.getAssignments(); + if (assignments.size() != otherAssignments.size()) { + return false; + } + for (int i = 0; i < assignments.size(); i++) { + PhiTransition.PhiAssignment assignment = assignments.get(i); + PhiTransition.PhiAssignment otherAssignment = otherAssignments.get(i); + ProgramScope scope = program.getScope(); + if (assignment.getVariable() instanceof VariableRef && otherAssignment.getVariable() instanceof VariableRef) { + Variable var = scope.getVariable((VariableRef) assignment.getVariable()); + Variable otherVar = scope.getVariable((VariableRef) otherAssignment.getVariable()); + if (!var.getAllocation().equals(otherVar.getAllocation())) { + return false; + } + } else if (!assignment.getVariable().equals(otherAssignment.getVariable())) { + return false; + } + if (assignment.getrValue() instanceof VariableRef && otherAssignment.getrValue() instanceof VariableRef) { + Variable var = scope.getVariable((VariableRef) assignment.getrValue()); + Variable otherVar = scope.getVariable((VariableRef) otherAssignment.getrValue()); + if (!var.getAllocation().equals(otherVar.getAllocation())) { + return false; + } + } else if (!assignment.getrValue().equals(otherAssignment.getrValue())) { + return false; + } + } + return true; + } + + public List getFromBlocks() { + return fromBlocks; + } + + /** + * Assignment of a single value during a phi transition + */ + public class PhiAssignment { + + private StatementPhiBlock.PhiVariable phiVariable; + + private StatementPhiBlock.PhiRValue phiRValue; + + /** The index of the assignment within the transition. */ + private int idx; + + public PhiAssignment(StatementPhiBlock.PhiVariable phiVariable, StatementPhiBlock.PhiRValue phiRValue, int idx) { + this.phiVariable = phiVariable; + this.phiRValue = phiRValue; + this.idx = idx; + } + + public VariableRef getVariable() { + return phiVariable.getVariable(); + } + + public RValue getrValue() { + return phiRValue.getrValue(); + } + + public Statement getPhiBlock() { + return phiBlock; + } + + public int getAssignmentIdx() { + return idx; + } + } + + } + +} diff --git a/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfo.java b/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfo.java index 505718d52..a1e5a43b8 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfo.java +++ b/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfo.java @@ -176,7 +176,7 @@ public class VariableReferenceInfo { * @param rValue The rValue * @return All referenced variables */ - private Collection getReferenced(RValue rValue) { + public static Collection getReferenced(RValue rValue) { if (rValue == null) { return new ArrayList<>(); } else if (rValue instanceof ConstantValue) { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java b/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java index c0c4814a3..736608947 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java @@ -5,9 +5,7 @@ import dk.camelot64.kickc.asm.AsmSegment; import dk.camelot64.kickc.asm.parser.AsmClobber; import dk.camelot64.kickc.model.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; +import java.util.*; /*** Ensures that no statement clobbers a CPU register used by an alive variable - and that assigning statements clobber the CPU registers they assign to */ public class Pass4AssertNoCpuClobber extends Pass2Base { @@ -43,28 +41,30 @@ public class Pass4AssertNoCpuClobber extends Pass2Base { Collection clobberRegisters = getClobberRegisters(asmSegmentClobber); // Find vars assigned to in the statement Collection assignedVars = Pass4RegisterUpliftPotentialRegisterAnalysis.getAssignedVars(statement); - // Two assigned vars cannot use same register - if(assignedVars.size()>1) { - for (VariableRef assignedVar1 : assignedVars) { - for (VariableRef assignedVar2 : assignedVars) { - if (assignedVar1.equals(assignedVar2)) { - // Same variable - not relevant - continue; - } - Registers.Register register1 = getProgram().getScope().getVariable(assignedVar1).getAllocation(); - Registers.Register register2 = getProgram().getScope().getVariable(assignedVar2).getAllocation(); - if (register1.equals(register2)) { - if (verbose) { - getLog().append("Two assigned variables " + assignedVar1 + " and " + assignedVar2 + " clobbered by use of same register " + register1 + " in statement " + statement); - } - clobberProblem = true; - } + + // Find alive variables + List aliveVars = new ArrayList<>(getProgram().getLiveRangeVariablesEffective().getAliveEffective(statement)); + + // If the segment is an assignment in a phi transition, examine the later phi transition assignments and update alive variables alive and variables assigned + if(asmSegment.getPhiTransitionId()!=null && asmSegment.getPhiTransitionAssignmentIdx()!=null) { + String phiTransitionId = asmSegment.getPhiTransitionId(); + int transitionAssignmentIdx = asmSegment.getPhiTransitionAssignmentIdx(); + ControlFlowBlock statementBlock = getProgram().getGraph().getBlockFromStatementIdx(statementIdx); + PhiTransitions phiTransitions = new PhiTransitions(getProgram(), statementBlock); + PhiTransitions.PhiTransition phiTransition = phiTransitions.getTransition(phiTransitionId); + for (PhiTransitions.PhiTransition.PhiAssignment phiAssignment : phiTransition.getAssignments()) { + // IF the assignment is later than the current one + if(phiAssignment.getAssignmentIdx()>transitionAssignmentIdx) { + RValue rValue = phiAssignment.getrValue(); + Collection alive = VariableReferenceInfo.getReferenced(rValue); + aliveVars.addAll(alive); + VariableRef assignedVar = phiAssignment.getVariable(); + assignedVars.remove(assignedVar); + alive.remove(assignedVar); } } } - // Find alive variables - List aliveVars = new ArrayList<>(getProgram().getLiveRangeVariablesEffective().getAliveEffective(statement)); // Non-assigned alive variables must not be clobbered for (VariableRef aliveVar : aliveVars) { Variable variable = getProgram().getScope().getVariable(aliveVar); diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index 10b148be3..84cce1c47 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -306,7 +306,6 @@ public class Pass4CodeGeneration { PhiTransitions transitions = getTransitions(toBlock); PhiTransitions.PhiTransition transition = transitions.getTransition(fromBlock); if (!transition.isGenerated()) { - Statement toFirstStatement = toBlock.getStatements().get(0); String segmentSrc = "[" + toFirstStatement.getIndex() + "] phi from "; for (ControlFlowBlock fBlock : transition.getFromBlocks()) { @@ -314,13 +313,26 @@ public class Pass4CodeGeneration { } segmentSrc += "to " + toBlock.getLabel().getFullName(); asm.startSegment(toFirstStatement.getIndex(), segmentSrc); - + asm.getCurrentSegment().setPhiTransitionId(transition.getTransitionId()); for (ControlFlowBlock fBlock : transition.getFromBlocks()) { asm.addLabel((toBlock.getLabel().getLocalName() + "_from_" + fBlock.getLabel().getLocalName()).replace('@', 'b').replace(':', '_')); } List assignments = transition.getAssignments(); for (PhiTransitions.PhiTransition.PhiAssignment assignment : assignments) { - genAsmMove(asm, assignment.getVariable(), assignment.getrValue(), assignment.getPhiBlock(), scope); + LValue lValue = assignment.getVariable(); + RValue rValue = assignment.getrValue(); + Statement statement = assignment.getPhiBlock(); + // Generate an ASM move fragment + asm.startSegment(statement.getIndex(), "[" + statement.getIndex() + "] phi " + lValue.toString(program) + " = " + rValue.toString(program)); + asm.getCurrentSegment().setPhiTransitionId(transition.getTransitionId()); + asm.getCurrentSegment().setPhiTransitionAssignmentIdx(assignment.getAssignmentIdx()); + if (isRegisterCopy(lValue, rValue)) { + asm.getCurrentSegment().setFragment("register_copy"); + } else { + AsmFragment asmFragment = new AsmFragment(lValue, rValue, program, scope); + asm.getCurrentSegment().setFragment(asmFragment.getSignature()); + asmFragment.generate(asm); + } } transition.setGenerated(true); } else { @@ -345,225 +357,12 @@ public class Pass4CodeGeneration { private PhiTransitions getTransitions(ControlFlowBlock toBlock) { PhiTransitions transitions = this.blockTransitions.get(toBlock); if (transitions == null) { - transitions = new PhiTransitions(toBlock); + transitions = new PhiTransitions(program, toBlock); this.blockTransitions.put(toBlock, transitions); } return transitions; } - /** - * Keeps track of the phi transitions into a single block during code generation. - * Used to ensure that duplicate transitions are only code generated once. - */ - public class PhiTransitions { - - /** - * Label of the to-block. - */ - private ControlFlowBlock toBlock; - - /** - * The phi-block of the to-block. - */ - private StatementPhiBlock phiBlock; - - /** - * Maps from-block to the transition from the from-block to the to-block. - */ - private Map transitions; - - public PhiTransitions(ControlFlowBlock toBlock) { - this.toBlock = toBlock; - this.transitions = new LinkedHashMap<>(); - if (toBlock.hasPhiBlock()) { - this.phiBlock = toBlock.getPhiBlock(); - List predecessors = new ArrayList<>(getGraph().getPredecessors(toBlock)); - Collections.sort(predecessors, new Comparator() { - @Override - public int compare(ControlFlowBlock o1, ControlFlowBlock o2) { - return o1.getLabel().getFullName().compareTo(o2.getLabel().getFullName()); - } - }); - for (ControlFlowBlock predecessor : predecessors) { - PhiTransition transition = findTransition(predecessor); - transitions.put(predecessor, transition); - } - } - } - - /** - * Find the transition from a specific fromBlock. - * If another transition already has the same assignments it is reused. If not a new transition is created. - * - * @param fromBlock - * @return - */ - private PhiTransition findTransition(ControlFlowBlock fromBlock) { - PhiTransition transition = new PhiTransition(fromBlock); - boolean isCallTransition = toBlock.getLabel().equals(fromBlock.getCallSuccessor()); - if (!isCallTransition) { - // If the transition is not a call - then attempt to join with other equal transition(s) - for (PhiTransition candidate : transitions.values()) { - if (candidate.equalAssignments(transition)) { - candidate.addFromBlock(fromBlock); - return candidate; - } - } - } - return transition; - } - - public Collection getFromBlocks() { - return transitions.keySet(); - } - - /** - * Get the transition into the to-block from a specific from-block - * - * @param fromBlock The from-block - * @return The transition from the from-block into the to-block - */ - public PhiTransition getTransition(ControlFlowBlock fromBlock) { - PhiTransition transition = transitions.get(fromBlock); - if (transition == null) { - transition = findTransition(fromBlock); - transitions.put(fromBlock, transition); - } - return transition; - } - - - /** - * A single transition into a to-block. - * The transition contains the assignments necessary to enter the to-block from specific from-block(s). - * The transition may be shared between multiple from-blocks, if the assignments are identical. - */ - public class PhiTransition { - - private List fromBlocks; - - private List assignments; - - private boolean generated; - - public PhiTransition(ControlFlowBlock fromBlock) { - this.fromBlocks = new ArrayList<>(); - this.fromBlocks.add(fromBlock); - this.generated = false; - initAssignments(fromBlock); - } - - private void initAssignments(ControlFlowBlock fromBlock) { - this.assignments = new ArrayList<>(); - if (phiBlock != null) { - List phiVariables = new ArrayList<>(phiBlock.getPhiVariables()); - Collections.reverse(phiVariables); - for (StatementPhiBlock.PhiVariable phiVariable : phiVariables) { - List phiRValues = new ArrayList<>(phiVariable.getValues()); - Collections.sort(phiRValues, new Comparator() { - @Override - public int compare(StatementPhiBlock.PhiRValue o1, StatementPhiBlock.PhiRValue o2) { - return o1.getPredecessor().getFullName().compareTo(o2.getPredecessor().getFullName()); - } - }); - for (StatementPhiBlock.PhiRValue phiRValue : phiRValues) { - if (phiRValue.getPredecessor().equals(fromBlock.getLabel())) { - this.assignments.add(new PhiAssignment(phiVariable, phiRValue)); - } - } - } - } - } - - public List getAssignments() { - return assignments; - } - - public boolean isGenerated() { - return generated; - } - - public void setGenerated(boolean generated) { - this.generated = generated; - } - - public void addFromBlock(ControlFlowBlock fromBlock) { - fromBlocks.add(fromBlock); - } - - /** - * Determines if another transition has the exact same assignments as this block - * - * @param other The other transition to examine - * @return true if the assignments are identical - */ - public boolean equalAssignments(PhiTransition other) { - List otherAssignments = other.getAssignments(); - if (assignments.size() != otherAssignments.size()) { - return false; - } - for (int i = 0; i < assignments.size(); i++) { - PhiAssignment assignment = assignments.get(i); - PhiAssignment otherAssignment = otherAssignments.get(i); - ProgramScope scope = program.getScope(); - if (assignment.getVariable() instanceof VariableRef && otherAssignment.getVariable() instanceof VariableRef) { - Variable var = scope.getVariable((VariableRef) assignment.getVariable()); - Variable otherVar = scope.getVariable((VariableRef) otherAssignment.getVariable()); - if (!var.getAllocation().equals(otherVar.getAllocation())) { - return false; - } - } else if (!assignment.getVariable().equals(otherAssignment.getVariable())) { - return false; - } - if (assignment.getrValue() instanceof VariableRef && otherAssignment.getrValue() instanceof VariableRef) { - Variable var = scope.getVariable((VariableRef) assignment.getrValue()); - Variable otherVar = scope.getVariable((VariableRef) otherAssignment.getrValue()); - if (!var.getAllocation().equals(otherVar.getAllocation())) { - return false; - } - } else if (!assignment.getrValue().equals(otherAssignment.getrValue())) { - return false; - } - } - return true; - } - - public List getFromBlocks() { - return fromBlocks; - } - - /** - * Assignment of a single value during a phi transition - */ - public class PhiAssignment { - - private StatementPhiBlock.PhiVariable phiVariable; - - private StatementPhiBlock.PhiRValue phiRValue; - - public PhiAssignment(StatementPhiBlock.PhiVariable phiVariable, StatementPhiBlock.PhiRValue phiRValue) { - this.phiVariable = phiVariable; - this.phiRValue = phiRValue; - } - - public LValue getVariable() { - return phiVariable.getVariable(); - } - - public RValue getrValue() { - return phiRValue.getrValue(); - } - - public Statement getPhiBlock() { - return phiBlock; - } - - } - - } - - } - private Registers.Register getRegister(RValue rValue) { if (rValue instanceof VariableRef) { VariableRef rValueRef = (VariableRef) rValue; @@ -573,26 +372,6 @@ public class Pass4CodeGeneration { } } - /** - * Generate ASM assigning a value (rValue) to a variable (lValue). - * - * @param asm The ASM program to generate into - * @param lValue The lValue that should be assigned the value - * @param rValue The rValue to assign to the lValue. - * @param statement The ICL statement that is the cause of the assignment. - * @param scope The scope where the ASM code is being inserted. Used to ensure that labels inserted in the code reference the right variables. - */ - private void genAsmMove(AsmProgram asm, LValue lValue, RValue rValue, Statement statement, ScopeRef scope) { - asm.startSegment(statement.getIndex(), "[" + statement.getIndex() + "] phi " + lValue.toString(program) + " = " + rValue.toString(program)); - if (isRegisterCopy(lValue, rValue)) { - asm.getCurrentSegment().setFragment("register_copy"); - } else { - AsmFragment asmFragment = new AsmFragment(lValue, rValue, program, scope); - asm.getCurrentSegment().setFragment(asmFragment.getSignature()); - asmFragment.generate(asm); - } - } - private boolean isRegisterCopy(LValue lValue, RValue rValue) { return getRegister(lValue) != null && @@ -600,5 +379,4 @@ public class Pass4CodeGeneration { getRegister(lValue).equals(getRegister(rValue)); } - } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java index 354826a8e..d8333ab2f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java @@ -38,6 +38,7 @@ public class Pass4RegisterUpliftStatic extends Pass2Base { */ // Good combination for liverange.kc + /* setRegister(combination, "inc::$0", Registers.getRegisterX()); setRegister(combination, "main::$0", Registers.getRegisterA()); setRegister(combination, "inc::return#0", Registers.getRegisterA()); @@ -46,7 +47,15 @@ public class Pass4RegisterUpliftStatic extends Pass2Base { setRegister(combination, "main::a#2", Registers.getRegisterA()); setRegister(combination, "i#11", Registers.getRegisterX()); setRegister(combination, "inc::$0", Registers.getRegisterX()); + */ + // Clobber combination for scroll-clobber.kc + setRegister(combination, "main::c#0", Registers.getRegisterA()); + setRegister(combination, "main::c#1", Registers.getRegisterA()); + setRegister(combination, "main::c#2", Registers.getRegisterA()); + setRegister(combination, "main::i#1", Registers.getRegisterX()); + setRegister(combination, "main::i#3", Registers.getRegisterX()); + setRegister(combination, "main::nxt#1", new Registers.RegisterZpPointerByte(2)); boolean success = Pass4RegisterUpliftCombinations.generateCombinationAsm( combination, @@ -66,6 +75,7 @@ public class Pass4RegisterUpliftStatic extends Pass2Base { } combination.store(getProgram().getLiveRangeEquivalenceClassSet()); } else { + new Pass4AssertNoCpuClobber(getProgram()).check(); throw new RuntimeException("Static uplift problem."); } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log index aba345763..7114aa6ce 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenham.log @@ -1434,7 +1434,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -1450,29 +1450,29 @@ main: { .label cursor = 2 .label e = 5 .label y = 6 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- zpby1=coby1 + //SEG9 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- zpby1=coby1 lda #4 sta x - //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1 + //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 sta cursor+1 jmp b1 - //SEG11 [2] phi from main::@2 to main::@1 + //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy - //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy - //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy - //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy + //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy jmp b1 //SEG16 main::@1 b1: @@ -1513,12 +1513,12 @@ main: { sec sbc #xd sta e - //SEG26 [11] phi from main::@1 main::@3 to main::@2 + //SEG26 [11] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy - //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy - //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy + //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy jmp b2 //SEG30 main::@2 b2: @@ -1578,7 +1578,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -1592,28 +1592,28 @@ main: { .label cursor = 2 .label e = 4 .label y = 5 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1 + //SEG9 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- xby=coby1 ldx #4 - //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1 + //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 sta cursor+1 jmp b1 - //SEG11 [2] phi from main::@2 to main::@1 + //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy - //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy - //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy - //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy + //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy //SEG16 main::@1 b1: //SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1 @@ -1652,12 +1652,12 @@ main: { sec sbc #xd sta e - //SEG26 [11] phi from main::@1 main::@3 to main::@2 + //SEG26 [11] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] b2_from_b1: b2_from_b3: - //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy - //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy - //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy + //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG30 main::@2 b2: //SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1 @@ -1683,7 +1683,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: @@ -1696,27 +1696,27 @@ main: { .label cursor = 2 .label e = 4 .label y = 5 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1 + //SEG9 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- xby=coby1 ldx #4 - //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1 + //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 sta cursor+1 jmp b1 - //SEG11 [2] phi from main::@2 to main::@1 - //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy - //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy - //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy - //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy + //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy //SEG16 main::@1 b1: //SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1 @@ -1755,10 +1755,10 @@ main: { sec sbc #xd sta e - //SEG26 [11] phi from main::@1 main::@3 to main::@2 - //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy - //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy - //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy + //SEG26 [11] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG30 main::@2 b2: //SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1 @@ -1782,7 +1782,7 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -1794,26 +1794,26 @@ main: { .label cursor = 2 .label e = 4 .label y = 5 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1 + //SEG9 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- xby=coby1 ldx #4 - //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1 + //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 sta cursor+1 jmp b1 - //SEG11 [2] phi from main::@2 to main::@1 - //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy - //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy - //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy - //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy + //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy //SEG16 main::@1 b1: //SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1 @@ -1851,10 +1851,10 @@ main: { sec sbc #xd sta e - //SEG26 [11] phi from main::@1 main::@3 to main::@2 - //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy - //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy - //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy + //SEG26 [11] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG30 main::@2 b2: //SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1 @@ -1873,7 +1873,7 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -1885,25 +1885,25 @@ main: { .label cursor = 2 .label e = 4 .label y = 5 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1 + //SEG9 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- xby=coby1 ldx #4 - //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1 + //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 sta cursor+1 - //SEG11 [2] phi from main::@2 to main::@1 - //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy - //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy - //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy - //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy + //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy //SEG16 main::@1 b1: //SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1 @@ -1941,10 +1941,10 @@ main: { sec sbc #xd sta e - //SEG26 [11] phi from main::@1 main::@3 to main::@2 - //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy - //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy - //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy + //SEG26 [11] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG30 main::@2 b2: //SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1 @@ -2006,7 +2006,7 @@ FINAL CODE .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -2018,25 +2018,25 @@ main: { .label cursor = 2 .label e = 4 .label y = 5 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::y#2 = (byte) 4 -- zpby1=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::y#2 = (byte) 4 [phi:main->main::@1#0] -- zpby1=coby1 lda #4 sta y - //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::e#3 = (const byte) main::yd#0/(byte) 2 [phi:main->main::@1#1] -- zpby1=coby1 lda #yd/2 sta e - //SEG9 [2] phi (byte) main::x#2 = (byte) 4 -- xby=coby1 + //SEG9 [2] phi (byte) main::x#2 = (byte) 4 [phi:main->main::@1#2] -- xby=coby1 ldx #4 - //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 -- zpptrby1=cowo1 + //SEG10 [2] phi (byte*) main::cursor#3 = (const byte[1000]) SCREEN#0+(byte) 4*(byte) 40+(byte) 4 [phi:main->main::@1#3] -- zpptrby1=cowo1 lda #SCREEN+4*$28+4 sta cursor+1 - //SEG11 [2] phi from main::@2 to main::@1 - //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 -- register_copy - //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 -- register_copy - //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 -- register_copy - //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 -- register_copy + //SEG11 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG12 [2] phi (byte) main::y#2 = (byte) main::y#4 [phi:main::@2->main::@1#0] -- register_copy + //SEG13 [2] phi (byte) main::e#3 = (byte) main::e#5 [phi:main::@2->main::@1#1] -- register_copy + //SEG14 [2] phi (byte) main::x#2 = (byte) main::x#1 [phi:main::@2->main::@1#2] -- register_copy + //SEG15 [2] phi (byte*) main::cursor#3 = (byte*) main::cursor#5 [phi:main::@2->main::@1#3] -- register_copy //SEG16 main::@1 b1: //SEG17 [3] *((byte*) main::cursor#3) ← (const byte) STAR#0 [ main::cursor#3 main::x#2 main::e#3 main::y#2 ] -- _star_zpptrby1=coby1 @@ -2074,10 +2074,10 @@ main: { sec sbc #xd sta e - //SEG26 [11] phi from main::@1 main::@3 to main::@2 - //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 -- register_copy - //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 -- register_copy - //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 -- register_copy + //SEG26 [11] phi from main::@1 main::@3 to main::@2 [phi:main::@1/main::@3->main::@2] + //SEG27 [11] phi (byte) main::y#4 = (byte) main::y#2 [phi:main::@1/main::@3->main::@2#0] -- register_copy + //SEG28 [11] phi (byte) main::e#5 = (byte) main::e#1 [phi:main::@1/main::@3->main::@2#1] -- register_copy + //SEG29 [11] phi (byte*) main::cursor#5 = (byte*) main::cursor#1 [phi:main::@1/main::@3->main::@2#2] -- register_copy //SEG30 main::@2 b2: //SEG31 [12] if((byte) main::x#1<(const byte) main::x1#0+(byte) 1) goto main::@1 [ main::cursor#5 main::x#1 main::e#5 main::y#4 ] -- xby_lt_coby1_then_la1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log index 91e5f649a..dd9249f16 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/bresenhamarr.log @@ -1183,29 +1183,29 @@ INITIAL ASM .label y = 6 //SEG1 @begin bbegin: -//SEG2 [0] phi from @begin to @1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: -//SEG3 [0] phi (byte) y#2 = (byte) 0 -- zpby1=coby1 +//SEG3 [0] phi (byte) y#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta y -//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 -- zpby1=coby1 +//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 [phi:@begin->@1#1] -- zpby1=coby1 lda #yd/2 sta e -//SEG5 [0] phi (byte) x#2 = (byte) 0 -- zpby1=coby1 +//SEG5 [0] phi (byte) x#2 = (byte) 0 [phi:@begin->@1#2] -- zpby1=coby1 lda #0 sta x -//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 -- zpwo1=coby1 +//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:@begin->@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 sta idx+1 jmp b1 -//SEG7 [0] phi from @2 to @1 +//SEG7 [0] phi from @2 to @1 [phi:@2->@1] b1_from_b2: -//SEG8 [0] phi (byte) y#2 = (byte) y#4 -- register_copy -//SEG9 [0] phi (byte) e#3 = (byte) e#5 -- register_copy -//SEG10 [0] phi (byte) x#2 = (byte) x#1 -- register_copy -//SEG11 [0] phi (word) idx#3 = (word) idx#5 -- register_copy +//SEG8 [0] phi (byte) y#2 = (byte) y#4 [phi:@2->@1#0] -- register_copy +//SEG9 [0] phi (byte) e#3 = (byte) e#5 [phi:@2->@1#1] -- register_copy +//SEG10 [0] phi (byte) x#2 = (byte) x#1 [phi:@2->@1#2] -- register_copy +//SEG11 [0] phi (word) idx#3 = (word) idx#5 [phi:@2->@1#3] -- register_copy jmp b1 //SEG12 @1 b1: @@ -1253,12 +1253,12 @@ b3: sec sbc #xd sta e -//SEG22 [9] phi from @1 @3 to @2 +//SEG22 [9] phi from @1 @3 to @2 [phi:@1/@3->@2] b2_from_b1: b2_from_b3: -//SEG23 [9] phi (byte) y#4 = (byte) y#2 -- register_copy -//SEG24 [9] phi (byte) e#5 = (byte) e#1 -- register_copy -//SEG25 [9] phi (word) idx#5 = (word) idx#1 -- register_copy +//SEG23 [9] phi (byte) y#4 = (byte) y#2 [phi:@1/@3->@2#0] -- register_copy +//SEG24 [9] phi (byte) e#5 = (byte) e#1 [phi:@1/@3->@2#1] -- register_copy +//SEG25 [9] phi (word) idx#5 = (word) idx#1 [phi:@1/@3->@2#2] -- register_copy jmp b2 //SEG26 @2 b2: @@ -1311,27 +1311,27 @@ ASSEMBLER .label y = 4 //SEG1 @begin bbegin: -//SEG2 [0] phi from @begin to @1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: -//SEG3 [0] phi (byte) y#2 = (byte) 0 -- zpby1=coby1 +//SEG3 [0] phi (byte) y#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta y -//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 -- yby=coby1 +//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 [phi:@begin->@1#1] -- yby=coby1 ldy #yd/2 -//SEG5 [0] phi (byte) x#2 = (byte) 0 -- xby=coby1 +//SEG5 [0] phi (byte) x#2 = (byte) 0 [phi:@begin->@1#2] -- xby=coby1 ldx #0 -//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 -- zpwo1=coby1 +//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:@begin->@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 sta idx+1 jmp b1 -//SEG7 [0] phi from @2 to @1 +//SEG7 [0] phi from @2 to @1 [phi:@2->@1] b1_from_b2: -//SEG8 [0] phi (byte) y#2 = (byte) y#4 -- register_copy -//SEG9 [0] phi (byte) e#3 = (byte) e#5 -- register_copy -//SEG10 [0] phi (byte) x#2 = (byte) x#1 -- register_copy -//SEG11 [0] phi (word) idx#3 = (word) idx#5 -- register_copy +//SEG8 [0] phi (byte) y#2 = (byte) y#4 [phi:@2->@1#0] -- register_copy +//SEG9 [0] phi (byte) e#3 = (byte) e#5 [phi:@2->@1#1] -- register_copy +//SEG10 [0] phi (byte) x#2 = (byte) x#1 [phi:@2->@1#2] -- register_copy +//SEG11 [0] phi (word) idx#3 = (word) idx#5 [phi:@2->@1#3] -- register_copy //SEG12 @1 b1: //SEG13 [1] *((const byte[1000]) screen#0 + (word) idx#3) ← (const byte) STAR#0 [ idx#3 x#2 e#3 y#2 ] -- cowo1_staridx_zpwo1=coby2 @@ -1377,12 +1377,12 @@ b3: sec sbc #xd tay -//SEG22 [9] phi from @1 @3 to @2 +//SEG22 [9] phi from @1 @3 to @2 [phi:@1/@3->@2] b2_from_b1: b2_from_b3: -//SEG23 [9] phi (byte) y#4 = (byte) y#2 -- register_copy -//SEG24 [9] phi (byte) e#5 = (byte) e#1 -- register_copy -//SEG25 [9] phi (word) idx#5 = (word) idx#1 -- register_copy +//SEG23 [9] phi (byte) y#4 = (byte) y#2 [phi:@1/@3->@2#0] -- register_copy +//SEG24 [9] phi (byte) e#5 = (byte) e#1 [phi:@1/@3->@2#1] -- register_copy +//SEG25 [9] phi (word) idx#5 = (word) idx#1 [phi:@1/@3->@2#2] -- register_copy //SEG26 @2 b2: //SEG27 [10] if((byte) x#1<(const byte) x1#0+(byte) 1) goto @1 [ idx#5 x#1 e#5 y#4 ] -- xby_lt_coby1_then_la1 @@ -1410,25 +1410,25 @@ ASSEMBLER .label y = 4 //SEG1 @begin bbegin: -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) y#2 = (byte) 0 -- zpby1=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) y#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta y -//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 -- yby=coby1 +//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 [phi:@begin->@1#1] -- yby=coby1 ldy #yd/2 -//SEG5 [0] phi (byte) x#2 = (byte) 0 -- xby=coby1 +//SEG5 [0] phi (byte) x#2 = (byte) 0 [phi:@begin->@1#2] -- xby=coby1 ldx #0 -//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 -- zpwo1=coby1 +//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:@begin->@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 sta idx+1 jmp b1 -//SEG7 [0] phi from @2 to @1 -//SEG8 [0] phi (byte) y#2 = (byte) y#4 -- register_copy -//SEG9 [0] phi (byte) e#3 = (byte) e#5 -- register_copy -//SEG10 [0] phi (byte) x#2 = (byte) x#1 -- register_copy -//SEG11 [0] phi (word) idx#3 = (word) idx#5 -- register_copy +//SEG7 [0] phi from @2 to @1 [phi:@2->@1] +//SEG8 [0] phi (byte) y#2 = (byte) y#4 [phi:@2->@1#0] -- register_copy +//SEG9 [0] phi (byte) e#3 = (byte) e#5 [phi:@2->@1#1] -- register_copy +//SEG10 [0] phi (byte) x#2 = (byte) x#1 [phi:@2->@1#2] -- register_copy +//SEG11 [0] phi (word) idx#3 = (word) idx#5 [phi:@2->@1#3] -- register_copy //SEG12 @1 b1: //SEG13 [1] *((const byte[1000]) screen#0 + (word) idx#3) ← (const byte) STAR#0 [ idx#3 x#2 e#3 y#2 ] -- cowo1_staridx_zpwo1=coby2 @@ -1474,10 +1474,10 @@ b3: sec sbc #xd tay -//SEG22 [9] phi from @1 @3 to @2 -//SEG23 [9] phi (byte) y#4 = (byte) y#2 -- register_copy -//SEG24 [9] phi (byte) e#5 = (byte) e#1 -- register_copy -//SEG25 [9] phi (word) idx#5 = (word) idx#1 -- register_copy +//SEG22 [9] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG23 [9] phi (byte) y#4 = (byte) y#2 [phi:@1/@3->@2#0] -- register_copy +//SEG24 [9] phi (byte) e#5 = (byte) e#1 [phi:@1/@3->@2#1] -- register_copy +//SEG25 [9] phi (word) idx#5 = (word) idx#1 [phi:@1/@3->@2#2] -- register_copy //SEG26 @2 b2: //SEG27 [10] if((byte) x#1<(const byte) x1#0+(byte) 1) goto @1 [ idx#5 x#1 e#5 y#4 ] -- xby_lt_coby1_then_la1 @@ -1501,25 +1501,25 @@ ASSEMBLER .label idx = 2 .label y = 4 //SEG1 @begin -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) y#2 = (byte) 0 -- zpby1=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) y#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta y -//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 -- yby=coby1 +//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 [phi:@begin->@1#1] -- yby=coby1 ldy #yd/2 -//SEG5 [0] phi (byte) x#2 = (byte) 0 -- xby=coby1 +//SEG5 [0] phi (byte) x#2 = (byte) 0 [phi:@begin->@1#2] -- xby=coby1 ldx #0 -//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 -- zpwo1=coby1 +//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:@begin->@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 sta idx+1 jmp b1 -//SEG7 [0] phi from @2 to @1 -//SEG8 [0] phi (byte) y#2 = (byte) y#4 -- register_copy -//SEG9 [0] phi (byte) e#3 = (byte) e#5 -- register_copy -//SEG10 [0] phi (byte) x#2 = (byte) x#1 -- register_copy -//SEG11 [0] phi (word) idx#3 = (word) idx#5 -- register_copy +//SEG7 [0] phi from @2 to @1 [phi:@2->@1] +//SEG8 [0] phi (byte) y#2 = (byte) y#4 [phi:@2->@1#0] -- register_copy +//SEG9 [0] phi (byte) e#3 = (byte) e#5 [phi:@2->@1#1] -- register_copy +//SEG10 [0] phi (byte) x#2 = (byte) x#1 [phi:@2->@1#2] -- register_copy +//SEG11 [0] phi (word) idx#3 = (word) idx#5 [phi:@2->@1#3] -- register_copy //SEG12 @1 b1: //SEG13 [1] *((const byte[1000]) screen#0 + (word) idx#3) ← (const byte) STAR#0 [ idx#3 x#2 e#3 y#2 ] -- cowo1_staridx_zpwo1=coby2 @@ -1564,10 +1564,10 @@ b1: sec sbc #xd tay -//SEG22 [9] phi from @1 @3 to @2 -//SEG23 [9] phi (byte) y#4 = (byte) y#2 -- register_copy -//SEG24 [9] phi (byte) e#5 = (byte) e#1 -- register_copy -//SEG25 [9] phi (word) idx#5 = (word) idx#1 -- register_copy +//SEG22 [9] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG23 [9] phi (byte) y#4 = (byte) y#2 [phi:@1/@3->@2#0] -- register_copy +//SEG24 [9] phi (byte) e#5 = (byte) e#1 [phi:@1/@3->@2#1] -- register_copy +//SEG25 [9] phi (word) idx#5 = (word) idx#1 [phi:@1/@3->@2#2] -- register_copy //SEG26 @2 b2: //SEG27 [10] if((byte) x#1<(const byte) x1#0+(byte) 1) goto @1 [ idx#5 x#1 e#5 y#4 ] -- xby_lt_coby1_then_la1 @@ -1588,24 +1588,24 @@ ASSEMBLER .label idx = 2 .label y = 4 //SEG1 @begin -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) y#2 = (byte) 0 -- zpby1=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) y#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta y -//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 -- yby=coby1 +//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 [phi:@begin->@1#1] -- yby=coby1 ldy #yd/2 -//SEG5 [0] phi (byte) x#2 = (byte) 0 -- xby=coby1 +//SEG5 [0] phi (byte) x#2 = (byte) 0 [phi:@begin->@1#2] -- xby=coby1 ldx #0 -//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 -- zpwo1=coby1 +//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:@begin->@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 sta idx+1 -//SEG7 [0] phi from @2 to @1 -//SEG8 [0] phi (byte) y#2 = (byte) y#4 -- register_copy -//SEG9 [0] phi (byte) e#3 = (byte) e#5 -- register_copy -//SEG10 [0] phi (byte) x#2 = (byte) x#1 -- register_copy -//SEG11 [0] phi (word) idx#3 = (word) idx#5 -- register_copy +//SEG7 [0] phi from @2 to @1 [phi:@2->@1] +//SEG8 [0] phi (byte) y#2 = (byte) y#4 [phi:@2->@1#0] -- register_copy +//SEG9 [0] phi (byte) e#3 = (byte) e#5 [phi:@2->@1#1] -- register_copy +//SEG10 [0] phi (byte) x#2 = (byte) x#1 [phi:@2->@1#2] -- register_copy +//SEG11 [0] phi (word) idx#3 = (word) idx#5 [phi:@2->@1#3] -- register_copy //SEG12 @1 b1: //SEG13 [1] *((const byte[1000]) screen#0 + (word) idx#3) ← (const byte) STAR#0 [ idx#3 x#2 e#3 y#2 ] -- cowo1_staridx_zpwo1=coby2 @@ -1650,10 +1650,10 @@ b1: sec sbc #xd tay -//SEG22 [9] phi from @1 @3 to @2 -//SEG23 [9] phi (byte) y#4 = (byte) y#2 -- register_copy -//SEG24 [9] phi (byte) e#5 = (byte) e#1 -- register_copy -//SEG25 [9] phi (word) idx#5 = (word) idx#1 -- register_copy +//SEG22 [9] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG23 [9] phi (byte) y#4 = (byte) y#2 [phi:@1/@3->@2#0] -- register_copy +//SEG24 [9] phi (byte) e#5 = (byte) e#1 [phi:@1/@3->@2#1] -- register_copy +//SEG25 [9] phi (word) idx#5 = (word) idx#1 [phi:@1/@3->@2#2] -- register_copy //SEG26 @2 b2: //SEG27 [10] if((byte) x#1<(const byte) x1#0+(byte) 1) goto @1 [ idx#5 x#1 e#5 y#4 ] -- xby_lt_coby1_then_la1 @@ -1715,24 +1715,24 @@ FINAL CODE .label idx = 2 .label y = 4 //SEG1 @begin -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) y#2 = (byte) 0 -- zpby1=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) y#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta y -//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 -- yby=coby1 +//SEG4 [0] phi (byte) e#3 = (const byte) yd#0/(byte) 2 [phi:@begin->@1#1] -- yby=coby1 ldy #yd/2 -//SEG5 [0] phi (byte) x#2 = (byte) 0 -- xby=coby1 +//SEG5 [0] phi (byte) x#2 = (byte) 0 [phi:@begin->@1#2] -- xby=coby1 ldx #0 -//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 -- zpwo1=coby1 +//SEG6 [0] phi (word) idx#3 = (byte) 0+(byte) 0*(byte) 40 [phi:@begin->@1#3] -- zpwo1=coby1 lda #0+0*$28 sta idx lda #0 sta idx+1 -//SEG7 [0] phi from @2 to @1 -//SEG8 [0] phi (byte) y#2 = (byte) y#4 -- register_copy -//SEG9 [0] phi (byte) e#3 = (byte) e#5 -- register_copy -//SEG10 [0] phi (byte) x#2 = (byte) x#1 -- register_copy -//SEG11 [0] phi (word) idx#3 = (word) idx#5 -- register_copy +//SEG7 [0] phi from @2 to @1 [phi:@2->@1] +//SEG8 [0] phi (byte) y#2 = (byte) y#4 [phi:@2->@1#0] -- register_copy +//SEG9 [0] phi (byte) e#3 = (byte) e#5 [phi:@2->@1#1] -- register_copy +//SEG10 [0] phi (byte) x#2 = (byte) x#1 [phi:@2->@1#2] -- register_copy +//SEG11 [0] phi (word) idx#3 = (word) idx#5 [phi:@2->@1#3] -- register_copy //SEG12 @1 b1: //SEG13 [1] *((const byte[1000]) screen#0 + (word) idx#3) ← (const byte) STAR#0 [ idx#3 x#2 e#3 y#2 ] -- cowo1_staridx_zpwo1=coby2 @@ -1777,10 +1777,10 @@ b1: sec sbc #xd tay -//SEG22 [9] phi from @1 @3 to @2 -//SEG23 [9] phi (byte) y#4 = (byte) y#2 -- register_copy -//SEG24 [9] phi (byte) e#5 = (byte) e#1 -- register_copy -//SEG25 [9] phi (word) idx#5 = (word) idx#1 -- register_copy +//SEG22 [9] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG23 [9] phi (byte) y#4 = (byte) y#2 [phi:@1/@3->@2#0] -- register_copy +//SEG24 [9] phi (byte) e#5 = (byte) e#1 [phi:@1/@3->@2#1] -- register_copy +//SEG25 [9] phi (word) idx#5 = (word) idx#1 [phi:@1/@3->@2#2] -- register_copy //SEG26 @2 b2: //SEG27 [10] if((byte) x#1<(const byte) x1#0+(byte) 1) goto @1 [ idx#5 x#1 e#5 y#4 ] -- xby_lt_coby1_then_la1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log index 55f15a134..db59bf57f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/constantmin.log @@ -662,15 +662,15 @@ main: { //SEG6 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] -- _star_cowo1=coby2 lda #RED sta BGCOL - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 40 -- zpby1=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- zpby1=coby1 lda #$28 sta i jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 //SEG11 main::@1 b1: @@ -732,14 +732,14 @@ main: { //SEG6 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] -- _star_cowo1=coby2 lda #RED sta BGCOL - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 40 -- xby=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] -- cowo1_staridx_xby=coby2 @@ -780,13 +780,13 @@ main: { //SEG6 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] -- _star_cowo1=coby2 lda #RED sta BGCOL - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 40 -- xby=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] -- cowo1_staridx_xby=coby2 @@ -827,12 +827,12 @@ main: { //SEG6 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] -- _star_cowo1=coby2 lda #RED sta BGCOL - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 40 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] -- cowo1_staridx_xby=coby2 @@ -869,11 +869,11 @@ main: { //SEG6 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] -- _star_cowo1=coby2 lda #RED sta BGCOL - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 40 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] -- cowo1_staridx_xby=coby2 @@ -930,11 +930,11 @@ main: { //SEG6 [2] *((const byte*) BGCOL#0) ← (const byte) RED#0 [ ] -- _star_cowo1=coby2 lda #RED sta BGCOL - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 40 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 40 [phi:main->main::@1#0] -- xby=coby1 ldx #$28 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (const byte) STAR#0+(byte) 1 [ main::i#2 ] -- cowo1_staridx_xby=coby2 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log index c7793565f..fb5e68640 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/fibmem.log @@ -650,15 +650,15 @@ main: { //SEG6 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] -- _star_cowo1=coby2 lda #1 sta fibs+1 - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 //SEG11 main::@1 b1: @@ -730,14 +730,14 @@ main: { //SEG6 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] -- _star_cowo1=coby2 lda #1 sta fibs+1 - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -780,13 +780,13 @@ main: { //SEG6 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] -- _star_cowo1=coby2 lda #1 sta fibs+1 - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -829,12 +829,12 @@ main: { //SEG6 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] -- _star_cowo1=coby2 lda #1 sta fibs+1 - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -873,11 +873,11 @@ main: { //SEG6 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] -- _star_cowo1=coby2 lda #1 sta fibs+1 - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -934,11 +934,11 @@ main: { //SEG6 [2] *((const byte[15]) fibs#0+(byte) 1) ← (byte) 1 [ ] -- _star_cowo1=coby2 lda #1 sta fibs+1 - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[15]) fibs#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log index afea86355..e71c24b50 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/flipper-rex2.log @@ -4286,7 +4286,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -4298,22 +4298,22 @@ main: { .label _3 = 15 .label c = 2 //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_main: b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- zpby1=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- zpby1=coby1 lda #$19 sta c jmp b3 - //SEG10 [3] phi from main::@3 to main::@3 + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: jmp b3 - //SEG11 [3] phi from main::@6 to main::@3 + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] b3_from_b6: - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy jmp b3 //SEG13 main::@3 b3: @@ -4346,14 +4346,14 @@ main: { //SEG22 main::@7 b7: //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] flip_from_b7: jsr flip jmp b10 //SEG25 main::@10 b10: //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] plot_from_b10: jsr plot jmp b11 @@ -4374,39 +4374,39 @@ plot: { .label x = 7 .label line = 3 .label y = 5 - //SEG33 [15] phi from plot to plot::@1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- zpby1=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG37 [15] phi from plot::@3 to plot::@1 + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] b1_from_b3: - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy jmp b1 //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] b2_from_b1: - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- zpby1=coby1 + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- zpby1=coby1 lda #0 sta x - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 - //SEG45 [16] phi from plot::@2 to plot::@2 + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] b2_from_b2: - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy jmp b2 //SEG48 plot::@2 b2: @@ -4457,39 +4457,39 @@ flip: { .label c = 11 .label r = 8 .label i = 12 - //SEG61 [27] phi from flip to flip::@1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- zpby1=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- zpby1=coby1 lda #$f sta dstIdx - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- zpby1=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- zpby1=coby1 lda #0 sta srcIdx jmp b1 - //SEG65 [27] phi from flip::@4 to flip::@1 + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] b1_from_b4: - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy jmp b1 //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG74 [28] phi from flip::@2 to flip::@2 + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] b2_from_b2: - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy jmp b2 //SEG78 flip::@2 b2: @@ -4523,15 +4523,15 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1_from_b4 - //SEG89 [38] phi from flip::@4 to flip::@3 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- zpby1=coby1 + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- zpby1=coby1 lda #0 sta i jmp b3 - //SEG91 [38] phi from flip::@3 to flip::@3 + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] b3_from_b3: - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy jmp b3 //SEG93 flip::@3 b3: @@ -4557,15 +4557,15 @@ flip: { //SEG100 prepare prepare: { .label i = 13 - //SEG101 [45] phi from prepare to prepare::@1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- zpby1=coby1 + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG103 [45] phi from prepare::@1 to prepare::@1 + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] b1_from_b1: - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy jmp b1 //SEG105 prepare::@1 b1: @@ -4663,7 +4663,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -4671,21 +4671,21 @@ bend: //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_main: b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 - //SEG10 [3] phi from main::@3 to main::@3 + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: jmp b3 - //SEG11 [3] phi from main::@6 to main::@3 + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] b3_from_b6: - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -4710,13 +4710,13 @@ main: { //SEG22 main::@7 b7: //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] flip_from_b7: jsr flip //SEG25 main::@10 b10: //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] plot_from_b10: jsr plot //SEG28 main::@11 @@ -4732,36 +4732,36 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 jmp b1 - //SEG37 [15] phi from plot::@3 to plot::@1 + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] b1_from_b3: - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] b2_from_b1: - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 - //SEG45 [16] phi from plot::@2 to plot::@2 + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] b2_from_b2: - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -4799,36 +4799,36 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 jmp b1 - //SEG65 [27] phi from flip::@4 to flip::@1 + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] b1_from_b4: - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] b2_from_b1: - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG74 [28] phi from flip::@2 to flip::@2 + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] b2_from_b2: - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -4856,14 +4856,14 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1_from_b4 - //SEG89 [38] phi from flip::@4 to flip::@3 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 jmp b3 - //SEG91 [38] phi from flip::@3 to flip::@3 + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] b3_from_b3: - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -4882,14 +4882,14 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG103 [45] phi from prepare::@1 to prepare::@1 + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] b1_from_b1: - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby @@ -4936,26 +4936,26 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] prepare_from_main: jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 - //SEG10 [3] phi from main::@3 to main::@3 + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: jmp b3 - //SEG11 [3] phi from main::@6 to main::@3 - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -4980,12 +4980,12 @@ main: { //SEG22 main::@7 b7: //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG25 main::@10 b10: //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] jsr plot //SEG28 main::@11 b11: @@ -5000,33 +5000,33 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] b1_from_plot: - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 jmp b1 - //SEG37 [15] phi from plot::@3 to plot::@1 - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 - //SEG45 [16] phi from plot::@2 to plot::@2 - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -5064,33 +5064,33 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] b1_from_flip: - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 jmp b1 - //SEG65 [27] phi from flip::@4 to flip::@1 - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG74 [28] phi from flip::@2 to flip::@2 - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -5118,13 +5118,13 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1 - //SEG89 [38] phi from flip::@4 to flip::@3 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] b3_from_b4: - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 jmp b3 - //SEG91 [38] phi from flip::@3 to flip::@3 - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -5143,13 +5143,13 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] b1_from_prepare: - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG103 [45] phi from prepare::@1 to prepare::@1 - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby @@ -5192,24 +5192,24 @@ ASSEMBLER .const RASTER = $d012 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 - //SEG10 [3] phi from main::@3 to main::@3 + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: jmp b3 - //SEG11 [3] phi from main::@6 to main::@3 - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -5232,11 +5232,11 @@ main: { bne b3 //SEG22 main::@7 //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG25 main::@10 //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] jsr plot //SEG28 main::@11 //SEG29 [12] if(true) goto main::@3 [ ] -- true_then_la1 @@ -5249,32 +5249,32 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 jmp b1 - //SEG37 [15] phi from plot::@3 to plot::@1 - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy jmp b2 - //SEG45 [16] phi from plot::@2 to plot::@2 - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -5310,32 +5310,32 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 jmp b1 - //SEG65 [27] phi from flip::@4 to flip::@1 - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy jmp b2 - //SEG74 [28] phi from flip::@2 to flip::@2 - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -5362,12 +5362,12 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1 - //SEG89 [38] phi from flip::@4 to flip::@3 - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 jmp b3 - //SEG91 [38] phi from flip::@3 to flip::@3 - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -5385,12 +5385,12 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG103 [45] phi from prepare::@1 to prepare::@1 - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby @@ -5422,23 +5422,23 @@ ASSEMBLER .const RASTER = $d012 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 - //SEG10 [3] phi from main::@3 to main::@3 + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] b3_from_b3: - //SEG11 [3] phi from main::@6 to main::@3 - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -5461,11 +5461,11 @@ main: { bne b3 //SEG22 main::@7 //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG25 main::@10 //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] jsr plot //SEG28 main::@11 //SEG29 [12] if(true) goto main::@3 [ ] -- true_then_la1 @@ -5478,30 +5478,30 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 - //SEG37 [15] phi from plot::@3 to plot::@1 - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy - //SEG45 [16] phi from plot::@2 to plot::@2 - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -5537,30 +5537,30 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 - //SEG65 [27] phi from flip::@4 to flip::@1 - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy - //SEG74 [28] phi from flip::@2 to flip::@2 - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -5587,11 +5587,11 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1 - //SEG89 [38] phi from flip::@4 to flip::@3 - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 - //SEG91 [38] phi from flip::@3 to flip::@3 - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -5609,11 +5609,11 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 - //SEG103 [45] phi from prepare::@1 to prepare::@1 - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby @@ -5640,22 +5640,22 @@ ASSEMBLER .const RASTER = $d012 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 jmp b3 - //SEG10 [3] phi from main::@3 to main::@3 - //SEG11 [3] phi from main::@6 to main::@3 - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -5678,11 +5678,11 @@ main: { bne b3 //SEG22 main::@7 //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG25 main::@10 //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] jsr plot //SEG28 main::@11 //SEG29 [12] if(true) goto main::@3 [ ] -- true_then_la1 @@ -5695,30 +5695,30 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 - //SEG37 [15] phi from plot::@3 to plot::@1 - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy - //SEG45 [16] phi from plot::@2 to plot::@2 - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -5754,30 +5754,30 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 - //SEG65 [27] phi from flip::@4 to flip::@1 - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy - //SEG74 [28] phi from flip::@2 to flip::@2 - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -5804,11 +5804,11 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1 - //SEG89 [38] phi from flip::@4 to flip::@3 - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 - //SEG91 [38] phi from flip::@3 to flip::@3 - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -5826,11 +5826,11 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 - //SEG103 [45] phi from prepare::@1 to prepare::@1 - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby @@ -5856,21 +5856,21 @@ ASSEMBLER .const RASTER = $d012 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 - //SEG10 [3] phi from main::@3 to main::@3 - //SEG11 [3] phi from main::@6 to main::@3 - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -5893,11 +5893,11 @@ main: { bne b3 //SEG22 main::@7 //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG25 main::@10 //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] jsr plot //SEG28 main::@11 //SEG29 [12] if(true) goto main::@3 [ ] -- true_then_la1 @@ -5910,30 +5910,30 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 - //SEG37 [15] phi from plot::@3 to plot::@1 - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy - //SEG45 [16] phi from plot::@2 to plot::@2 - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -5969,30 +5969,30 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 - //SEG65 [27] phi from flip::@4 to flip::@1 - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy - //SEG74 [28] phi from flip::@2 to flip::@2 - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -6019,11 +6019,11 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1 - //SEG89 [38] phi from flip::@4 to flip::@3 - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 - //SEG91 [38] phi from flip::@3 to flip::@3 - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -6041,11 +6041,11 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 - //SEG103 [45] phi from prepare::@1 to prepare::@1 - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby @@ -6161,21 +6161,21 @@ FINAL CODE .const RASTER = $d012 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call prepare param-assignment [ ] - //SEG7 [44] phi from main to prepare + //SEG7 [44] phi from main to prepare [phi:main->prepare] jsr prepare - //SEG8 [3] phi from main main::@11 to main::@3 + //SEG8 [3] phi from main main::@11 to main::@3 [phi:main/main::@11->main::@3] b3_from_b11: - //SEG9 [3] phi (byte) main::c#2 = (byte) 25 -- xby=coby1 + //SEG9 [3] phi (byte) main::c#2 = (byte) 25 [phi:main/main::@11->main::@3#0] -- xby=coby1 ldx #$19 - //SEG10 [3] phi from main::@3 to main::@3 - //SEG11 [3] phi from main::@6 to main::@3 - //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG10 [3] phi from main::@3 to main::@3 [phi:main::@3->main::@3] + //SEG11 [3] phi from main::@6 to main::@3 [phi:main::@6->main::@3] + //SEG12 [3] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@6->main::@3#0] -- register_copy //SEG13 main::@3 b3: //SEG14 [4] (byte~) main::$1 ← * (const byte*) RASTER#0 [ main::c#2 main::$1 ] -- aby=_star_cowo1 @@ -6198,11 +6198,11 @@ main: { bne b3 //SEG22 main::@7 //SEG23 [10] call flip param-assignment [ ] - //SEG24 [26] phi from main::@7 to flip + //SEG24 [26] phi from main::@7 to flip [phi:main::@7->flip] jsr flip //SEG25 main::@10 //SEG26 [11] call plot param-assignment [ ] - //SEG27 [14] phi from main::@10 to plot + //SEG27 [14] phi from main::@10 to plot [phi:main::@10->plot] jsr plot //SEG28 main::@11 //SEG29 [12] if(true) goto main::@3 [ ] -- true_then_la1 @@ -6215,30 +6215,30 @@ main: { plot: { .label line = 2 .label y = 4 - //SEG33 [15] phi from plot to plot::@1 - //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 -- zpby1=coby1 + //SEG33 [15] phi from plot to plot::@1 [phi:plot->plot::@1] + //SEG34 [15] phi (byte) plot::y#2 = (byte) 16 [phi:plot->plot::@1#0] -- zpby1=coby1 lda #$10 sta y - //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 -- zpptrby1=cowo1 + //SEG35 [15] phi (byte*) plot::line#2 = (const byte[1000]) SCREEN#0+(byte) 5*(byte) 40+(byte) 12 [phi:plot->plot::@1#1] -- zpptrby1=cowo1 lda #SCREEN+5*$28+$c sta line+1 - //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 -- xby=coby1 + //SEG36 [15] phi (byte) plot::i#3 = (byte) 0 [phi:plot->plot::@1#2] -- xby=coby1 ldx #0 - //SEG37 [15] phi from plot::@3 to plot::@1 - //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 -- register_copy - //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 -- register_copy - //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 -- register_copy + //SEG37 [15] phi from plot::@3 to plot::@1 [phi:plot::@3->plot::@1] + //SEG38 [15] phi (byte) plot::y#2 = (byte) plot::y#1 [phi:plot::@3->plot::@1#0] -- register_copy + //SEG39 [15] phi (byte*) plot::line#2 = (byte*) plot::line#1 [phi:plot::@3->plot::@1#1] -- register_copy + //SEG40 [15] phi (byte) plot::i#3 = (byte) plot::i#1 [phi:plot::@3->plot::@1#2] -- register_copy //SEG41 plot::@1 b1: - //SEG42 [16] phi from plot::@1 to plot::@2 - //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 -- yby=coby1 + //SEG42 [16] phi from plot::@1 to plot::@2 [phi:plot::@1->plot::@2] + //SEG43 [16] phi (byte) plot::x#2 = (byte) 0 [phi:plot::@1->plot::@2#0] -- yby=coby1 ldy #0 - //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 -- register_copy - //SEG45 [16] phi from plot::@2 to plot::@2 - //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 -- register_copy - //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 -- register_copy + //SEG44 [16] phi (byte) plot::i#2 = (byte) plot::i#3 [phi:plot::@1->plot::@2#1] -- register_copy + //SEG45 [16] phi from plot::@2 to plot::@2 [phi:plot::@2->plot::@2] + //SEG46 [16] phi (byte) plot::x#2 = (byte) plot::x#1 [phi:plot::@2->plot::@2#0] -- register_copy + //SEG47 [16] phi (byte) plot::i#2 = (byte) plot::i#1 [phi:plot::@2->plot::@2#1] -- register_copy //SEG48 plot::@2 b2: //SEG49 [17] (byte~) plot::$3 ← (const byte[256]) buffer1#0 *idx (byte) plot::i#2 [ plot::line#2 plot::y#2 plot::i#2 plot::x#2 plot::$3 ] -- aby=cowo1_staridx_xby @@ -6274,30 +6274,30 @@ plot: { flip: { .label c = 5 .label r = 4 - //SEG61 [27] phi from flip to flip::@1 - //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 -- zpby1=coby1 + //SEG61 [27] phi from flip to flip::@1 [phi:flip->flip::@1] + //SEG62 [27] phi (byte) flip::r#2 = (byte) 16 [phi:flip->flip::@1#0] -- zpby1=coby1 lda #$10 sta r - //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 -- yby=coby1 + //SEG63 [27] phi (byte) flip::dstIdx#5 = (byte) 15 [phi:flip->flip::@1#1] -- yby=coby1 ldy #$f - //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 -- xby=coby1 + //SEG64 [27] phi (byte) flip::srcIdx#3 = (byte) 0 [phi:flip->flip::@1#2] -- xby=coby1 ldx #0 - //SEG65 [27] phi from flip::@4 to flip::@1 - //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 -- register_copy - //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 -- register_copy - //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 -- register_copy + //SEG65 [27] phi from flip::@4 to flip::@1 [phi:flip::@4->flip::@1] + //SEG66 [27] phi (byte) flip::r#2 = (byte) flip::r#1 [phi:flip::@4->flip::@1#0] -- register_copy + //SEG67 [27] phi (byte) flip::dstIdx#5 = (byte) flip::dstIdx#2 [phi:flip::@4->flip::@1#1] -- register_copy + //SEG68 [27] phi (byte) flip::srcIdx#3 = (byte) flip::srcIdx#1 [phi:flip::@4->flip::@1#2] -- register_copy //SEG69 flip::@1 b1: - //SEG70 [28] phi from flip::@1 to flip::@2 - //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 -- zpby1=coby1 + //SEG70 [28] phi from flip::@1 to flip::@2 [phi:flip::@1->flip::@2] + //SEG71 [28] phi (byte) flip::c#2 = (byte) 16 [phi:flip::@1->flip::@2#0] -- zpby1=coby1 lda #$10 sta c - //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 -- register_copy - //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 -- register_copy - //SEG74 [28] phi from flip::@2 to flip::@2 - //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 -- register_copy - //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 -- register_copy - //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 -- register_copy + //SEG72 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#5 [phi:flip::@1->flip::@2#1] -- register_copy + //SEG73 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#3 [phi:flip::@1->flip::@2#2] -- register_copy + //SEG74 [28] phi from flip::@2 to flip::@2 [phi:flip::@2->flip::@2] + //SEG75 [28] phi (byte) flip::c#2 = (byte) flip::c#1 [phi:flip::@2->flip::@2#0] -- register_copy + //SEG76 [28] phi (byte) flip::dstIdx#3 = (byte) flip::dstIdx#1 [phi:flip::@2->flip::@2#1] -- register_copy + //SEG77 [28] phi (byte) flip::srcIdx#2 = (byte) flip::srcIdx#1 [phi:flip::@2->flip::@2#2] -- register_copy //SEG78 flip::@2 b2: //SEG79 [29] (byte~) flip::$0 ← (const byte[256]) buffer1#0 *idx (byte) flip::srcIdx#2 [ flip::r#2 flip::srcIdx#2 flip::dstIdx#3 flip::c#2 flip::$0 ] -- aby=cowo1_staridx_xby @@ -6324,11 +6324,11 @@ flip: { //SEG88 [37] if((byte) flip::r#1!=(byte) 0) goto flip::@1 [ flip::srcIdx#1 flip::dstIdx#2 flip::r#1 ] -- zpby1_neq_0_then_la1 lda r bne b1 - //SEG89 [38] phi from flip::@4 to flip::@3 - //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 -- xby=coby1 + //SEG89 [38] phi from flip::@4 to flip::@3 [phi:flip::@4->flip::@3] + //SEG90 [38] phi (byte) flip::i#2 = (byte) 0 [phi:flip::@4->flip::@3#0] -- xby=coby1 ldx #0 - //SEG91 [38] phi from flip::@3 to flip::@3 - //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 -- register_copy + //SEG91 [38] phi from flip::@3 to flip::@3 [phi:flip::@3->flip::@3] + //SEG92 [38] phi (byte) flip::i#2 = (byte) flip::i#1 [phi:flip::@3->flip::@3#0] -- register_copy //SEG93 flip::@3 b3: //SEG94 [39] (byte~) flip::$4 ← (const byte[256]) buffer2#0 *idx (byte) flip::i#2 [ flip::i#2 flip::$4 ] -- aby=cowo1_staridx_xby @@ -6346,11 +6346,11 @@ flip: { } //SEG100 prepare prepare: { - //SEG101 [45] phi from prepare to prepare::@1 - //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 -- xby=coby1 + //SEG101 [45] phi from prepare to prepare::@1 [phi:prepare->prepare::@1] + //SEG102 [45] phi (byte) prepare::i#2 = (byte) 0 [phi:prepare->prepare::@1#0] -- xby=coby1 ldx #0 - //SEG103 [45] phi from prepare::@1 to prepare::@1 - //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 -- register_copy + //SEG103 [45] phi from prepare::@1 to prepare::@1 [phi:prepare::@1->prepare::@1] + //SEG104 [45] phi (byte) prepare::i#2 = (byte) prepare::i#1 [phi:prepare::@1->prepare::@1#0] -- register_copy //SEG105 prepare::@1 b1: //SEG106 [46] *((const byte[256]) buffer1#0 + (byte) prepare::i#2) ← (byte) prepare::i#2 [ prepare::i#2 ] -- cowo1_staridx_xby=xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log index 1cebbb60c..f531a63c7 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/forclassicmin.log @@ -486,7 +486,7 @@ bbegin: //SEG2 @1 b1: //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] main_from_b1: jsr main jmp bend @@ -495,15 +495,15 @@ bend: //SEG6 main main: { .label i = 2 - //SEG7 [2] phi from main to main::@1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 //SEG11 main::@1 b1: @@ -546,21 +546,21 @@ bbegin: //SEG2 @1 b1: //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] main_from_b1: jsr main //SEG5 @end bend: //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -589,19 +589,19 @@ ASSEMBLER //SEG2 @1 b1: //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end bend: //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -629,17 +629,17 @@ ASSEMBLER //SEG1 @begin //SEG2 @1 //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -663,16 +663,16 @@ ASSEMBLER //SEG1 @begin //SEG2 @1 //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -709,16 +709,16 @@ FINAL CODE //SEG1 @begin //SEG2 @1 //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log index 574184f6c..596708cb1 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/forrangemin.log @@ -776,7 +776,7 @@ bbegin: //SEG2 @1 b1: //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] main_from_b1: jsr main jmp bend @@ -786,15 +786,15 @@ bend: main: { .label i = 2 .label j = 3 - //SEG7 [2] phi from main to main::@1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 //SEG11 main::@1 b1: @@ -807,15 +807,15 @@ main: { //SEG14 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] -- zpby1_neq_0_then_la1 lda i bne b1_from_b1 - //SEG15 [6] phi from main::@1 to main::@2 + //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG16 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 + //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy jmp b2 //SEG19 main::@2 b2: @@ -861,21 +861,21 @@ bbegin: //SEG2 @1 b1: //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] main_from_b1: jsr main //SEG5 @end bend: //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -886,14 +886,14 @@ main: { //SEG14 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] -- xby_neq_0_then_la1 cpx #0 bne b1_from_b1 - //SEG15 [6] phi from main::@1 to main::@2 + //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte) 100 -- xby=coby1 + //SEG16 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 + //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG19 main::@2 b2: //SEG20 [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] -- cowo1_staridx_xby=xby @@ -925,19 +925,19 @@ ASSEMBLER //SEG2 @1 b1: //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end bend: //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -948,13 +948,13 @@ main: { //SEG14 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG15 [6] phi from main::@1 to main::@2 + //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG16 [6] phi (byte) main::j#2 = (byte) 100 -- xby=coby1 + //SEG16 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG19 main::@2 b2: //SEG20 [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] -- cowo1_staridx_xby=xby @@ -984,17 +984,17 @@ ASSEMBLER //SEG1 @begin //SEG2 @1 //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -1005,12 +1005,12 @@ main: { //SEG14 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG15 [6] phi from main::@1 to main::@2 - //SEG16 [6] phi (byte) main::j#2 = (byte) 100 -- xby=coby1 + //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 jmp b2 - //SEG17 [6] phi from main::@2 to main::@2 - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG19 main::@2 b2: //SEG20 [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] -- cowo1_staridx_xby=xby @@ -1036,16 +1036,16 @@ ASSEMBLER //SEG1 @begin //SEG2 @1 //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -1056,11 +1056,11 @@ main: { //SEG14 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG15 [6] phi from main::@1 to main::@2 - //SEG16 [6] phi (byte) main::j#2 = (byte) 100 -- xby=coby1 + //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 - //SEG17 [6] phi from main::@2 to main::@2 - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG19 main::@2 b2: //SEG20 [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] -- cowo1_staridx_xby=xby @@ -1105,16 +1105,16 @@ FINAL CODE //SEG1 @begin //SEG2 @1 //SEG3 [0] call main param-assignment [ ] -//SEG4 [1] phi from @1 to main +//SEG4 [1] phi from @1 to main [phi:@1->main] jsr main //SEG5 @end //SEG6 main main: { - //SEG7 [2] phi from main to main::@1 - //SEG8 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [2] phi from main::@1 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [3] *((const byte*) SCREEN1#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -1125,11 +1125,11 @@ main: { //SEG14 [5] if((byte) main::i#1!=(byte) 0) goto main::@1 [ main::i#1 ] -- xby_neq_0_then_la1 cpx #0 bne b1 - //SEG15 [6] phi from main::@1 to main::@2 - //SEG16 [6] phi (byte) main::j#2 = (byte) 100 -- xby=coby1 + //SEG15 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG16 [6] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #$64 - //SEG17 [6] phi from main::@2 to main::@2 - //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG17 [6] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG18 [6] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@2->main::@2#0] -- register_copy //SEG19 main::@2 b2: //SEG20 [7] *((const byte*) SCREEN2#0 + (byte) main::j#2) ← (byte) main::j#2 [ main::j#2 ] -- cowo1_staridx_xby=xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log index f2aea9ffe..eda040ffe 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/halfscii.log @@ -3587,23 +3587,23 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG9 [2] phi from main::@5 to main::@1 + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy jmp b1 //SEG12 main::@1 b1: @@ -3660,15 +3660,15 @@ main: { jmp b7 //SEG24 main::@7 b7: - //SEG25 [14] phi from main::@7 to main::@2 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- zpby1=coby1 + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- zpby1=coby1 lda #0+1 sta bits_gen_9 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- zpby1=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta bits_gen_9 jmp b2 @@ -3720,10 +3720,10 @@ main: { b8: //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: b3_from_b8: - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy jmp b3 //SEG44 main::@3 b3: @@ -3772,10 +3772,10 @@ main: { b9: //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen_6 - //SEG57 [38] phi from main::@3 main::@9 to main::@4 + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: b4_from_b9: - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy jmp b4 //SEG59 main::@4 b4: @@ -3821,10 +3821,10 @@ main: { b10: //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen_8 - //SEG71 [49] phi from main::@10 main::@4 to main::@5 + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: b5_from_b4: - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy jmp b5 //SEG73 main::@5 b5: @@ -3864,15 +3864,15 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- zpby1=coby1 lda #0 sta i jmp b6 - //SEG83 [56] phi from main::@6 to main::@6 + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy jmp b6 //SEG85 main::@6 b6: @@ -4147,23 +4147,23 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG9 [2] phi from main::@5 to main::@1 + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 ] -- zpptrby1=zpptrby2_plus_1 @@ -4203,14 +4203,14 @@ main: { bcc b2_from_b1 //SEG24 main::@7 b7: - //SEG25 [14] phi from main::@7 to main::@2 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- aby=coby1 + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- aby=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG29 main::@2 b2: @@ -4245,10 +4245,10 @@ main: { b8: //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: b3_from_b8: - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG44 main::@3 b3: //SEG45 [27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] -- zpby1=zpby1_rol_1 @@ -4281,10 +4281,10 @@ main: { b9: //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG57 [38] phi from main::@3 main::@9 to main::@4 + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: b4_from_b9: - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG59 main::@4 b4: //SEG60 [39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] -- zpby1=zpby1_rol_1 @@ -4316,10 +4316,10 @@ main: { b10: //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG71 [49] phi from main::@10 main::@4 to main::@5 + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: b5_from_b4: - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG73 main::@5 b5: //SEG74 [50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#7 ] -- aby=zpby1_rol_1 @@ -4355,14 +4355,14 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 - //SEG83 [56] phi from main::@6 to main::@6 + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy //SEG85 main::@6 b6: //SEG86 [57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -4417,23 +4417,23 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG9 [2] phi from main::@5 to main::@1 + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] b1_from_b5: - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 ] -- zpptrby1=zpptrby2_plus_1 @@ -4472,14 +4472,14 @@ main: { bcc b2_from_b1 //SEG24 main::@7 b7: - //SEG25 [14] phi from main::@7 to main::@2 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] b2_from_b7: - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- aby=coby1 + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- aby=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG29 main::@2 b2: @@ -4513,10 +4513,10 @@ main: { b8: //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] b3_from_b2: b3_from_b8: - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG44 main::@3 b3: //SEG45 [27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] -- zpby1=zpby1_rol_1 @@ -4548,10 +4548,10 @@ main: { b9: //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG57 [38] phi from main::@3 main::@9 to main::@4 + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] b4_from_b3: b4_from_b9: - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG59 main::@4 b4: //SEG60 [39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] -- zpby1=zpby1_rol_1 @@ -4582,10 +4582,10 @@ main: { b10: //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG71 [49] phi from main::@10 main::@4 to main::@5 + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] b5_from_b10: b5_from_b4: - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG73 main::@5 b5: //SEG74 [50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#7 ] -- aby=zpby1_rol_1 @@ -4621,14 +4621,14 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 - //SEG83 [56] phi from main::@6 to main::@6 + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] b6_from_b6: - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy //SEG85 main::@6 b6: //SEG86 [57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -4694,22 +4694,22 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG9 [2] phi from main::@5 to main::@1 - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 ] -- zpptrby1=zpptrby2_plus_1 @@ -4748,13 +4748,13 @@ main: { bcc b2_from_b1 //SEG24 main::@7 b7: - //SEG25 [14] phi from main::@7 to main::@2 - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- aby=coby1 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- aby=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG29 main::@2 b2: @@ -4788,8 +4788,8 @@ main: { b8: //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG44 main::@3 b3: //SEG45 [27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] -- zpby1=zpby1_rol_1 @@ -4821,8 +4821,8 @@ main: { b9: //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG57 [38] phi from main::@3 main::@9 to main::@4 - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG59 main::@4 b4: //SEG60 [39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] -- zpby1=zpby1_rol_1 @@ -4853,8 +4853,8 @@ main: { b10: //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG71 [49] phi from main::@10 main::@4 to main::@5 - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG73 main::@5 b5: //SEG74 [50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#7 ] -- aby=zpby1_rol_1 @@ -4890,13 +4890,13 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 - //SEG83 [56] phi from main::@6 to main::@6 - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy //SEG85 main::@6 b6: //SEG86 [57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -4956,21 +4956,21 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 jmp b1 - //SEG9 [2] phi from main::@5 to main::@1 - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 ] -- zpptrby1=zpptrby2_plus_1 @@ -5008,13 +5008,13 @@ main: { cmp #2 bcc b2_from_b1 //SEG24 main::@7 - //SEG25 [14] phi from main::@7 to main::@2 - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- aby=coby1 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- aby=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG29 main::@2 b2: @@ -5047,8 +5047,8 @@ main: { //SEG40 main::@8 //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG44 main::@3 b3: //SEG45 [27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] -- zpby1=zpby1_rol_1 @@ -5079,8 +5079,8 @@ main: { //SEG55 main::@9 //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG57 [38] phi from main::@3 main::@9 to main::@4 - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG59 main::@4 b4: //SEG60 [39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] -- zpby1=zpby1_rol_1 @@ -5110,8 +5110,8 @@ main: { //SEG69 main::@10 //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG71 [49] phi from main::@10 main::@4 to main::@5 - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG73 main::@5 b5: //SEG74 [50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#7 ] -- aby=zpby1_rol_1 @@ -5146,12 +5146,12 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 jmp b6 - //SEG83 [56] phi from main::@6 to main::@6 - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy //SEG85 main::@6 b6: //SEG86 [57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -5200,20 +5200,20 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 - //SEG9 [2] phi from main::@5 to main::@1 - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 ] -- zpptrby1=zpptrby2_plus_1 @@ -5251,13 +5251,13 @@ main: { cmp #2 bcc b2_from_b1 //SEG24 main::@7 - //SEG25 [14] phi from main::@7 to main::@2 - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- aby=coby1 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- aby=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG29 main::@2 b2: @@ -5290,8 +5290,8 @@ main: { //SEG40 main::@8 //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG44 main::@3 b3: //SEG45 [27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] -- zpby1=zpby1_rol_1 @@ -5322,8 +5322,8 @@ main: { //SEG55 main::@9 //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG57 [38] phi from main::@3 main::@9 to main::@4 - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG59 main::@4 b4: //SEG60 [39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] -- zpby1=zpby1_rol_1 @@ -5353,8 +5353,8 @@ main: { //SEG69 main::@10 //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG71 [49] phi from main::@10 main::@4 to main::@5 - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG73 main::@5 b5: //SEG74 [50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#7 ] -- aby=zpby1_rol_1 @@ -5389,11 +5389,11 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 - //SEG83 [56] phi from main::@6 to main::@6 - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy //SEG85 main::@6 b6: //SEG86 [57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby @@ -5564,20 +5564,20 @@ main: { //SEG5 [1] *((const byte*) PROCPORT#0) ← (byte) 50 [ ] -- _star_cowo1=coby2 lda #$32 sta PROCPORT - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 -- zpptrby1=cowo1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte*) main::charset4#10 = (const byte*) CHARSET4#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #CHARSET4 sta charset4+1 - //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::chargen#2 = (const byte*) CHARGEN#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #CHARGEN sta chargen+1 - //SEG9 [2] phi from main::@5 to main::@1 - //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 -- register_copy - //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 -- register_copy + //SEG9 [2] phi from main::@5 to main::@1 [phi:main::@5->main::@1] + //SEG10 [2] phi (byte*) main::charset4#10 = (byte*) main::charset4#1 [phi:main::@5->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::chargen#2 = (byte*) main::chargen#1 [phi:main::@5->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte*) main::chargen1#0 ← (byte*) main::chargen#2 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 ] -- zpptrby1=zpptrby2_plus_1 @@ -5615,13 +5615,13 @@ main: { cmp #2 bcc b2_from_b1 //SEG24 main::@7 - //SEG25 [14] phi from main::@7 to main::@2 - //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 -- aby=coby1 + //SEG25 [14] phi from main::@7 to main::@2 [phi:main::@7->main::@2] + //SEG26 [14] phi (byte) main::bits_gen#9 = (byte) 0+(byte) 1 [phi:main::@7->main::@2#0] -- aby=coby1 lda #0+1 jmp b2 - //SEG27 [14] phi from main::@1 to main::@2 + //SEG27 [14] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 -- aby=coby1 + //SEG28 [14] phi (byte) main::bits_gen#9 = (byte) 0 [phi:main::@1->main::@2#0] -- aby=coby1 lda #0 //SEG29 main::@2 b2: @@ -5654,8 +5654,8 @@ main: { //SEG40 main::@8 //SEG41 [25] (byte) main::bits_gen#4 ← (byte) main::bits_gen#1 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#4 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG42 [26] phi from main::@2 main::@8 to main::@3 - //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 -- register_copy + //SEG42 [26] phi from main::@2 main::@8 to main::@3 [phi:main::@2/main::@8->main::@3] + //SEG43 [26] phi (byte) main::bits_gen#11 = (byte) main::bits_gen#1 [phi:main::@2/main::@8->main::@3#0] -- register_copy //SEG44 main::@3 b3: //SEG45 [27] (byte) main::bits_gen#14 ← (byte) main::bits_gen#11 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#14 ] -- zpby1=zpby1_rol_1 @@ -5686,8 +5686,8 @@ main: { //SEG55 main::@9 //SEG56 [37] (byte) main::bits_gen#6 ← (byte) main::bits_gen#14 + (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#6 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG57 [38] phi from main::@3 main::@9 to main::@4 - //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 -- register_copy + //SEG57 [38] phi from main::@3 main::@9 to main::@4 [phi:main::@3/main::@9->main::@4] + //SEG58 [38] phi (byte) main::bits_gen#13 = (byte) main::bits_gen#14 [phi:main::@3/main::@9->main::@4#0] -- register_copy //SEG59 main::@4 b4: //SEG60 [39] (byte) main::bits_gen#16 ← (byte) main::bits_gen#13 << (byte) 1 [ main::chargen#2 main::charset4#10 main::chargen1#0 main::bits_gen#16 ] -- zpby1=zpby1_rol_1 @@ -5717,8 +5717,8 @@ main: { //SEG69 main::@10 //SEG70 [48] (byte) main::bits_gen#8 ← (byte) main::bits_gen#16 + (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#8 ] -- zpby1=zpby1_plus_1 inc bits_gen - //SEG71 [49] phi from main::@10 main::@4 to main::@5 - //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 -- register_copy + //SEG71 [49] phi from main::@10 main::@4 to main::@5 [phi:main::@10/main::@4->main::@5] + //SEG72 [49] phi (byte) main::bits_gen#15 = (byte) main::bits_gen#8 [phi:main::@10/main::@4->main::@5#0] -- register_copy //SEG73 main::@5 b5: //SEG74 [50] (byte) main::bits_gen#7 ← (byte) main::bits_gen#15 << (byte) 1 [ main::chargen#2 main::charset4#10 main::bits_gen#7 ] -- aby=zpby1_rol_1 @@ -5753,11 +5753,11 @@ main: { //SEG80 [55] *((const byte*) PROCPORT#0) ← (byte) 55 [ ] -- _star_cowo1=coby2 lda #$37 sta PROCPORT - //SEG81 [56] phi from main::@11 to main::@6 - //SEG82 [56] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG81 [56] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG82 [56] phi (byte) main::i#2 = (byte) 0 [phi:main::@11->main::@6#0] -- xby=coby1 ldx #0 - //SEG83 [56] phi from main::@6 to main::@6 - //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG83 [56] phi from main::@6 to main::@6 [phi:main::@6->main::@6] + //SEG84 [56] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@6->main::@6#0] -- register_copy //SEG85 main::@6 b6: //SEG86 [57] *((const byte*) SCREEN#0 + (byte) main::i#2) ← (byte) main::i#2 [ main::i#2 ] -- cowo1_staridx_xby=xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log index 10e9c4036..befb6e66f 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ifmin.log @@ -636,7 +636,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -645,15 +645,15 @@ bend: //SEG5 main main: { .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG8 [2] phi from main::@2 to main::@1 + //SEG8 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 //SEG10 main::@1 b1: @@ -704,21 +704,21 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG8 [2] phi from main::@2 to main::@1 + //SEG8 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] -- xby_ge_coby1_then_la1 @@ -751,19 +751,19 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG8 [2] phi from main::@2 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] -- xby_ge_coby1_then_la1 @@ -797,17 +797,17 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG8 [2] phi from main::@2 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] -- xby_ge_coby1_then_la1 @@ -835,16 +835,16 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi from main::@2 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] -- xby_ge_coby1_then_la1 @@ -886,16 +886,16 @@ FINAL CODE .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi from main::@2 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] if((byte) main::i#2>=(byte) 50) goto main::@2 [ main::i#2 ] -- xby_ge_coby1_then_la1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log index df0da198b..bde47b495 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemarray.log @@ -829,7 +829,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -840,19 +840,19 @@ main: { .label _0 = 4 .label j = 2 .label i = 3 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i - //SEG8 [2] phi (byte) main::j#3 = (byte) 0 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta j jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 -- register_copy + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy jmp b1 //SEG12 main::@1 b1: @@ -870,9 +870,9 @@ main: { lda j cmp #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::j#4 = (byte) 0 -- zpby1=coby1 + //SEG18 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta j jmp b2 @@ -891,9 +891,9 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 -- register_copy + //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -920,24 +920,24 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte) main::j#3 = (byte) 0 -- yby=coby1 + //SEG8 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 -- register_copy + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] -- aby=cowo1_staridx_yby @@ -949,9 +949,9 @@ main: { //SEG16 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] -- yby_neq_coby1_then_la1 cpy #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::j#4 = (byte) 0 -- yby=coby1 + //SEG18 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG19 main::@2 b2: @@ -966,9 +966,9 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 -- register_copy + //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -984,22 +984,22 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte) main::j#3 = (byte) 0 -- yby=coby1 + //SEG8 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] -- aby=cowo1_staridx_yby @@ -1011,9 +1011,9 @@ main: { //SEG16 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] -- yby_neq_coby1_then_la1 cpy #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::j#4 = (byte) 0 -- yby=coby1 + //SEG18 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG19 main::@2 b2: @@ -1028,8 +1028,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1045,20 +1045,20 @@ ASSEMBLER TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte) main::j#3 = (byte) 0 -- yby=coby1 + //SEG8 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] -- aby=cowo1_staridx_yby @@ -1070,8 +1070,8 @@ main: { //SEG16 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] -- yby_neq_coby1_then_la1 cpy #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 - //SEG18 [7] phi (byte) main::j#4 = (byte) 0 -- yby=coby1 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG19 main::@2 b2: @@ -1085,8 +1085,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1098,19 +1098,19 @@ ASSEMBLER TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte) main::j#3 = (byte) 0 -- yby=coby1 + //SEG8 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] -- aby=cowo1_staridx_yby @@ -1122,8 +1122,8 @@ main: { //SEG16 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] -- yby_neq_coby1_then_la1 cpy #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 - //SEG18 [7] phi (byte) main::j#4 = (byte) 0 -- yby=coby1 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG19 main::@2 b2: @@ -1137,8 +1137,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1173,19 +1173,19 @@ FINAL CODE TXT: .byte 3, 1, $d, 5, $c, $f, $14, $20 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte) main::j#3 = (byte) 0 -- yby=coby1 + //SEG8 [2] phi (byte) main::j#3 = (byte) 0 [phi:main->main::@1#1] -- yby=coby1 ldy #0 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::j#3 = (byte) main::j#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TXT#0 *idx (byte) main::j#3 [ main::j#3 main::i#2 main::$0 ] -- aby=cowo1_staridx_yby @@ -1197,8 +1197,8 @@ main: { //SEG16 [6] if((byte) main::j#1!=(byte) 8) goto main::@6 [ main::i#2 ] -- yby_neq_coby1_then_la1 cpy #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 - //SEG18 [7] phi (byte) main::j#4 = (byte) 0 -- yby=coby1 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi (byte) main::j#4 = (byte) 0 [phi:main::@1->main::@2#0] -- yby=coby1 ldy #0 //SEG19 main::@2 b2: @@ -1212,8 +1212,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::j#4 = (byte) main::j#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log index 8ebb294cd..ec8b695c9 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/inmemstring.log @@ -878,7 +878,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -889,21 +889,21 @@ main: { .label _0 = 5 .label i = 2 .label cursor = 3 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG8 [2] phi (byte) main::i#3 = (byte) 0 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 -- register_copy - //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 -- register_copy + //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy jmp b1 //SEG12 main::@1 b1: @@ -921,9 +921,9 @@ main: { lda i cmp #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::i#4 = (byte) 0 -- zpby1=coby1 + //SEG18 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #0 sta i jmp b2 @@ -950,9 +950,9 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 -- register_copy + //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -986,7 +986,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -994,20 +994,20 @@ bend: //SEG5 main main: { .label cursor = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG8 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 -- register_copy - //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 -- register_copy + //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] -- aby=cowo1_staridx_xby @@ -1020,9 +1020,9 @@ main: { //SEG16 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] -- xby_neq_coby1_then_la1 cpx #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::i#4 = (byte) 0 -- xby=coby1 + //SEG18 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 main::@2 b2: @@ -1046,9 +1046,9 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] b2_from_b6: - //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 -- register_copy + //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1065,26 +1065,26 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { .label cursor = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG8 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 -- register_copy - //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] -- aby=cowo1_staridx_xby @@ -1097,9 +1097,9 @@ main: { //SEG16 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] -- xby_neq_coby1_then_la1 cpx #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG18 [7] phi (byte) main::i#4 = (byte) 0 -- xby=coby1 + //SEG18 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 main::@2 b2: @@ -1123,8 +1123,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1140,24 +1140,24 @@ ASSEMBLER TEXT: .text "camelot " //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label cursor = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG8 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 -- register_copy - //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] -- aby=cowo1_staridx_xby @@ -1170,8 +1170,8 @@ main: { //SEG16 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] -- xby_neq_coby1_then_la1 cpx #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 - //SEG18 [7] phi (byte) main::i#4 = (byte) 0 -- xby=coby1 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 main::@2 b2: @@ -1194,8 +1194,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1207,23 +1207,23 @@ ASSEMBLER TEXT: .text "camelot " //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label cursor = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG8 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 -- register_copy - //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] -- aby=cowo1_staridx_xby @@ -1236,8 +1236,8 @@ main: { //SEG16 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] -- xby_neq_coby1_then_la1 cpx #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 - //SEG18 [7] phi (byte) main::i#4 = (byte) 0 -- xby=coby1 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 main::@2 b2: @@ -1260,8 +1260,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } @@ -1296,23 +1296,23 @@ FINAL CODE TEXT: .text "camelot " //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label cursor = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte*) main::cursor#2 = (const byte*) SCREEN#0 [phi:main->main::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG8 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#1] -- xby=coby1 ldx #0 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 -- register_copy - //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte*) main::cursor#2 = (byte*) main::cursor#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte) main::i#3 = (byte) main::i#4 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: //SEG13 [3] (byte~) main::$0 ← (const byte[]) TEXT#0 *idx (byte) main::i#3 [ main::i#3 main::cursor#2 main::$0 ] -- aby=cowo1_staridx_xby @@ -1325,8 +1325,8 @@ main: { //SEG16 [6] if((byte) main::i#1!=(byte) 8) goto main::@6 [ main::cursor#2 ] -- xby_neq_coby1_then_la1 cpx #8 bne b6 - //SEG17 [7] phi from main::@1 to main::@2 - //SEG18 [7] phi (byte) main::i#4 = (byte) 0 -- xby=coby1 + //SEG17 [7] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG18 [7] phi (byte) main::i#4 = (byte) 0 [phi:main::@1->main::@2#0] -- xby=coby1 ldx #0 //SEG19 main::@2 b2: @@ -1349,8 +1349,8 @@ main: { rts //SEG24 main::@6 b6: - //SEG25 [7] phi from main::@6 to main::@2 - //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 -- register_copy + //SEG25 [7] phi from main::@6 to main::@2 [phi:main::@6->main::@2] + //SEG26 [7] phi (byte) main::i#4 = (byte) main::i#1 [phi:main::@6->main::@2#0] -- register_copy jmp b2 } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log index 02a2a97bd..0c5fef6f9 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/iterarray.log @@ -534,7 +534,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -545,15 +545,15 @@ main: { .const buf = $1100 .label _1 = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 5 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- zpby1=coby1 lda #5 sta i jmp b1 - //SEG8 [2] phi from main::@1 to main::@1 + //SEG8 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 //SEG10 main::@1 b1: @@ -601,7 +601,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -609,14 +609,14 @@ bend: //SEG5 main main: { .const buf = $1100 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 5 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 jmp b1 - //SEG8 [2] phi from main::@1 to main::@1 + //SEG8 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] -- aby=xby_plus_coby1 @@ -645,20 +645,20 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { .const buf = $1100 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 5 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 jmp b1 - //SEG8 [2] phi from main::@1 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] -- aby=xby_plus_coby1 @@ -687,18 +687,18 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .const buf = $1100 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 5 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 jmp b1 - //SEG8 [2] phi from main::@1 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] -- aby=xby_plus_coby1 @@ -723,17 +723,17 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .const buf = $1100 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 5 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 - //SEG8 [2] phi from main::@1 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] -- aby=xby_plus_coby1 @@ -772,17 +772,17 @@ FINAL CODE //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .const buf = $1100 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 5 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 5 [phi:main->main::@1#0] -- xby=coby1 ldx #5 - //SEG8 [2] phi from main::@1 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$1 ← (byte) main::i#2 + (byte) 2+(byte) 2 [ main::i#2 main::$1 ] -- aby=xby_plus_coby1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/literals.log b/src/main/java/dk/camelot64/kickc/test/ref/literals.log index 1da0b0ef2..d29ab2e7d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/literals.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/literals.log @@ -812,15 +812,15 @@ main: { //SEG6 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] -- _star_cowo1=coby2 lda #num sta SCREEN+2 - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy jmp b1 //SEG11 main::@1 b1: @@ -893,14 +893,14 @@ main: { //SEG6 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] -- _star_cowo1=coby2 lda #num sta SCREEN+2 - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] b1_from_b1: - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -946,13 +946,13 @@ main: { //SEG6 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] -- _star_cowo1=coby2 lda #num sta SCREEN+2 - //SEG7 [3] phi from main to main::@1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -998,12 +998,12 @@ main: { //SEG6 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] -- _star_cowo1=coby2 lda #num sta SCREEN+2 - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 jmp b1 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -1045,11 +1045,11 @@ main: { //SEG6 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] -- _star_cowo1=coby2 lda #num sta SCREEN+2 - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby @@ -1115,11 +1115,11 @@ main: { //SEG6 [2] *((const byte*) SCREEN#0+(byte) 2) ← (const byte) num#0 [ ] -- _star_cowo1=coby2 lda #num sta SCREEN+2 - //SEG7 [3] phi from main to main::@1 - //SEG8 [3] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG7 [3] phi from main to main::@1 [phi:main->main::@1] + //SEG8 [3] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG9 [3] phi from main::@1 to main::@1 - //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [3] phi from main::@1 to main::@1 [phi:main::@1->main::@1] + //SEG10 [3] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@1->main::@1#0] -- register_copy //SEG11 main::@1 b1: //SEG12 [4] (byte~) main::$1 ← (const byte[]) str#0 *idx (byte) main::i#2 [ main::i#2 main::$1 ] -- aby=cowo1_staridx_xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/liverange.log b/src/main/java/dk/camelot64/kickc/test/ref/liverange.log index ededf151a..edf4cc896 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/liverange.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/liverange.log @@ -668,7 +668,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -681,9 +681,9 @@ main: { .label a = 4 .label a_2 = 6 //SEG6 [2] call inc param-assignment [ inc::return#0 inc::$0 ] - //SEG7 [9] phi from main to inc + //SEG7 [9] phi from main to inc [phi:main->inc] inc_from_main: - //SEG8 [9] phi (byte) i#11 = (byte) 0 -- zpby1=coby1 + //SEG8 [9] phi (byte) i#11 = (byte) 0 [phi:main->inc#0] -- zpby1=coby1 lda #0 sta i jsr inc @@ -699,9 +699,9 @@ main: { adc #4 sta a //SEG12 [5] call inc param-assignment [ inc::return#0 main::a#1 ] - //SEG13 [9] phi from main::@1 to inc + //SEG13 [9] phi from main::@1 to inc [phi:main::@1->inc] inc_from_b1: - //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 -- register_copy + //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 [phi:main::@1->inc#0] -- register_copy jsr inc jmp b2 //SEG15 main::@2 @@ -776,7 +776,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -785,9 +785,9 @@ bend: main: { .label a = 2 //SEG6 [2] call inc param-assignment [ inc::return#0 inc::$0 ] - //SEG7 [9] phi from main to inc + //SEG7 [9] phi from main to inc [phi:main->inc] inc_from_main: - //SEG8 [9] phi (byte) i#11 = (byte) 0 -- xby=coby1 + //SEG8 [9] phi (byte) i#11 = (byte) 0 [phi:main->inc#0] -- xby=coby1 ldx #0 jsr inc //SEG9 main::@1 @@ -799,9 +799,9 @@ main: { adc #4 sta a //SEG12 [5] call inc param-assignment [ inc::return#0 main::a#1 ] - //SEG13 [9] phi from main::@1 to inc + //SEG13 [9] phi from main::@1 to inc [phi:main::@1->inc] inc_from_b1: - //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 -- register_copy + //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 [phi:main::@1->inc#0] -- register_copy jsr inc //SEG15 main::@2 b2: @@ -837,7 +837,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: @@ -845,9 +845,9 @@ bend: main: { .label a = 2 //SEG6 [2] call inc param-assignment [ inc::return#0 inc::$0 ] - //SEG7 [9] phi from main to inc + //SEG7 [9] phi from main to inc [phi:main->inc] inc_from_main: - //SEG8 [9] phi (byte) i#11 = (byte) 0 -- xby=coby1 + //SEG8 [9] phi (byte) i#11 = (byte) 0 [phi:main->inc#0] -- xby=coby1 ldx #0 jsr inc //SEG9 main::@1 @@ -859,9 +859,9 @@ main: { adc #4 sta a //SEG12 [5] call inc param-assignment [ inc::return#0 main::a#1 ] - //SEG13 [9] phi from main::@1 to inc + //SEG13 [9] phi from main::@1 to inc [phi:main::@1->inc] inc_from_b1: - //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 -- register_copy + //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 [phi:main::@1->inc#0] -- register_copy jsr inc //SEG15 main::@2 b2: @@ -903,15 +903,15 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label a = 2 //SEG6 [2] call inc param-assignment [ inc::return#0 inc::$0 ] - //SEG7 [9] phi from main to inc - //SEG8 [9] phi (byte) i#11 = (byte) 0 -- xby=coby1 + //SEG7 [9] phi from main to inc [phi:main->inc] + //SEG8 [9] phi (byte) i#11 = (byte) 0 [phi:main->inc#0] -- xby=coby1 ldx #0 jsr inc //SEG9 main::@1 @@ -922,8 +922,8 @@ main: { adc #4 sta a //SEG12 [5] call inc param-assignment [ inc::return#0 main::a#1 ] - //SEG13 [9] phi from main::@1 to inc - //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 -- register_copy + //SEG13 [9] phi from main::@1 to inc [phi:main::@1->inc] + //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 [phi:main::@1->inc#0] -- register_copy jsr inc //SEG15 main::@2 //SEG16 [6] (byte~) main::$2 ← (byte) inc::return#0 [ main::a#1 main::$2 ] @@ -980,15 +980,15 @@ FINAL CODE //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label a = 2 //SEG6 [2] call inc param-assignment [ inc::return#0 inc::$0 ] - //SEG7 [9] phi from main to inc - //SEG8 [9] phi (byte) i#11 = (byte) 0 -- xby=coby1 + //SEG7 [9] phi from main to inc [phi:main->inc] + //SEG8 [9] phi (byte) i#11 = (byte) 0 [phi:main->inc#0] -- xby=coby1 ldx #0 jsr inc //SEG9 main::@1 @@ -999,8 +999,8 @@ main: { adc #4 sta a //SEG12 [5] call inc param-assignment [ inc::return#0 main::a#1 ] - //SEG13 [9] phi from main::@1 to inc - //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 -- register_copy + //SEG13 [9] phi from main::@1 to inc [phi:main::@1->inc] + //SEG14 [9] phi (byte) i#11 = (byte~) inc::$0 [phi:main::@1->inc#0] -- register_copy jsr inc //SEG15 main::@2 //SEG16 [6] (byte~) main::$2 ← (byte) inc::return#0 [ main::a#1 main::$2 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log b/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log index 8339c6b2b..6fd65ebdb 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopmin.log @@ -471,19 +471,19 @@ INITIAL ASM .label s = 3 //SEG1 @begin bbegin: -//SEG2 [0] phi from @begin to @1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: -//SEG3 [0] phi (byte) s#2 = (byte) 0 -- zpby1=coby1 +//SEG3 [0] phi (byte) s#2 = (byte) 0 [phi:@begin->@1#0] -- zpby1=coby1 lda #0 sta s -//SEG4 [0] phi (byte) i#2 = (byte) 10 -- zpby1=coby1 +//SEG4 [0] phi (byte) i#2 = (byte) 10 [phi:@begin->@1#1] -- zpby1=coby1 lda #$a sta i jmp b1 -//SEG5 [0] phi from @2 to @1 +//SEG5 [0] phi from @2 to @1 [phi:@2->@1] b1_from_b2: -//SEG6 [0] phi (byte) s#2 = (byte) s#4 -- register_copy -//SEG7 [0] phi (byte) i#2 = (byte) i#1 -- register_copy +//SEG6 [0] phi (byte) s#2 = (byte) s#4 [phi:@2->@1#0] -- register_copy +//SEG7 [0] phi (byte) i#2 = (byte) i#1 [phi:@2->@1#1] -- register_copy jmp b1 //SEG8 @1 b1: @@ -500,10 +500,10 @@ b3: clc adc i sta s -//SEG12 [3] phi from @1 @3 to @2 +//SEG12 [3] phi from @1 @3 to @2 [phi:@1/@3->@2] b2_from_b1: b2_from_b3: -//SEG13 [3] phi (byte) s#4 = (byte) s#2 -- register_copy +//SEG13 [3] phi (byte) s#4 = (byte) s#2 [phi:@1/@3->@2#0] -- register_copy jmp b2 //SEG14 @2 b2: @@ -533,17 +533,17 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin bbegin: -//SEG2 [0] phi from @begin to @1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] b1_from_bbegin: -//SEG3 [0] phi (byte) s#2 = (byte) 0 -- aby=coby1 +//SEG3 [0] phi (byte) s#2 = (byte) 0 [phi:@begin->@1#0] -- aby=coby1 lda #0 -//SEG4 [0] phi (byte) i#2 = (byte) 10 -- xby=coby1 +//SEG4 [0] phi (byte) i#2 = (byte) 10 [phi:@begin->@1#1] -- xby=coby1 ldx #$a jmp b1 -//SEG5 [0] phi from @2 to @1 +//SEG5 [0] phi from @2 to @1 [phi:@2->@1] b1_from_b2: -//SEG6 [0] phi (byte) s#2 = (byte) s#4 -- register_copy -//SEG7 [0] phi (byte) i#2 = (byte) i#1 -- register_copy +//SEG6 [0] phi (byte) s#2 = (byte) s#4 [phi:@2->@1#0] -- register_copy +//SEG7 [0] phi (byte) i#2 = (byte) i#1 [phi:@2->@1#1] -- register_copy //SEG8 @1 b1: //SEG9 [1] if((byte) i#2<=(byte) 5) goto @2 [ i#2 s#2 ] -- xby_le_coby1_then_la1 @@ -556,10 +556,10 @@ b3: stx $ff clc adc $ff -//SEG12 [3] phi from @1 @3 to @2 +//SEG12 [3] phi from @1 @3 to @2 [phi:@1/@3->@2] b2_from_b1: b2_from_b3: -//SEG13 [3] phi (byte) s#4 = (byte) s#2 -- register_copy +//SEG13 [3] phi (byte) s#4 = (byte) s#2 [phi:@1/@3->@2#0] -- register_copy //SEG14 @2 b2: //SEG15 [4] (byte) i#1 ← -- (byte) i#2 [ i#1 s#4 ] -- xby=_dec_xby @@ -582,15 +582,15 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin bbegin: -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) s#2 = (byte) 0 -- aby=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) s#2 = (byte) 0 [phi:@begin->@1#0] -- aby=coby1 lda #0 -//SEG4 [0] phi (byte) i#2 = (byte) 10 -- xby=coby1 +//SEG4 [0] phi (byte) i#2 = (byte) 10 [phi:@begin->@1#1] -- xby=coby1 ldx #$a jmp b1 -//SEG5 [0] phi from @2 to @1 -//SEG6 [0] phi (byte) s#2 = (byte) s#4 -- register_copy -//SEG7 [0] phi (byte) i#2 = (byte) i#1 -- register_copy +//SEG5 [0] phi from @2 to @1 [phi:@2->@1] +//SEG6 [0] phi (byte) s#2 = (byte) s#4 [phi:@2->@1#0] -- register_copy +//SEG7 [0] phi (byte) i#2 = (byte) i#1 [phi:@2->@1#1] -- register_copy //SEG8 @1 b1: //SEG9 [1] if((byte) i#2<=(byte) 5) goto @2 [ i#2 s#2 ] -- xby_le_coby1_then_la1 @@ -603,8 +603,8 @@ b3: stx $ff clc adc $ff -//SEG12 [3] phi from @1 @3 to @2 -//SEG13 [3] phi (byte) s#4 = (byte) s#2 -- register_copy +//SEG12 [3] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG13 [3] phi (byte) s#4 = (byte) s#2 [phi:@1/@3->@2#0] -- register_copy //SEG14 @2 b2: //SEG15 [4] (byte) i#1 ← -- (byte) i#2 [ i#1 s#4 ] -- xby=_dec_xby @@ -622,15 +622,15 @@ Succesful ASM optimization Pass5UnusedLabelElimination ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) s#2 = (byte) 0 -- aby=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) s#2 = (byte) 0 [phi:@begin->@1#0] -- aby=coby1 lda #0 -//SEG4 [0] phi (byte) i#2 = (byte) 10 -- xby=coby1 +//SEG4 [0] phi (byte) i#2 = (byte) 10 [phi:@begin->@1#1] -- xby=coby1 ldx #$a jmp b1 -//SEG5 [0] phi from @2 to @1 -//SEG6 [0] phi (byte) s#2 = (byte) s#4 -- register_copy -//SEG7 [0] phi (byte) i#2 = (byte) i#1 -- register_copy +//SEG5 [0] phi from @2 to @1 [phi:@2->@1] +//SEG6 [0] phi (byte) s#2 = (byte) s#4 [phi:@2->@1#0] -- register_copy +//SEG7 [0] phi (byte) i#2 = (byte) i#1 [phi:@2->@1#1] -- register_copy //SEG8 @1 b1: //SEG9 [1] if((byte) i#2<=(byte) 5) goto @2 [ i#2 s#2 ] -- xby_le_coby1_then_la1 @@ -642,8 +642,8 @@ b1: stx $ff clc adc $ff -//SEG12 [3] phi from @1 @3 to @2 -//SEG13 [3] phi (byte) s#4 = (byte) s#2 -- register_copy +//SEG12 [3] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG13 [3] phi (byte) s#4 = (byte) s#2 [phi:@1/@3->@2#0] -- register_copy //SEG14 @2 b2: //SEG15 [4] (byte) i#1 ← -- (byte) i#2 [ i#1 s#4 ] -- xby=_dec_xby @@ -658,14 +658,14 @@ Succesful ASM optimization Pass5NextJumpElimination ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) s#2 = (byte) 0 -- aby=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) s#2 = (byte) 0 [phi:@begin->@1#0] -- aby=coby1 lda #0 -//SEG4 [0] phi (byte) i#2 = (byte) 10 -- xby=coby1 +//SEG4 [0] phi (byte) i#2 = (byte) 10 [phi:@begin->@1#1] -- xby=coby1 ldx #$a -//SEG5 [0] phi from @2 to @1 -//SEG6 [0] phi (byte) s#2 = (byte) s#4 -- register_copy -//SEG7 [0] phi (byte) i#2 = (byte) i#1 -- register_copy +//SEG5 [0] phi from @2 to @1 [phi:@2->@1] +//SEG6 [0] phi (byte) s#2 = (byte) s#4 [phi:@2->@1#0] -- register_copy +//SEG7 [0] phi (byte) i#2 = (byte) i#1 [phi:@2->@1#1] -- register_copy //SEG8 @1 b1: //SEG9 [1] if((byte) i#2<=(byte) 5) goto @2 [ i#2 s#2 ] -- xby_le_coby1_then_la1 @@ -677,8 +677,8 @@ b1: stx $ff clc adc $ff -//SEG12 [3] phi from @1 @3 to @2 -//SEG13 [3] phi (byte) s#4 = (byte) s#2 -- register_copy +//SEG12 [3] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG13 [3] phi (byte) s#4 = (byte) s#2 [phi:@1/@3->@2#0] -- register_copy //SEG14 @2 b2: //SEG15 [4] (byte) i#1 ← -- (byte) i#2 [ i#1 s#4 ] -- xby=_dec_xby @@ -708,14 +708,14 @@ reg byte a [ s#2 s#4 s#1 ] FINAL CODE //SEG0 Global Constants & labels //SEG1 @begin -//SEG2 [0] phi from @begin to @1 -//SEG3 [0] phi (byte) s#2 = (byte) 0 -- aby=coby1 +//SEG2 [0] phi from @begin to @1 [phi:@begin->@1] +//SEG3 [0] phi (byte) s#2 = (byte) 0 [phi:@begin->@1#0] -- aby=coby1 lda #0 -//SEG4 [0] phi (byte) i#2 = (byte) 10 -- xby=coby1 +//SEG4 [0] phi (byte) i#2 = (byte) 10 [phi:@begin->@1#1] -- xby=coby1 ldx #$a -//SEG5 [0] phi from @2 to @1 -//SEG6 [0] phi (byte) s#2 = (byte) s#4 -- register_copy -//SEG7 [0] phi (byte) i#2 = (byte) i#1 -- register_copy +//SEG5 [0] phi from @2 to @1 [phi:@2->@1] +//SEG6 [0] phi (byte) s#2 = (byte) s#4 [phi:@2->@1#0] -- register_copy +//SEG7 [0] phi (byte) i#2 = (byte) i#1 [phi:@2->@1#1] -- register_copy //SEG8 @1 b1: //SEG9 [1] if((byte) i#2<=(byte) 5) goto @2 [ i#2 s#2 ] -- xby_le_coby1_then_la1 @@ -727,8 +727,8 @@ b1: stx $ff clc adc $ff -//SEG12 [3] phi from @1 @3 to @2 -//SEG13 [3] phi (byte) s#4 = (byte) s#2 -- register_copy +//SEG12 [3] phi from @1 @3 to @2 [phi:@1/@3->@2] +//SEG13 [3] phi (byte) s#4 = (byte) s#2 [phi:@1/@3->@2#0] -- register_copy //SEG14 @2 b2: //SEG15 [4] (byte) i#1 ← -- (byte) i#2 [ i#1 s#4 ] -- xby=_dec_xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log index 8de7d7de4..611419dc6 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest.log @@ -790,7 +790,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -799,20 +799,20 @@ bend: //SEG5 main main: { .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 //SEG10 main::@1 b1: //SEG11 [3] call nest param-assignment [ main::i#2 ] - //SEG12 [7] phi from main::@1 to nest + //SEG12 [7] phi from main::@1 to nest [phi:main::@1->nest] nest_from_b1: jsr nest jmp b3 @@ -832,15 +832,15 @@ main: { //SEG18 nest nest: { .label j = 3 - //SEG19 [8] phi from nest to nest::@1 + //SEG19 [8] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 -- zpby1=coby1 + //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- zpby1=coby1 lda #$64 sta j jmp b1 - //SEG21 [8] phi from nest::@1 to nest::@1 + //SEG21 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] b1_from_b1: - //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 -- register_copy + //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy jmp b1 //SEG23 nest::@1 b1: @@ -884,25 +884,25 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- yby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] call nest param-assignment [ main::i#2 ] - //SEG12 [7] phi from main::@1 to nest + //SEG12 [7] phi from main::@1 to nest [phi:main::@1->nest] nest_from_b1: jsr nest //SEG13 main::@3 @@ -919,14 +919,14 @@ main: { } //SEG18 nest nest: { - //SEG19 [8] phi from nest to nest::@1 + //SEG19 [8] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 -- xby=coby1 + //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 jmp b1 - //SEG21 [8] phi from nest::@1 to nest::@1 + //SEG21 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] b1_from_b1: - //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 -- register_copy + //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy //SEG23 nest::@1 b1: //SEG24 [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] -- _star_cowo1=xby @@ -955,23 +955,23 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- yby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] call nest param-assignment [ main::i#2 ] - //SEG12 [7] phi from main::@1 to nest + //SEG12 [7] phi from main::@1 to nest [phi:main::@1->nest] jsr nest //SEG13 main::@3 b3: @@ -987,13 +987,13 @@ main: { } //SEG18 nest nest: { - //SEG19 [8] phi from nest to nest::@1 + //SEG19 [8] phi from nest to nest::@1 [phi:nest->nest::@1] b1_from_nest: - //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 -- xby=coby1 + //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 jmp b1 - //SEG21 [8] phi from nest::@1 to nest::@1 - //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 -- register_copy + //SEG21 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy //SEG23 nest::@1 b1: //SEG24 [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] -- _star_cowo1=xby @@ -1022,21 +1022,21 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] call nest param-assignment [ main::i#2 ] - //SEG12 [7] phi from main::@1 to nest + //SEG12 [7] phi from main::@1 to nest [phi:main::@1->nest] jsr nest //SEG13 main::@3 //SEG14 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] -- yby=_dec_yby @@ -1050,12 +1050,12 @@ main: { } //SEG18 nest nest: { - //SEG19 [8] phi from nest to nest::@1 - //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 -- xby=coby1 + //SEG19 [8] phi from nest to nest::@1 [phi:nest->nest::@1] + //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 jmp b1 - //SEG21 [8] phi from nest::@1 to nest::@1 - //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 -- register_copy + //SEG21 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy //SEG23 nest::@1 b1: //SEG24 [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] -- _star_cowo1=xby @@ -1078,20 +1078,20 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] call nest param-assignment [ main::i#2 ] - //SEG12 [7] phi from main::@1 to nest + //SEG12 [7] phi from main::@1 to nest [phi:main::@1->nest] jsr nest //SEG13 main::@3 //SEG14 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] -- yby=_dec_yby @@ -1105,11 +1105,11 @@ main: { } //SEG18 nest nest: { - //SEG19 [8] phi from nest to nest::@1 - //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 -- xby=coby1 + //SEG19 [8] phi from nest to nest::@1 [phi:nest->nest::@1] + //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 - //SEG21 [8] phi from nest::@1 to nest::@1 - //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 -- register_copy + //SEG21 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy //SEG23 nest::@1 b1: //SEG24 [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] -- _star_cowo1=xby @@ -1151,20 +1151,20 @@ FINAL CODE .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- yby=coby1 ldy #$64 - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] call nest param-assignment [ main::i#2 ] - //SEG12 [7] phi from main::@1 to nest + //SEG12 [7] phi from main::@1 to nest [phi:main::@1->nest] jsr nest //SEG13 main::@3 //SEG14 [4] (byte) main::i#1 ← -- (byte) main::i#2 [ main::i#1 ] -- yby=_dec_yby @@ -1178,11 +1178,11 @@ main: { } //SEG18 nest nest: { - //SEG19 [8] phi from nest to nest::@1 - //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 -- xby=coby1 + //SEG19 [8] phi from nest to nest::@1 [phi:nest->nest::@1] + //SEG20 [8] phi (byte) nest::j#2 = (byte) 100 [phi:nest->nest::@1#0] -- xby=coby1 ldx #$64 - //SEG21 [8] phi from nest::@1 to nest::@1 - //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 -- register_copy + //SEG21 [8] phi from nest::@1 to nest::@1 [phi:nest::@1->nest::@1] + //SEG22 [8] phi (byte) nest::j#2 = (byte) nest::j#1 [phi:nest::@1->nest::@1#0] -- register_copy //SEG23 nest::@1 b1: //SEG24 [9] *((const byte*) SCREEN#0) ← (byte) nest::j#2 [ nest::j#2 ] -- _star_cowo1=xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log index 015010617..92eab841b 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopnest2.log @@ -1948,7 +1948,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -1958,32 +1958,32 @@ bend: main: { .label j = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy jmp b1 //SEG10 main::@1 b1: - //SEG11 [3] phi from main::@1 to main::@2 + //SEG11 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG12 [3] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG12 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG13 [3] phi from main::@5 to main::@2 + //SEG13 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy jmp b2 //SEG15 main::@2 b2: //SEG16 [4] call nest1 param-assignment [ main::i#2 main::j#2 ] - //SEG17 [10] phi from main::@2 to nest1 + //SEG17 [10] phi from main::@2 to nest1 [phi:main::@2->nest1] nest1_from_b2: jsr nest1 jmp b5 @@ -2012,32 +2012,32 @@ main: { nest1: { .label j = 5 .label i = 4 - //SEG27 [11] phi from nest1 to nest1::@1 + //SEG27 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 -- zpby1=coby1 + //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG29 [11] phi from nest1::@3 to nest1::@1 + //SEG29 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] b1_from_b3: - //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 -- register_copy + //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy jmp b1 //SEG31 nest1::@1 b1: - //SEG32 [12] phi from nest1::@1 to nest1::@2 + //SEG32 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] b2_from_b1: - //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 -- zpby1=coby1 + //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG34 [12] phi from nest1::@5 to nest1::@2 + //SEG34 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] b2_from_b5: - //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 -- register_copy + //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy jmp b2 //SEG36 nest1::@2 b2: //SEG37 [13] call nest2 param-assignment [ nest1::i#2 nest1::j#2 ] - //SEG38 [19] phi from nest1::@2 to nest2 + //SEG38 [19] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] nest2_from_b2: jsr nest2 jmp b5 @@ -2066,27 +2066,27 @@ nest1: { nest2: { .label j = 7 .label i = 6 - //SEG48 [20] phi from nest2 to nest2::@1 + //SEG48 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 -- zpby1=coby1 + //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 [phi:nest2->nest2::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG50 [20] phi from nest2::@3 to nest2::@1 + //SEG50 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] b1_from_b3: - //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 -- register_copy + //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy jmp b1 //SEG52 nest2::@1 b1: - //SEG53 [21] phi from nest2::@1 to nest2::@2 + //SEG53 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] b2_from_b1: - //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 -- zpby1=coby1 + //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG55 [21] phi from nest2::@2 to nest2::@2 + //SEG55 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] b2_from_b2: - //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 -- register_copy + //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy jmp b2 //SEG57 nest2::@2 b2: @@ -2159,7 +2159,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -2168,30 +2168,30 @@ bend: main: { .label j = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] b1_from_b3: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: - //SEG11 [3] phi from main::@1 to main::@2 + //SEG11 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG12 [3] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG12 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG13 [3] phi from main::@5 to main::@2 + //SEG13 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] b2_from_b5: - //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] call nest1 param-assignment [ main::i#2 main::j#2 ] - //SEG17 [10] phi from main::@2 to nest1 + //SEG17 [10] phi from main::@2 to nest1 [phi:main::@2->nest1] nest1_from_b2: jsr nest1 //SEG18 main::@5 @@ -2216,29 +2216,29 @@ main: { //SEG26 nest1 nest1: { .label i = 4 - //SEG27 [11] phi from nest1 to nest1::@1 + //SEG27 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 -- zpby1=coby1 + //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG29 [11] phi from nest1::@3 to nest1::@1 + //SEG29 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] b1_from_b3: - //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 -- register_copy + //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy //SEG31 nest1::@1 b1: - //SEG32 [12] phi from nest1::@1 to nest1::@2 + //SEG32 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] b2_from_b1: - //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 -- aby=coby1 + //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 jmp b2 - //SEG34 [12] phi from nest1::@5 to nest1::@2 + //SEG34 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] b2_from_b5: - //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 -- register_copy + //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy //SEG36 nest1::@2 b2: //SEG37 [13] call nest2 param-assignment [ nest1::i#2 nest1::j#2 ] - //SEG38 [19] phi from nest1::@2 to nest2 + //SEG38 [19] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] nest2_from_b2: jsr nest2 //SEG39 nest1::@5 @@ -2263,24 +2263,24 @@ nest1: { } //SEG47 nest2 nest2: { - //SEG48 [20] phi from nest2 to nest2::@1 + //SEG48 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 -- xby=coby1 + //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 jmp b1 - //SEG50 [20] phi from nest2::@3 to nest2::@1 + //SEG50 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] b1_from_b3: - //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 -- register_copy + //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG52 nest2::@1 b1: - //SEG53 [21] phi from nest2::@1 to nest2::@2 + //SEG53 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] b2_from_b1: - //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 -- yby=coby1 + //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 jmp b2 - //SEG55 [21] phi from nest2::@2 to nest2::@2 + //SEG55 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] b2_from_b2: - //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 -- register_copy + //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy //SEG57 nest2::@2 b2: //SEG58 [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#2 nest2::j#2 ] -- _star_cowo1=yby @@ -2328,7 +2328,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: @@ -2336,27 +2336,27 @@ bend: main: { .label j = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: - //SEG11 [3] phi from main::@1 to main::@2 - //SEG12 [3] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG11 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG12 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG13 [3] phi from main::@5 to main::@2 - //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG13 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] call nest1 param-assignment [ main::i#2 main::j#2 ] - //SEG17 [10] phi from main::@2 to nest1 + //SEG17 [10] phi from main::@2 to nest1 [phi:main::@2->nest1] jsr nest1 //SEG18 main::@5 b5: @@ -2380,26 +2380,26 @@ main: { //SEG26 nest1 nest1: { .label i = 4 - //SEG27 [11] phi from nest1 to nest1::@1 + //SEG27 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] b1_from_nest1: - //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 -- zpby1=coby1 + //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG29 [11] phi from nest1::@3 to nest1::@1 - //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 -- register_copy + //SEG29 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy //SEG31 nest1::@1 b1: - //SEG32 [12] phi from nest1::@1 to nest1::@2 - //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 -- aby=coby1 + //SEG32 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 jmp b2 - //SEG34 [12] phi from nest1::@5 to nest1::@2 - //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 -- register_copy + //SEG34 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy //SEG36 nest1::@2 b2: //SEG37 [13] call nest2 param-assignment [ nest1::i#2 nest1::j#2 ] - //SEG38 [19] phi from nest1::@2 to nest2 + //SEG38 [19] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] jsr nest2 //SEG39 nest1::@5 b5: @@ -2423,21 +2423,21 @@ nest1: { } //SEG47 nest2 nest2: { - //SEG48 [20] phi from nest2 to nest2::@1 + //SEG48 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] b1_from_nest2: - //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 -- xby=coby1 + //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 jmp b1 - //SEG50 [20] phi from nest2::@3 to nest2::@1 - //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 -- register_copy + //SEG50 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG52 nest2::@1 b1: - //SEG53 [21] phi from nest2::@1 to nest2::@2 - //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 -- yby=coby1 + //SEG53 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 jmp b2 - //SEG55 [21] phi from nest2::@2 to nest2::@2 - //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 -- register_copy + //SEG55 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy //SEG57 nest2::@2 b2: //SEG58 [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#2 nest2::j#2 ] -- _star_cowo1=yby @@ -2479,33 +2479,33 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label j = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: - //SEG11 [3] phi from main::@1 to main::@2 - //SEG12 [3] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG11 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG12 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j jmp b2 - //SEG13 [3] phi from main::@5 to main::@2 - //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG13 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] call nest1 param-assignment [ main::i#2 main::j#2 ] - //SEG17 [10] phi from main::@2 to nest1 + //SEG17 [10] phi from main::@2 to nest1 [phi:main::@2->nest1] jsr nest1 //SEG18 main::@5 //SEG19 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#2 main::j#1 ] -- zpby1=_dec_zpby1 @@ -2526,25 +2526,25 @@ main: { //SEG26 nest1 nest1: { .label i = 4 - //SEG27 [11] phi from nest1 to nest1::@1 - //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 -- zpby1=coby1 + //SEG27 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] + //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i jmp b1 - //SEG29 [11] phi from nest1::@3 to nest1::@1 - //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 -- register_copy + //SEG29 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy //SEG31 nest1::@1 b1: - //SEG32 [12] phi from nest1::@1 to nest1::@2 - //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 -- aby=coby1 + //SEG32 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 jmp b2 - //SEG34 [12] phi from nest1::@5 to nest1::@2 - //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 -- register_copy + //SEG34 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy //SEG36 nest1::@2 b2: //SEG37 [13] call nest2 param-assignment [ nest1::i#2 nest1::j#2 ] - //SEG38 [19] phi from nest1::@2 to nest2 + //SEG38 [19] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] jsr nest2 //SEG39 nest1::@5 //SEG40 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#2 nest1::j#1 ] -- aby=_dec_aby @@ -2565,20 +2565,20 @@ nest1: { } //SEG47 nest2 nest2: { - //SEG48 [20] phi from nest2 to nest2::@1 - //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 -- xby=coby1 + //SEG48 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] + //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 jmp b1 - //SEG50 [20] phi from nest2::@3 to nest2::@1 - //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 -- register_copy + //SEG50 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG52 nest2::@1 b1: - //SEG53 [21] phi from nest2::@1 to nest2::@2 - //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 -- yby=coby1 + //SEG53 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 jmp b2 - //SEG55 [21] phi from nest2::@2 to nest2::@2 - //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 -- register_copy + //SEG55 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy //SEG57 nest2::@2 b2: //SEG58 [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#2 nest2::j#2 ] -- _star_cowo1=yby @@ -2611,31 +2611,31 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label j = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: - //SEG11 [3] phi from main::@1 to main::@2 - //SEG12 [3] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG11 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG12 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j - //SEG13 [3] phi from main::@5 to main::@2 - //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG13 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] call nest1 param-assignment [ main::i#2 main::j#2 ] - //SEG17 [10] phi from main::@2 to nest1 + //SEG17 [10] phi from main::@2 to nest1 [phi:main::@2->nest1] jsr nest1 //SEG18 main::@5 //SEG19 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#2 main::j#1 ] -- zpby1=_dec_zpby1 @@ -2656,23 +2656,23 @@ main: { //SEG26 nest1 nest1: { .label i = 4 - //SEG27 [11] phi from nest1 to nest1::@1 - //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 -- zpby1=coby1 + //SEG27 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] + //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i - //SEG29 [11] phi from nest1::@3 to nest1::@1 - //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 -- register_copy + //SEG29 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy //SEG31 nest1::@1 b1: - //SEG32 [12] phi from nest1::@1 to nest1::@2 - //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 -- aby=coby1 + //SEG32 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 - //SEG34 [12] phi from nest1::@5 to nest1::@2 - //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 -- register_copy + //SEG34 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy //SEG36 nest1::@2 b2: //SEG37 [13] call nest2 param-assignment [ nest1::i#2 nest1::j#2 ] - //SEG38 [19] phi from nest1::@2 to nest2 + //SEG38 [19] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] jsr nest2 //SEG39 nest1::@5 //SEG40 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#2 nest1::j#1 ] -- aby=_dec_aby @@ -2693,18 +2693,18 @@ nest1: { } //SEG47 nest2 nest2: { - //SEG48 [20] phi from nest2 to nest2::@1 - //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 -- xby=coby1 + //SEG48 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] + //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 - //SEG50 [20] phi from nest2::@3 to nest2::@1 - //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 -- register_copy + //SEG50 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG52 nest2::@1 b1: - //SEG53 [21] phi from nest2::@1 to nest2::@2 - //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 -- yby=coby1 + //SEG53 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 - //SEG55 [21] phi from nest2::@2 to nest2::@2 - //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 -- register_copy + //SEG55 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy //SEG57 nest2::@2 b2: //SEG58 [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#2 nest2::j#2 ] -- _star_cowo1=yby @@ -2778,31 +2778,31 @@ FINAL CODE .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label j = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#0] -- zpby1=coby1 lda #$64 sta i - //SEG8 [2] phi from main::@3 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@3 to main::@1 [phi:main::@3->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@3->main::@1#0] -- register_copy //SEG10 main::@1 b1: - //SEG11 [3] phi from main::@1 to main::@2 - //SEG12 [3] phi (byte) main::j#2 = (byte) 100 -- zpby1=coby1 + //SEG11 [3] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG12 [3] phi (byte) main::j#2 = (byte) 100 [phi:main::@1->main::@2#0] -- zpby1=coby1 lda #$64 sta j - //SEG13 [3] phi from main::@5 to main::@2 - //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 -- register_copy + //SEG13 [3] phi from main::@5 to main::@2 [phi:main::@5->main::@2] + //SEG14 [3] phi (byte) main::j#2 = (byte) main::j#1 [phi:main::@5->main::@2#0] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] call nest1 param-assignment [ main::i#2 main::j#2 ] - //SEG17 [10] phi from main::@2 to nest1 + //SEG17 [10] phi from main::@2 to nest1 [phi:main::@2->nest1] jsr nest1 //SEG18 main::@5 //SEG19 [5] (byte) main::j#1 ← -- (byte) main::j#2 [ main::i#2 main::j#1 ] -- zpby1=_dec_zpby1 @@ -2823,23 +2823,23 @@ main: { //SEG26 nest1 nest1: { .label i = 4 - //SEG27 [11] phi from nest1 to nest1::@1 - //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 -- zpby1=coby1 + //SEG27 [11] phi from nest1 to nest1::@1 [phi:nest1->nest1::@1] + //SEG28 [11] phi (byte) nest1::i#2 = (byte) 100 [phi:nest1->nest1::@1#0] -- zpby1=coby1 lda #$64 sta i - //SEG29 [11] phi from nest1::@3 to nest1::@1 - //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 -- register_copy + //SEG29 [11] phi from nest1::@3 to nest1::@1 [phi:nest1::@3->nest1::@1] + //SEG30 [11] phi (byte) nest1::i#2 = (byte) nest1::i#1 [phi:nest1::@3->nest1::@1#0] -- register_copy //SEG31 nest1::@1 b1: - //SEG32 [12] phi from nest1::@1 to nest1::@2 - //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 -- aby=coby1 + //SEG32 [12] phi from nest1::@1 to nest1::@2 [phi:nest1::@1->nest1::@2] + //SEG33 [12] phi (byte) nest1::j#2 = (byte) 100 [phi:nest1::@1->nest1::@2#0] -- aby=coby1 lda #$64 - //SEG34 [12] phi from nest1::@5 to nest1::@2 - //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 -- register_copy + //SEG34 [12] phi from nest1::@5 to nest1::@2 [phi:nest1::@5->nest1::@2] + //SEG35 [12] phi (byte) nest1::j#2 = (byte) nest1::j#1 [phi:nest1::@5->nest1::@2#0] -- register_copy //SEG36 nest1::@2 b2: //SEG37 [13] call nest2 param-assignment [ nest1::i#2 nest1::j#2 ] - //SEG38 [19] phi from nest1::@2 to nest2 + //SEG38 [19] phi from nest1::@2 to nest2 [phi:nest1::@2->nest2] jsr nest2 //SEG39 nest1::@5 //SEG40 [14] (byte) nest1::j#1 ← -- (byte) nest1::j#2 [ nest1::i#2 nest1::j#1 ] -- aby=_dec_aby @@ -2860,18 +2860,18 @@ nest1: { } //SEG47 nest2 nest2: { - //SEG48 [20] phi from nest2 to nest2::@1 - //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 -- xby=coby1 + //SEG48 [20] phi from nest2 to nest2::@1 [phi:nest2->nest2::@1] + //SEG49 [20] phi (byte) nest2::i#2 = (byte) 100 [phi:nest2->nest2::@1#0] -- xby=coby1 ldx #$64 - //SEG50 [20] phi from nest2::@3 to nest2::@1 - //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 -- register_copy + //SEG50 [20] phi from nest2::@3 to nest2::@1 [phi:nest2::@3->nest2::@1] + //SEG51 [20] phi (byte) nest2::i#2 = (byte) nest2::i#1 [phi:nest2::@3->nest2::@1#0] -- register_copy //SEG52 nest2::@1 b1: - //SEG53 [21] phi from nest2::@1 to nest2::@2 - //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 -- yby=coby1 + //SEG53 [21] phi from nest2::@1 to nest2::@2 [phi:nest2::@1->nest2::@2] + //SEG54 [21] phi (byte) nest2::j#2 = (byte) 100 [phi:nest2::@1->nest2::@2#0] -- yby=coby1 ldy #$64 - //SEG55 [21] phi from nest2::@2 to nest2::@2 - //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 -- register_copy + //SEG55 [21] phi from nest2::@2 to nest2::@2 [phi:nest2::@2->nest2::@2] + //SEG56 [21] phi (byte) nest2::j#2 = (byte) nest2::j#1 [phi:nest2::@2->nest2::@2#0] -- register_copy //SEG57 nest2::@2 b2: //SEG58 [22] *((const byte*) SCREEN#0) ← (byte) nest2::j#2 [ nest2::i#2 nest2::j#2 ] -- _star_cowo1=yby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log b/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log index 96c939556..15d68c71d 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/loopsplit.log @@ -653,7 +653,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -663,12 +663,12 @@ bend: main: { .label i = 2 .label s = 3 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::s#3 = (byte) 0 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta s - //SEG8 [2] phi (byte) main::i#2 = (byte) 100 -- zpby1=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- zpby1=coby1 lda #$64 sta i jmp b1 @@ -696,11 +696,11 @@ main: { b8: //SEG17 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] -- zpby1=_inc_zpby1 inc s - //SEG18 [2] phi from main::@4 main::@8 to main::@1 + //SEG18 [2] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b4: b1_from_b8: - //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 -- register_copy - //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 //SEG21 main::@4 b4: @@ -729,18 +729,18 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::s#3 = (byte) 0 -- yby=coby1 + //SEG7 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG8 [2] phi (byte) main::i#2 = (byte) 100 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG9 main::@1 b1: @@ -763,11 +763,11 @@ main: { b8: //SEG17 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] -- yby=_inc_yby iny - //SEG18 [2] phi from main::@4 main::@8 to main::@1 + //SEG18 [2] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b4: b1_from_b8: - //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 -- register_copy - //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 //SEG21 main::@4 b4: @@ -785,17 +785,17 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::s#3 = (byte) 0 -- yby=coby1 + //SEG7 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG8 [2] phi (byte) main::i#2 = (byte) 100 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG9 main::@1 b1: @@ -818,10 +818,10 @@ main: { b8: //SEG17 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] -- yby=_inc_yby iny - //SEG18 [2] phi from main::@4 main::@8 to main::@1 + //SEG18 [2] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b8: - //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 -- register_copy - //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 //SEG21 main::@4 b4: @@ -840,15 +840,15 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::s#3 = (byte) 0 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG8 [2] phi (byte) main::i#2 = (byte) 100 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG9 main::@1 b1: @@ -869,10 +869,10 @@ main: { //SEG16 main::@8 //SEG17 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] -- yby=_inc_yby iny - //SEG18 [2] phi from main::@4 main::@8 to main::@1 + //SEG18 [2] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b8: - //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 -- register_copy - //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 //SEG21 main::@4 b4: @@ -905,15 +905,15 @@ FINAL CODE //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::s#3 = (byte) 0 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::s#3 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG8 [2] phi (byte) main::i#2 = (byte) 100 -- xby=coby1 + //SEG8 [2] phi (byte) main::i#2 = (byte) 100 [phi:main->main::@1#1] -- xby=coby1 ldx #$64 //SEG9 main::@1 b1: @@ -934,10 +934,10 @@ main: { //SEG16 main::@8 //SEG17 [7] (byte) main::s#2 ← ++ (byte) main::s#3 [ main::i#1 main::s#2 ] -- yby=_inc_yby iny - //SEG18 [2] phi from main::@4 main::@8 to main::@1 + //SEG18 [2] phi from main::@4 main::@8 to main::@1 [phi:main::@4/main::@8->main::@1] b1_from_b8: - //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 -- register_copy - //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG19 [2] phi (byte) main::s#3 = (byte) main::s#1 [phi:main::@4/main::@8->main::@1#0] -- register_copy + //SEG20 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4/main::@8->main::@1#1] -- register_copy jmp b1 //SEG21 main::@4 b4: diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log index 588b31b75..1ccd3342a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobal.log @@ -884,7 +884,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -895,15 +895,15 @@ main: { .label _0 = 5 .label _1 = 6 //SEG6 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] - //SEG7 [10] phi from main to inccnt + //SEG7 [10] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 -- zpby1=coby1 + //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 -- zpby1=coby1 + //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 [phi:main->inccnt#1] -- zpby1=coby1 lda #0 sta cnt2 - //SEG10 [10] phi (byte) cnt#12 = (byte) 0 -- zpby1=coby1 + //SEG10 [10] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#2] -- zpby1=coby1 lda #0 sta cnt_12 jsr inccnt @@ -921,11 +921,11 @@ main: { sta cnt_3 inc cnt_3 //SEG15 [6] call inccnt param-assignment [ inccnt::return#0 ] - //SEG16 [10] phi from main::@1 to inccnt + //SEG16 [10] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 -- register_copy - //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 -- register_copy - //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 -- register_copy + //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 [phi:main::@1->inccnt#0] -- register_copy + //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 [phi:main::@1->inccnt#1] -- register_copy + //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt jmp b2 //SEG20 main::@2 @@ -996,7 +996,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -1004,14 +1004,14 @@ bend: //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] - //SEG7 [10] phi from main to inccnt + //SEG7 [10] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 -- zpby1=coby1 + //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 -- yby=coby1 + //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 ldy #0 - //SEG10 [10] phi (byte) cnt#12 = (byte) 0 -- xby=coby1 + //SEG10 [10] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 @@ -1023,11 +1023,11 @@ main: { //SEG14 [5] (byte) cnt#3 ← ++ (byte) cnt#1 [ cnt#3 cnt2#1 cnt3#1 ] -- xby=_inc_xby inx //SEG15 [6] call inccnt param-assignment [ inccnt::return#0 ] - //SEG16 [10] phi from main::@1 to inccnt + //SEG16 [10] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 -- register_copy - //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 -- register_copy - //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 -- register_copy + //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 [phi:main::@1->inccnt#0] -- register_copy + //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 [phi:main::@1->inccnt#1] -- register_copy + //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt //SEG20 main::@2 b2: @@ -1065,21 +1065,21 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] - //SEG7 [10] phi from main to inccnt + //SEG7 [10] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 -- zpby1=coby1 + //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 -- yby=coby1 + //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 ldy #0 - //SEG10 [10] phi (byte) cnt#12 = (byte) 0 -- xby=coby1 + //SEG10 [10] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 @@ -1091,11 +1091,11 @@ main: { //SEG14 [5] (byte) cnt#3 ← ++ (byte) cnt#1 [ cnt#3 cnt2#1 cnt3#1 ] -- xby=_inc_xby inx //SEG15 [6] call inccnt param-assignment [ inccnt::return#0 ] - //SEG16 [10] phi from main::@1 to inccnt + //SEG16 [10] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 -- register_copy - //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 -- register_copy - //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 -- register_copy + //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 [phi:main::@1->inccnt#0] -- register_copy + //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 [phi:main::@1->inccnt#1] -- register_copy + //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt //SEG20 main::@2 b2: @@ -1139,19 +1139,19 @@ ASSEMBLER .label cnt3 = 2 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] - //SEG7 [10] phi from main to inccnt - //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 -- zpby1=coby1 + //SEG7 [10] phi from main to inccnt [phi:main->inccnt] + //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 -- yby=coby1 + //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 ldy #0 - //SEG10 [10] phi (byte) cnt#12 = (byte) 0 -- xby=coby1 + //SEG10 [10] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 @@ -1162,10 +1162,10 @@ main: { //SEG14 [5] (byte) cnt#3 ← ++ (byte) cnt#1 [ cnt#3 cnt2#1 cnt3#1 ] -- xby=_inc_xby inx //SEG15 [6] call inccnt param-assignment [ inccnt::return#0 ] - //SEG16 [10] phi from main::@1 to inccnt - //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 -- register_copy - //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 -- register_copy - //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 -- register_copy + //SEG16 [10] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 [phi:main::@1->inccnt#0] -- register_copy + //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 [phi:main::@1->inccnt#1] -- register_copy + //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt //SEG20 main::@2 //SEG21 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] @@ -1231,19 +1231,19 @@ FINAL CODE .label cnt3 = 2 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ inccnt::return#0 cnt#1 cnt2#1 cnt3#1 ] - //SEG7 [10] phi from main to inccnt - //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 -- zpby1=coby1 + //SEG7 [10] phi from main to inccnt [phi:main->inccnt] + //SEG8 [10] phi (byte) cnt3#11 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt3 - //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 -- yby=coby1 + //SEG9 [10] phi (byte) cnt2#11 = (byte) 0 [phi:main->inccnt#1] -- yby=coby1 ldy #0 - //SEG10 [10] phi (byte) cnt#12 = (byte) 0 -- xby=coby1 + //SEG10 [10] phi (byte) cnt#12 = (byte) 0 [phi:main->inccnt#2] -- xby=coby1 ldx #0 jsr inccnt //SEG11 main::@1 @@ -1254,10 +1254,10 @@ main: { //SEG14 [5] (byte) cnt#3 ← ++ (byte) cnt#1 [ cnt#3 cnt2#1 cnt3#1 ] -- xby=_inc_xby inx //SEG15 [6] call inccnt param-assignment [ inccnt::return#0 ] - //SEG16 [10] phi from main::@1 to inccnt - //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 -- register_copy - //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 -- register_copy - //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 -- register_copy + //SEG16 [10] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG17 [10] phi (byte) cnt3#11 = (byte) cnt3#1 [phi:main::@1->inccnt#0] -- register_copy + //SEG18 [10] phi (byte) cnt2#11 = (byte) cnt2#1 [phi:main::@1->inccnt#1] -- register_copy + //SEG19 [10] phi (byte) cnt#12 = (byte) cnt#3 [phi:main::@1->inccnt#2] -- register_copy jsr inccnt //SEG20 main::@2 //SEG21 [7] (byte~) main::$1 ← (byte) inccnt::return#0 [ main::$1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log index 6333e068d..4ee4ee542 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/modglobalmin.log @@ -609,7 +609,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -618,9 +618,9 @@ bend: //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ cnt#10 ] - //SEG7 [9] phi from main to inccnt + //SEG7 [9] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG8 [9] phi (byte) cnt#13 = (byte) 0 -- zpby1=coby1 + //SEG8 [9] phi (byte) cnt#13 = (byte) 0 [phi:main->inccnt#0] -- zpby1=coby1 lda #0 sta cnt_13 jsr inccnt @@ -635,9 +635,9 @@ main: { sta cnt_3 inc cnt_3 //SEG12 [5] call inccnt param-assignment [ cnt#10 ] - //SEG13 [9] phi from main::@1 to inccnt + //SEG13 [9] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 -- register_copy + //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt jmp b2 //SEG15 main::@2 @@ -693,7 +693,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -701,9 +701,9 @@ bend: //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ cnt#10 ] - //SEG7 [9] phi from main to inccnt + //SEG7 [9] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG8 [9] phi (byte) cnt#13 = (byte) 0 -- xby=coby1 + //SEG8 [9] phi (byte) cnt#13 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG9 main::@1 @@ -713,9 +713,9 @@ main: { //SEG11 [4] (byte) cnt#3 ← ++ (byte) cnt#10 [ cnt#3 ] -- xby=_inc_xby inx //SEG12 [5] call inccnt param-assignment [ cnt#10 ] - //SEG13 [9] phi from main::@1 to inccnt + //SEG13 [9] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 -- register_copy + //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt //SEG15 main::@2 b2: @@ -746,16 +746,16 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ cnt#10 ] - //SEG7 [9] phi from main to inccnt + //SEG7 [9] phi from main to inccnt [phi:main->inccnt] inccnt_from_main: - //SEG8 [9] phi (byte) cnt#13 = (byte) 0 -- xby=coby1 + //SEG8 [9] phi (byte) cnt#13 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG9 main::@1 @@ -765,9 +765,9 @@ main: { //SEG11 [4] (byte) cnt#3 ← ++ (byte) cnt#10 [ cnt#3 ] -- xby=_inc_xby inx //SEG12 [5] call inccnt param-assignment [ cnt#10 ] - //SEG13 [9] phi from main::@1 to inccnt + //SEG13 [9] phi from main::@1 to inccnt [phi:main::@1->inccnt] inccnt_from_b1: - //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 -- register_copy + //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt //SEG15 main::@2 b2: @@ -804,14 +804,14 @@ ASSEMBLER .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ cnt#10 ] - //SEG7 [9] phi from main to inccnt - //SEG8 [9] phi (byte) cnt#13 = (byte) 0 -- xby=coby1 + //SEG7 [9] phi from main to inccnt [phi:main->inccnt] + //SEG8 [9] phi (byte) cnt#13 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG9 main::@1 @@ -820,8 +820,8 @@ main: { //SEG11 [4] (byte) cnt#3 ← ++ (byte) cnt#10 [ cnt#3 ] -- xby=_inc_xby inx //SEG12 [5] call inccnt param-assignment [ cnt#10 ] - //SEG13 [9] phi from main::@1 to inccnt - //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 -- register_copy + //SEG13 [9] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt //SEG15 main::@2 //SEG16 [6] (byte) cnt#1 ← ++ (byte) cnt#10 [ cnt#1 ] -- xby=_inc_xby @@ -867,14 +867,14 @@ FINAL CODE .const SCREEN = $400 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call inccnt param-assignment [ cnt#10 ] - //SEG7 [9] phi from main to inccnt - //SEG8 [9] phi (byte) cnt#13 = (byte) 0 -- xby=coby1 + //SEG7 [9] phi from main to inccnt [phi:main->inccnt] + //SEG8 [9] phi (byte) cnt#13 = (byte) 0 [phi:main->inccnt#0] -- xby=coby1 ldx #0 jsr inccnt //SEG9 main::@1 @@ -883,8 +883,8 @@ main: { //SEG11 [4] (byte) cnt#3 ← ++ (byte) cnt#10 [ cnt#3 ] -- xby=_inc_xby inx //SEG12 [5] call inccnt param-assignment [ cnt#10 ] - //SEG13 [9] phi from main::@1 to inccnt - //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 -- register_copy + //SEG13 [9] phi from main::@1 to inccnt [phi:main::@1->inccnt] + //SEG14 [9] phi (byte) cnt#13 = (byte) cnt#3 [phi:main::@1->inccnt#0] -- register_copy jsr inccnt //SEG15 main::@2 //SEG16 [6] (byte) cnt#1 ← ++ (byte) cnt#10 [ cnt#1 ] -- xby=_inc_xby diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log index cc1e2c124..ae6ecc2ca 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtest.log @@ -2108,7 +2108,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -2127,14 +2127,14 @@ main: { //SEG9 main::@2 b2: //SEG10 [4] call rvaluevar param-assignment [ ] - //SEG11 [14] phi from main::@2 to rvaluevar + //SEG11 [14] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] rvaluevar_from_b2: jsr rvaluevar jmp b3 //SEG12 main::@3 b3: //SEG13 [5] call lvaluevar param-assignment [ ] - //SEG14 [7] phi from main::@3 to lvaluevar + //SEG14 [7] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] lvaluevar_from_b3: jsr lvaluevar jmp breturn @@ -2148,14 +2148,14 @@ lvaluevar: { .const b = 4 .label screen = 3 .label i = 2 - //SEG18 [8] phi from lvaluevar to lvaluevar::@1 + //SEG18 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 -- zpby1=coby1 + //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- zpby1=coby1 lda #2 sta i jmp b1 @@ -2183,10 +2183,10 @@ lvaluevar: { !: //SEG28 [13] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 [ lvaluevar::i#1 lvaluevar::screen#1 ] -- zpby1=_inc_zpby1 inc i - //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 + //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 -- register_copy - //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 -- register_copy + //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } //SEG32 rvaluevar @@ -2194,14 +2194,14 @@ rvaluevar: { .label b = 10 .label screen = 6 .label i = 5 - //SEG33 [15] phi from rvaluevar to rvaluevar::@1 + //SEG33 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 -- zpby1=coby1 + //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- zpby1=coby1 lda #2 sta i jmp b1 @@ -2229,10 +2229,10 @@ rvaluevar: { !: //SEG43 [20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] -- zpby1=_inc_zpby1 inc i - //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 + //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 -- register_copy - //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 -- register_copy + //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } //SEG47 rvalue @@ -2248,9 +2248,9 @@ rvalue: { //SEG49 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] -- zpby1=_star_cowo1 lda SCREEN+1 sta b_1 - //SEG50 [23] phi from rvalue to rvalue::@1 + //SEG50 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 -- zpby1=coby1 + //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- zpby1=coby1 lda #2 sta i jmp b1 @@ -2273,9 +2273,9 @@ rvalue: { sta b_2 //SEG58 [27] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] -- zpby1=_inc_zpby1 inc i - //SEG59 [23] phi from rvalue::@2 to rvalue::@1 + //SEG59 [23] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 -- register_copy + //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } //SEG61 lvalue @@ -2288,9 +2288,9 @@ lvalue: { //SEG63 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] -- _star_cowo1=coby2 lda #2 sta SCREEN+1 - //SEG64 [30] phi from lvalue to lvalue::@1 + //SEG64 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 -- zpby1=coby1 + //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- zpby1=coby1 lda #2 sta i jmp b1 @@ -2313,9 +2313,9 @@ lvalue: { sta SCREEN,x //SEG72 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] -- zpby1=_inc_zpby1 inc i - //SEG73 [30] phi from lvalue::@2 to lvalue::@1 + //SEG73 [30] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 -- register_copy + //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -2381,7 +2381,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -2397,13 +2397,13 @@ main: { //SEG9 main::@2 b2: //SEG10 [4] call rvaluevar param-assignment [ ] - //SEG11 [14] phi from main::@2 to rvaluevar + //SEG11 [14] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] rvaluevar_from_b2: jsr rvaluevar //SEG12 main::@3 b3: //SEG13 [5] call lvaluevar param-assignment [ ] - //SEG14 [7] phi from main::@3 to lvaluevar + //SEG14 [7] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] lvaluevar_from_b3: jsr lvaluevar //SEG15 main::@return @@ -2415,14 +2415,14 @@ main: { lvaluevar: { .const b = 4 .label screen = 2 - //SEG18 [8] phi from lvaluevar to lvaluevar::@1 + //SEG18 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG21 lvaluevar::@1 b1: @@ -2446,23 +2446,23 @@ lvaluevar: { !: //SEG28 [13] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 [ lvaluevar::i#1 lvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 + //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 -- register_copy - //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 -- register_copy + //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } //SEG32 rvaluevar rvaluevar: { .label screen = 2 - //SEG33 [15] phi from rvaluevar to rvaluevar::@1 + //SEG33 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG36 rvaluevar::@1 b1: @@ -2485,10 +2485,10 @@ rvaluevar: { !: //SEG43 [20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 + //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 -- register_copy - //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 -- register_copy + //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } //SEG47 rvalue @@ -2498,9 +2498,9 @@ rvalue: { lda SCREEN //SEG49 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] -- aby=_star_cowo1 lda SCREEN+1 - //SEG50 [23] phi from rvalue to rvalue::@1 + //SEG50 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG52 rvalue::@1 b1: @@ -2517,9 +2517,9 @@ rvalue: { lda SCREEN,x //SEG58 [27] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] -- xby=_inc_xby inx - //SEG59 [23] phi from rvalue::@2 to rvalue::@1 + //SEG59 [23] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 -- register_copy + //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } //SEG61 lvalue @@ -2531,9 +2531,9 @@ lvalue: { //SEG63 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] -- _star_cowo1=coby2 lda #2 sta SCREEN+1 - //SEG64 [30] phi from lvalue to lvalue::@1 + //SEG64 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG66 lvalue::@1 b1: @@ -2551,9 +2551,9 @@ lvalue: { sta SCREEN,x //SEG72 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] -- xby=_inc_xby inx - //SEG73 [30] phi from lvalue::@2 to lvalue::@1 + //SEG73 [30] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 -- register_copy + //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -2566,7 +2566,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: @@ -2581,12 +2581,12 @@ main: { //SEG9 main::@2 b2: //SEG10 [4] call rvaluevar param-assignment [ ] - //SEG11 [14] phi from main::@2 to rvaluevar + //SEG11 [14] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] jsr rvaluevar //SEG12 main::@3 b3: //SEG13 [5] call lvaluevar param-assignment [ ] - //SEG14 [7] phi from main::@3 to lvaluevar + //SEG14 [7] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] jsr lvaluevar //SEG15 main::@return breturn: @@ -2597,14 +2597,14 @@ main: { lvaluevar: { .const b = 4 .label screen = 2 - //SEG18 [8] phi from lvaluevar to lvaluevar::@1 + //SEG18 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] b1_from_lvaluevar: - //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG21 lvaluevar::@1 b1: @@ -2628,23 +2628,23 @@ lvaluevar: { !: //SEG28 [13] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 [ lvaluevar::i#1 lvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 + //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] b1_from_b2: - //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 -- register_copy - //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 -- register_copy + //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } //SEG32 rvaluevar rvaluevar: { .label screen = 2 - //SEG33 [15] phi from rvaluevar to rvaluevar::@1 + //SEG33 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] b1_from_rvaluevar: - //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG36 rvaluevar::@1 b1: @@ -2667,10 +2667,10 @@ rvaluevar: { !: //SEG43 [20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 + //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] b1_from_b2: - //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 -- register_copy - //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 -- register_copy + //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } //SEG47 rvalue @@ -2680,9 +2680,9 @@ rvalue: { lda SCREEN //SEG49 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] -- aby=_star_cowo1 lda SCREEN+1 - //SEG50 [23] phi from rvalue to rvalue::@1 + //SEG50 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] b1_from_rvalue: - //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG52 rvalue::@1 b1: @@ -2699,9 +2699,9 @@ rvalue: { lda SCREEN,x //SEG58 [27] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] -- xby=_inc_xby inx - //SEG59 [23] phi from rvalue::@2 to rvalue::@1 + //SEG59 [23] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] b1_from_b2: - //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 -- register_copy + //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } //SEG61 lvalue @@ -2713,9 +2713,9 @@ lvalue: { //SEG63 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] -- _star_cowo1=coby2 lda #2 sta SCREEN+1 - //SEG64 [30] phi from lvalue to lvalue::@1 + //SEG64 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] b1_from_lvalue: - //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG66 lvalue::@1 b1: @@ -2733,9 +2733,9 @@ lvalue: { sta SCREEN,x //SEG72 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] -- xby=_inc_xby inx - //SEG73 [30] phi from lvalue::@2 to lvalue::@1 + //SEG73 [30] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] b1_from_b2: - //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 -- register_copy + //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -2762,7 +2762,7 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -2774,11 +2774,11 @@ main: { jsr rvalue //SEG9 main::@2 //SEG10 [4] call rvaluevar param-assignment [ ] - //SEG11 [14] phi from main::@2 to rvaluevar + //SEG11 [14] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] jsr rvaluevar //SEG12 main::@3 //SEG13 [5] call lvaluevar param-assignment [ ] - //SEG14 [7] phi from main::@3 to lvaluevar + //SEG14 [7] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] jsr lvaluevar //SEG15 main::@return //SEG16 [6] return [ ] @@ -2788,13 +2788,13 @@ main: { lvaluevar: { .const b = 4 .label screen = 2 - //SEG18 [8] phi from lvaluevar to lvaluevar::@1 - //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG18 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG21 lvaluevar::@1 b1: @@ -2817,21 +2817,21 @@ lvaluevar: { !: //SEG28 [13] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 [ lvaluevar::i#1 lvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 - //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 -- register_copy - //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 -- register_copy + //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } //SEG32 rvaluevar rvaluevar: { .label screen = 2 - //SEG33 [15] phi from rvaluevar to rvaluevar::@1 - //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG33 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG36 rvaluevar::@1 b1: @@ -2853,9 +2853,9 @@ rvaluevar: { !: //SEG43 [20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 - //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 -- register_copy - //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 -- register_copy + //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } //SEG47 rvalue @@ -2865,8 +2865,8 @@ rvalue: { lda SCREEN //SEG49 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] -- aby=_star_cowo1 lda SCREEN+1 - //SEG50 [23] phi from rvalue to rvalue::@1 - //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG50 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] + //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG52 rvalue::@1 b1: @@ -2882,8 +2882,8 @@ rvalue: { lda SCREEN,x //SEG58 [27] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] -- xby=_inc_xby inx - //SEG59 [23] phi from rvalue::@2 to rvalue::@1 - //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 -- register_copy + //SEG59 [23] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } //SEG61 lvalue @@ -2895,8 +2895,8 @@ lvalue: { //SEG63 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] -- _star_cowo1=coby2 lda #2 sta SCREEN+1 - //SEG64 [30] phi from lvalue to lvalue::@1 - //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG64 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG66 lvalue::@1 b1: @@ -2913,8 +2913,8 @@ lvalue: { sta SCREEN,x //SEG72 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] -- xby=_inc_xby inx - //SEG73 [30] phi from lvalue::@2 to lvalue::@1 - //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 -- register_copy + //SEG73 [30] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } @@ -2987,7 +2987,7 @@ FINAL CODE //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -2999,11 +2999,11 @@ main: { jsr rvalue //SEG9 main::@2 //SEG10 [4] call rvaluevar param-assignment [ ] - //SEG11 [14] phi from main::@2 to rvaluevar + //SEG11 [14] phi from main::@2 to rvaluevar [phi:main::@2->rvaluevar] jsr rvaluevar //SEG12 main::@3 //SEG13 [5] call lvaluevar param-assignment [ ] - //SEG14 [7] phi from main::@3 to lvaluevar + //SEG14 [7] phi from main::@3 to lvaluevar [phi:main::@3->lvaluevar] jsr lvaluevar //SEG15 main::@return //SEG16 [6] return [ ] @@ -3013,13 +3013,13 @@ main: { lvaluevar: { .const b = 4 .label screen = 2 - //SEG18 [8] phi from lvaluevar to lvaluevar::@1 - //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG18 [8] phi from lvaluevar to lvaluevar::@1 [phi:lvaluevar->lvaluevar::@1] + //SEG19 [8] phi (byte*) lvaluevar::screen#2 = (word) 1024 [phi:lvaluevar->lvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG20 [8] phi (byte) lvaluevar::i#2 = (byte) 2 [phi:lvaluevar->lvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG21 lvaluevar::@1 b1: @@ -3042,21 +3042,21 @@ lvaluevar: { !: //SEG28 [13] (byte) lvaluevar::i#1 ← ++ (byte) lvaluevar::i#2 [ lvaluevar::i#1 lvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 - //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 -- register_copy - //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 -- register_copy + //SEG29 [8] phi from lvaluevar::@2 to lvaluevar::@1 [phi:lvaluevar::@2->lvaluevar::@1] + //SEG30 [8] phi (byte*) lvaluevar::screen#2 = (byte*) lvaluevar::screen#1 [phi:lvaluevar::@2->lvaluevar::@1#0] -- register_copy + //SEG31 [8] phi (byte) lvaluevar::i#2 = (byte) lvaluevar::i#1 [phi:lvaluevar::@2->lvaluevar::@1#1] -- register_copy jmp b1 } //SEG32 rvaluevar rvaluevar: { .label screen = 2 - //SEG33 [15] phi from rvaluevar to rvaluevar::@1 - //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 -- zpptrby1=cowo1 + //SEG33 [15] phi from rvaluevar to rvaluevar::@1 [phi:rvaluevar->rvaluevar::@1] + //SEG34 [15] phi (byte*) rvaluevar::screen#2 = (word) 1024 [phi:rvaluevar->rvaluevar::@1#0] -- zpptrby1=cowo1 lda #<$400 sta screen lda #>$400 sta screen+1 - //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 -- xby=coby1 + //SEG35 [15] phi (byte) rvaluevar::i#2 = (byte) 2 [phi:rvaluevar->rvaluevar::@1#1] -- xby=coby1 ldx #2 //SEG36 rvaluevar::@1 b1: @@ -3078,9 +3078,9 @@ rvaluevar: { !: //SEG43 [20] (byte) rvaluevar::i#1 ← ++ (byte) rvaluevar::i#2 [ rvaluevar::i#1 rvaluevar::screen#1 ] -- xby=_inc_xby inx - //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 - //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 -- register_copy - //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 -- register_copy + //SEG44 [15] phi from rvaluevar::@2 to rvaluevar::@1 [phi:rvaluevar::@2->rvaluevar::@1] + //SEG45 [15] phi (byte*) rvaluevar::screen#2 = (byte*) rvaluevar::screen#1 [phi:rvaluevar::@2->rvaluevar::@1#0] -- register_copy + //SEG46 [15] phi (byte) rvaluevar::i#2 = (byte) rvaluevar::i#1 [phi:rvaluevar::@2->rvaluevar::@1#1] -- register_copy jmp b1 } //SEG47 rvalue @@ -3090,8 +3090,8 @@ rvalue: { lda SCREEN //SEG49 [22] (byte) rvalue::b#1 ← * (const byte[1024]) rvalue::SCREEN#0+(byte) 1 [ ] -- aby=_star_cowo1 lda SCREEN+1 - //SEG50 [23] phi from rvalue to rvalue::@1 - //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG50 [23] phi from rvalue to rvalue::@1 [phi:rvalue->rvalue::@1] + //SEG51 [23] phi (byte) rvalue::i#2 = (byte) 2 [phi:rvalue->rvalue::@1#0] -- xby=coby1 ldx #2 //SEG52 rvalue::@1 b1: @@ -3107,8 +3107,8 @@ rvalue: { lda SCREEN,x //SEG58 [27] (byte) rvalue::i#1 ← ++ (byte) rvalue::i#2 [ rvalue::i#1 ] -- xby=_inc_xby inx - //SEG59 [23] phi from rvalue::@2 to rvalue::@1 - //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 -- register_copy + //SEG59 [23] phi from rvalue::@2 to rvalue::@1 [phi:rvalue::@2->rvalue::@1] + //SEG60 [23] phi (byte) rvalue::i#2 = (byte) rvalue::i#1 [phi:rvalue::@2->rvalue::@1#0] -- register_copy jmp b1 } //SEG61 lvalue @@ -3120,8 +3120,8 @@ lvalue: { //SEG63 [29] *((const byte[1024]) lvalue::SCREEN#0+(byte) 1) ← (byte) 2 [ ] -- _star_cowo1=coby2 lda #2 sta SCREEN+1 - //SEG64 [30] phi from lvalue to lvalue::@1 - //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 -- xby=coby1 + //SEG64 [30] phi from lvalue to lvalue::@1 [phi:lvalue->lvalue::@1] + //SEG65 [30] phi (byte) lvalue::i#2 = (byte) 2 [phi:lvalue->lvalue::@1#0] -- xby=coby1 ldx #2 //SEG66 lvalue::@1 b1: @@ -3138,8 +3138,8 @@ lvalue: { sta SCREEN,x //SEG72 [34] (byte) lvalue::i#1 ← ++ (byte) lvalue::i#2 [ lvalue::i#1 ] -- xby=_inc_xby inx - //SEG73 [30] phi from lvalue::@2 to lvalue::@1 - //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 -- register_copy + //SEG73 [30] phi from lvalue::@2 to lvalue::@1 [phi:lvalue::@2->lvalue::@1] + //SEG74 [30] phi (byte) lvalue::i#2 = (byte) lvalue::i#1 [phi:lvalue::@2->lvalue::@1#0] -- register_copy jmp b1 } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log index 9ae93abea..5f9a8f0c0 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/ptrtestmin.log @@ -520,7 +520,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -531,9 +531,9 @@ main: { .const SCREEN = $400 .label b = 3 .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 2 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- zpby1=coby1 lda #2 sta i jmp b1 @@ -556,9 +556,9 @@ main: { sta b //SEG14 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- zpby1=_inc_zpby1 inc i - //SEG15 [2] phi from main::@2 to main::@1 + //SEG15 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -581,7 +581,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -589,9 +589,9 @@ bend: //SEG5 main main: { .const SCREEN = $400 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 2 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG8 main::@1 b1: @@ -608,9 +608,9 @@ main: { lda SCREEN,x //SEG14 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- xby=_inc_xby inx - //SEG15 [2] phi from main::@2 to main::@1 + //SEG15 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -621,16 +621,16 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { .const SCREEN = $400 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 2 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG8 main::@1 b1: @@ -647,9 +647,9 @@ main: { lda SCREEN,x //SEG14 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- xby=_inc_xby inx - //SEG15 [2] phi from main::@2 to main::@1 + //SEG15 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -663,14 +663,14 @@ ASSEMBLER //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .const SCREEN = $400 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 2 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG8 main::@1 b1: @@ -686,8 +686,8 @@ main: { lda SCREEN,x //SEG14 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- xby=_inc_xby inx - //SEG15 [2] phi from main::@2 to main::@1 - //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG15 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } @@ -713,14 +713,14 @@ FINAL CODE //SEG0 Global Constants & labels //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .const SCREEN = $400 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 2 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 2 [phi:main->main::@1#0] -- xby=coby1 ldx #2 //SEG8 main::@1 b1: @@ -736,8 +736,8 @@ main: { lda SCREEN,x //SEG14 [6] (byte) main::i#1 ← ++ (byte) main::i#2 [ main::i#1 ] -- xby=_inc_xby inx - //SEG15 [2] phi from main::@2 to main::@1 - //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG15 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG16 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy jmp b1 } diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.asm b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.asm index 6ce0bb5df..b4c78b4ff 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.asm @@ -12,15 +12,17 @@ main: { b1: ldy #0 lda (nxt),y - cmp #'@' + tay + cpy #'@' bne b2 + ldy TEXT lda #TEXT sta nxt+1 - lda TEXT b2: inx + tya sta SCREEN,x inc nxt bne !+ diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log index aae40d1e7..aa57c205a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.log @@ -1,6 +1,6 @@ byte* SCREEN = $0400; byte* SCROLL = $d016; -byte[] TEXT = "tst @"; +byte[] TEXT = "01234567@"; main(); void main() { @@ -22,7 +22,7 @@ Adding pre/post-modifier (byte*) main::nxt ← ++ (byte*) main::nxt PROGRAM (byte*) SCREEN ← (word) 1024 (byte*) SCROLL ← (word) 53270 - (byte[]) TEXT ← (string) "tst @" + (byte[]) TEXT ← (string) "01234567@" (void~) $0 ← call main proc (void()) main() (byte*) main::nxt ← (byte[]) TEXT @@ -66,7 +66,7 @@ INITIAL CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN ← (word) 1024 (byte*) SCROLL ← (word) 53270 - (byte[]) TEXT ← (string) "tst @" + (byte[]) TEXT ← (string) "01234567@" (void~) $0 ← call main to:@1 main: scope:[main] from @@ -106,7 +106,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN ← (word) 1024 (byte*) SCROLL ← (word) 53270 - (byte[]) TEXT ← (string) "tst @" + (byte[]) TEXT ← (string) "01234567@" (void~) $0 ← call main to:@end main: scope:[main] from @@ -142,7 +142,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL @begin: scope:[] from (byte*) SCREEN ← (word) 1024 (byte*) SCROLL ← (word) 53270 - (byte[]) TEXT ← (string) "tst @" + (byte[]) TEXT ← (string) "01234567@" call main param-assignment to:@2 @2: scope:[] from @begin @@ -181,7 +181,7 @@ CONTROL FLOW GRAPH SSA @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@2 @2: scope:[] from @begin @@ -231,7 +231,7 @@ CONTROL FLOW GRAPH WITH ASSIGNMENT CALL & RETURN @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@2 @2: scope:[] from @begin @@ -327,7 +327,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@end main: scope:[main] from @begin @@ -377,7 +377,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@end main: scope:[main] from @begin @@ -434,7 +434,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@end main: scope:[main] from @begin @@ -480,7 +480,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@end main: scope:[main] from @begin @@ -520,7 +520,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@end main: scope:[main] from @begin @@ -559,7 +559,7 @@ CONTROL FLOW GRAPH @begin: scope:[] from (byte*) SCREEN#0 ← (word) 1024 (byte*) SCROLL#0 ← (word) 53270 - (byte[]) TEXT#0 ← (string) "tst @" + (byte[]) TEXT#0 ← (string) "01234567@" call main param-assignment to:@end main: scope:[main] from @begin @@ -593,7 +593,7 @@ main::@return: scope:[main] from main::@2 Constant (const byte*) SCREEN#0 = 1024 Constant (const byte*) SCROLL#0 = 53270 -Constant (const byte[]) TEXT#0 = "tst @" +Constant (const byte[]) TEXT#0 = "01234567@" Constant (const byte) main::i#0 = 0 Succesful SSA optimization Pass2ConstantIdentification CONTROL FLOW GRAPH @@ -733,7 +733,7 @@ FINAL SYMBOL TABLE (byte*) SCROLL (const byte*) SCROLL#0 = (word) 53270 (byte[]) TEXT -(const byte[]) TEXT#0 = (string) "tst @" +(const byte[]) TEXT#0 = (string) "01234567@" (void()) main() (label) main::@1 (label) main::@2 @@ -938,11 +938,11 @@ INITIAL ASM //SEG0 Global Constants & labels .const SCREEN = $400 .const SCROLL = $d016 - TEXT: .text "tst @" + TEXT: .text "01234567@" //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -953,21 +953,21 @@ main: { .label c = 3 .label i = 2 .label nxt = 4 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#3 = (byte) 0 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i - //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 -- register_copy + //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy jmp b1 //SEG12 main::@1 b1: @@ -985,19 +985,19 @@ main: { //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- zpby1=_star_cowo1 lda TEXT sta c - //SEG17 [6] phi from main::@3 to main::@2 + //SEG17 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy jmp b2 - //SEG20 [6] phi from main::@1 to main::@2 + //SEG20 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy jmp b2 //SEG23 main::@2 b2: @@ -1034,8 +1034,8 @@ REGISTER UPLIFT SCOPES Uplift Scope [main] 55: zp ZP_BYTE:3 [ main::c#2 main::c#0 main::c#1 ] 29.33: zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] 12.65: zp ZP_BYTE:2 [ main::i#3 main::i#1 ] Uplift Scope [] -Uplifting [main] best 800 combination reg byte a [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] reg byte x [ main::i#3 main::i#1 ] -Uplifting [] best 800 combination +Uplifting [main] best 840 combination reg byte y [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:4 [ main::nxt#4 main::nxt#3 main::nxt#1 ] reg byte x [ main::i#3 main::i#1 ] +Uplifting [] best 840 combination Allocated (was zp ZP_PTR_BYTE:4) zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#1 ] Removing instruction jmp bend Removing instruction jmp b1 @@ -1047,11 +1047,11 @@ ASSEMBLER //SEG0 Global Constants & labels .const SCREEN = $400 .const SCROLL = $d016 - TEXT: .text "tst @" + TEXT: .text "01234567@" //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -1059,50 +1059,52 @@ bend: //SEG5 main main: { .label nxt = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] b1_from_b2: - //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 -- register_copy + //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- yby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tay + //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- yby_neq_coby1_then_la1 + cpy #'@' bne b2_from_b1 //SEG15 main::@3 b3: - //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG17 [6] phi from main::@3 to main::@2 + //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- yby=_star_cowo1 + ldy TEXT + //SEG17 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy jmp b2 - //SEG20 [6] phi from main::@1 to main::@2 + //SEG20 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] b2_from_b1: - //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy //SEG23 main::@2 b2: //SEG24 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::i#1 main::c#2 main::nxt#4 ] -- xby=_inc_xby inx - //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=aby + //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=yby + tya sta SCREEN,x //SEG26 [9] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 main::i#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt @@ -1127,59 +1129,61 @@ ASSEMBLER //SEG0 Global Constants & labels .const SCREEN = $400 .const SCROLL = $d016 - TEXT: .text "tst @" + TEXT: .text "01234567@" //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { .label nxt = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG7 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- yby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tay + //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- yby_neq_coby1_then_la1 + cpy #'@' bne b2 //SEG15 main::@3 b3: - //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG17 [6] phi from main::@3 to main::@2 + //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- yby=_star_cowo1 + ldy TEXT + //SEG17 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] b2_from_b3: - //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy jmp b2 - //SEG20 [6] phi from main::@1 to main::@2 - //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG20 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy //SEG23 main::@2 b2: //SEG24 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::i#1 main::c#2 main::nxt#4 ] -- xby=_inc_xby inx - //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=aby + //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=yby + tya sta SCREEN,x //SEG26 [9] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 main::i#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt @@ -1205,54 +1209,56 @@ ASSEMBLER //SEG0 Global Constants & labels .const SCREEN = $400 .const SCROLL = $d016 - TEXT: .text "tst @" + TEXT: .text "01234567@" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label nxt = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 jmp b1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- yby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tay + //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- yby_neq_coby1_then_la1 + cpy #'@' bne b2 //SEG15 main::@3 - //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG17 [6] phi from main::@3 to main::@2 - //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- yby=_star_cowo1 + ldy TEXT + //SEG17 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy jmp b2 - //SEG20 [6] phi from main::@1 to main::@2 - //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG20 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy //SEG23 main::@2 b2: //SEG24 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::i#1 main::c#2 main::nxt#4 ] -- xby=_inc_xby inx - //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=aby + //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=yby + tya sta SCREEN,x //SEG26 [9] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 main::i#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt @@ -1273,52 +1279,54 @@ ASSEMBLER //SEG0 Global Constants & labels .const SCREEN = $400 .const SCROLL = $d016 - TEXT: .text "tst @" + TEXT: .text "01234567@" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label nxt = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- yby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tay + //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- yby_neq_coby1_then_la1 + cpy #'@' bne b2 //SEG15 main::@3 - //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG17 [6] phi from main::@3 to main::@2 - //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- yby=_star_cowo1 + ldy TEXT + //SEG17 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy - //SEG20 [6] phi from main::@1 to main::@2 - //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG20 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy //SEG23 main::@2 b2: //SEG24 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::i#1 main::c#2 main::nxt#4 ] -- xby=_inc_xby inx - //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=aby + //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=yby + tya sta SCREEN,x //SEG26 [9] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 main::i#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt @@ -1340,16 +1348,16 @@ FINAL SYMBOL TABLE (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (byte[]) TEXT -(const byte[]) TEXT#0 TEXT = (string) "tst @" +(const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::c -(byte) main::c#0 reg byte a 16.5 -(byte) main::c#1 reg byte a 22.0 -(byte) main::c#2 reg byte a 16.5 +(byte) main::c#0 reg byte y 16.5 +(byte) main::c#1 reg byte y 22.0 +(byte) main::c#2 reg byte y 16.5 (byte) main::i (byte) main::i#1 reg byte x 8.25 (byte) main::i#3 reg byte x 4.4 @@ -1359,59 +1367,61 @@ FINAL SYMBOL TABLE (byte*) main::nxt#4 nxt zp ZP_PTR_BYTE:2 7.333333333333333 reg byte x [ main::i#3 main::i#1 ] -reg byte a [ main::c#2 main::c#0 main::c#1 ] +reg byte y [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#1 ] FINAL CODE //SEG0 Global Constants & labels .const SCREEN = $400 .const SCROLL = $d016 - TEXT: .text "tst @" + TEXT: .text "01234567@" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { .label nxt = 2 - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#3 = (byte) 0 -- xby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#3 = (byte) 0 [phi:main->main::@1#0] -- xby=coby1 ldx #0 - //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [2] phi (byte*) main::nxt#3 = (const byte[]) TEXT#0 [phi:main->main::@1#1] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG9 [2] phi from main::@2 to main::@1 - //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 -- register_copy - //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 -- register_copy + //SEG9 [2] phi from main::@2 to main::@1 [phi:main::@2->main::@1] + //SEG10 [2] phi (byte) main::i#3 = (byte) main::i#1 [phi:main::@2->main::@1#0] -- register_copy + //SEG11 [2] phi (byte*) main::nxt#3 = (byte*) main::nxt#1 [phi:main::@2->main::@1#1] -- register_copy //SEG12 main::@1 b1: - //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG13 [3] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::i#3 main::c#0 ] -- yby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tay + //SEG14 [4] if((byte) main::c#0!=(byte) '@') goto main::@2 [ main::nxt#3 main::i#3 main::c#0 ] -- yby_neq_coby1_then_la1 + cpy #'@' bne b2 //SEG15 main::@3 - //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG17 [6] phi from main::@3 to main::@2 - //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 -- zpptrby1=cowo1 + //SEG16 [5] (byte) main::c#1 ← * (const byte[]) TEXT#0 [ main::i#3 main::c#1 ] -- yby=_star_cowo1 + ldy TEXT + //SEG17 [6] phi from main::@3 to main::@2 [phi:main::@3->main::@2] + //SEG18 [6] phi (byte*) main::nxt#4 = (const byte[]) TEXT#0 [phi:main::@3->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy - //SEG20 [6] phi from main::@1 to main::@2 - //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG19 [6] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@3->main::@2#1] -- register_copy + //SEG20 [6] phi from main::@1 to main::@2 [phi:main::@1->main::@2] + //SEG21 [6] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@1->main::@2#0] -- register_copy + //SEG22 [6] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@1->main::@2#1] -- register_copy //SEG23 main::@2 b2: //SEG24 [7] (byte) main::i#1 ← ++ (byte) main::i#3 [ main::i#1 main::c#2 main::nxt#4 ] -- xby=_inc_xby inx - //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=aby + //SEG25 [8] *((const byte*) SCREEN#0 + (byte) main::i#1) ← (byte) main::c#2 [ main::i#1 main::nxt#4 ] -- cowo1_staridx_xby=yby + tya sta SCREEN,x //SEG26 [9] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 main::i#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym index 4297936fe..111996011 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll-clobber.sym @@ -5,16 +5,16 @@ (byte*) SCROLL (const byte*) SCROLL#0 SCROLL = (word) 53270 (byte[]) TEXT -(const byte[]) TEXT#0 TEXT = (string) "tst @" +(const byte[]) TEXT#0 TEXT = (string) "01234567@" (void()) main() (label) main::@1 (label) main::@2 (label) main::@3 (label) main::@return (byte) main::c -(byte) main::c#0 reg byte a 16.5 -(byte) main::c#1 reg byte a 22.0 -(byte) main::c#2 reg byte a 16.5 +(byte) main::c#0 reg byte y 16.5 +(byte) main::c#1 reg byte y 22.0 +(byte) main::c#2 reg byte y 16.5 (byte) main::i (byte) main::i#1 reg byte x 8.25 (byte) main::i#3 reg byte x 4.4 @@ -24,5 +24,5 @@ (byte*) main::nxt#4 nxt zp ZP_PTR_BYTE:2 7.333333333333333 reg byte x [ main::i#3 main::i#1 ] -reg byte a [ main::c#2 main::c#0 main::c#1 ] +reg byte y [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#1 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.asm b/src/main/java/dk/camelot64/kickc/test/ref/scroll.asm index e76bcec2b..9e7efd7b4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.asm +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.asm @@ -37,15 +37,16 @@ main: { bne b5 ldy #0 lda (nxt),y - cmp #'@' + tax + cpx #'@' bne b6 + ldx TEXT lda #TEXT sta nxt+1 - lda TEXT b6: - sta line+$27 + stx line+$27 inc nxt bne !+ inc nxt+1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.log b/src/main/java/dk/camelot64/kickc/test/ref/scroll.log index f9754ef0e..191447491 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.log @@ -3582,7 +3582,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -3603,27 +3603,27 @@ main: { .label c = 4 .label nxt = 5 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG8 [3] phi from main to main::@2 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- zpby1=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- zpby1=coby1 lda #7 sta scroll jmp b2 - //SEG11 [3] phi from main::@2 to main::@2 + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG12 [3] phi from main::@4 to main::@2 + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy jmp b2 //SEG15 main::@2 b2: @@ -3664,15 +3664,15 @@ main: { lda scroll cmp #$ff bne b4_from_b8 - //SEG27 [13] phi from main::@8 to main::@5 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- zpby1=coby1 lda #0 sta i jmp b5 - //SEG29 [13] phi from main::@5 to main::@5 + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] b5_from_b5: - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy jmp b5 //SEG31 main::@5 b5: @@ -3707,19 +3707,19 @@ main: { //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- zpby1=_star_cowo1 lda TEXT sta c - //SEG41 [21] phi from main::@11 to main::@6 + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG44 [21] phi from main::@10 to main::@6 + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] b6_from_b10: - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy jmp b6 //SEG47 main::@6 b6: @@ -3731,17 +3731,17 @@ main: { bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- zpby1=coby1 + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- zpby1=coby1 lda #7 sta scroll jmp b4 - //SEG53 [24] phi from main::@8 to main::@4 + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] b4_from_b8: - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy jmp b4 //SEG56 main::@4 b4: @@ -3771,17 +3771,17 @@ main: { fillscreen: { .const fill = $20 .label cursor = 7 - //SEG65 [32] phi from fillscreen to fillscreen::@1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy jmp b1 //SEG69 fillscreen::@1 b1: @@ -3837,16 +3837,16 @@ Uplift Scope [fillscreen] 33: zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen Uplift Scope [] Uplift attempts [main] 10000/1310720 (limiting to 10000) -Uplifting [main] best 8897 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] reg byte a [ main::$11 ] reg byte a [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:5 [ main::nxt#4 main::nxt#3 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#3 main::scroll#10 main::scroll#1 ] reg byte a [ main::$6 ] zp ZP_BYTE:12 [ main::$7 ] zp ZP_BYTE:14 [ main::$17 ] zp ZP_BYTE:15 [ main::$18 ] +Uplifting [main] best 8917 combination reg byte x [ main::i#2 main::i#1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] reg byte a [ main::$11 ] reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:5 [ main::nxt#4 main::nxt#3 main::nxt#10 main::nxt#1 ] reg byte x [ main::scroll#3 main::scroll#10 main::scroll#1 ] reg byte a [ main::$6 ] zp ZP_BYTE:12 [ main::$7 ] zp ZP_BYTE:14 [ main::$17 ] zp ZP_BYTE:15 [ main::$18 ] Limited combination testing to 10000 combinations of 1310720 possible. -Uplifting [fillscreen] best 8897 combination zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] -Uplifting [] best 8897 combination +Uplifting [fillscreen] best 8917 combination zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] +Uplifting [] best 8917 combination Attempting to uplift remaining variables inzp ZP_BYTE:12 [ main::$7 ] -Uplifting [main] best 8837 combination reg byte a [ main::$7 ] +Uplifting [main] best 8857 combination reg byte a [ main::$7 ] Attempting to uplift remaining variables inzp ZP_BYTE:14 [ main::$17 ] -Uplifting [main] best 8787 combination reg byte a [ main::$17 ] +Uplifting [main] best 8807 combination reg byte a [ main::$17 ] Attempting to uplift remaining variables inzp ZP_BYTE:15 [ main::$18 ] -Uplifting [main] best 8717 combination reg byte a [ main::$18 ] +Uplifting [main] best 8737 combination reg byte a [ main::$18 ] Coalescing zero page register [ zp ZP_PTR_BYTE:5 [ main::nxt#4 main::nxt#3 main::nxt#10 main::nxt#1 ] ] with [ zp ZP_PTR_BYTE:7 [ fillscreen::cursor#2 fillscreen::cursor#1 ] ] Allocated (was zp ZP_PTR_BYTE:5) zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] Removing instruction jmp bend @@ -3872,7 +3872,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -3882,26 +3882,26 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG8 [3] phi from main to main::@2 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 - //SEG11 [3] phi from main::@2 to main::@2 + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG12 [3] phi from main::@4 to main::@2 + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] b2_from_b4: - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -3930,14 +3930,14 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4_from_b8 - //SEG27 [13] phi from main::@8 to main::@5 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 jmp b5 - //SEG29 [13] phi from main::@5 to main::@5 + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] b5_from_b5: - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -3951,48 +3951,49 @@ main: { bne b5_from_b5 //SEG36 main::@10 b10: - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6_from_b10 //SEG39 main::@11 b11: - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG44 [21] phi from main::@10 to main::@6 + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] b6_from_b10: - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 jmp b4 - //SEG53 [24] phi from main::@8 to main::@4 + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] b4_from_b8: - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -4015,17 +4016,17 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] b1_from_b1: - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 @@ -4075,7 +4076,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: @@ -4084,25 +4085,25 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] fillscreen_from_main: jsr fillscreen - //SEG8 [3] phi from main to main::@2 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] b2_from_main: - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 - //SEG11 [3] phi from main::@2 to main::@2 + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG12 [3] phi from main::@4 to main::@2 - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -4131,13 +4132,13 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4 - //SEG27 [13] phi from main::@8 to main::@5 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] b5_from_b8: - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 jmp b5 - //SEG29 [13] phi from main::@5 to main::@5 - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -4151,46 +4152,47 @@ main: { bne b5 //SEG36 main::@10 b10: - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6 //SEG39 main::@11 b11: - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] b6_from_b11: - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG44 [21] phi from main::@10 to main::@6 - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] b4_from_b6: - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 jmp b4 - //SEG53 [24] phi from main::@8 to main::@4 - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -4213,16 +4215,16 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] b1_from_fillscreen: - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 @@ -4272,7 +4274,7 @@ ASSEMBLER TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -4280,23 +4282,23 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG8 [3] phi from main to main::@2 - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 - //SEG11 [3] phi from main::@2 to main::@2 + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: jmp b2 - //SEG12 [3] phi from main::@4 to main::@2 - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -4324,12 +4326,12 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4 - //SEG27 [13] phi from main::@8 to main::@5 - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 jmp b5 - //SEG29 [13] phi from main::@5 to main::@5 - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -4342,43 +4344,44 @@ main: { cpx #$27 bne b5 //SEG36 main::@10 - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6 //SEG39 main::@11 - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy jmp b6 - //SEG44 [21] phi from main::@10 to main::@6 - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 jmp b4 - //SEG53 [24] phi from main::@8 to main::@4 - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -4400,15 +4403,15 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 jmp b1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 @@ -4449,7 +4452,7 @@ ASSEMBLER TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -4457,22 +4460,22 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG8 [3] phi from main to main::@2 - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 - //SEG11 [3] phi from main::@2 to main::@2 + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] b2_from_b2: - //SEG12 [3] phi from main::@4 to main::@2 - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -4500,11 +4503,11 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4 - //SEG27 [13] phi from main::@8 to main::@5 - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 - //SEG29 [13] phi from main::@5 to main::@5 - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -4517,41 +4520,42 @@ main: { cpx #$27 bne b5 //SEG36 main::@10 - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6 //SEG39 main::@11 - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy - //SEG44 [21] phi from main::@10 to main::@6 - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 - //SEG53 [24] phi from main::@8 to main::@4 - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -4573,14 +4577,14 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 @@ -4618,7 +4622,7 @@ ASSEMBLER TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -4626,21 +4630,21 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG8 [3] phi from main to main::@2 - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 jmp b2 - //SEG11 [3] phi from main::@2 to main::@2 - //SEG12 [3] phi from main::@4 to main::@2 - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -4668,11 +4672,11 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4 - //SEG27 [13] phi from main::@8 to main::@5 - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 - //SEG29 [13] phi from main::@5 to main::@5 - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -4685,41 +4689,42 @@ main: { cpx #$27 bne b5 //SEG36 main::@10 - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6 //SEG39 main::@11 - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy - //SEG44 [21] phi from main::@10 to main::@6 - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 - //SEG53 [24] phi from main::@8 to main::@4 - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -4741,14 +4746,14 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 @@ -4785,7 +4790,7 @@ ASSEMBLER TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -4793,20 +4798,20 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG8 [3] phi from main to main::@2 - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 - //SEG11 [3] phi from main::@2 to main::@2 - //SEG12 [3] phi from main::@4 to main::@2 - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -4834,11 +4839,11 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4 - //SEG27 [13] phi from main::@8 to main::@5 - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 - //SEG29 [13] phi from main::@5 to main::@5 - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -4851,41 +4856,42 @@ main: { cpx #$27 bne b5 //SEG36 main::@10 - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6 //SEG39 main::@11 - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy - //SEG44 [21] phi from main::@10 to main::@6 - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 - //SEG53 [24] phi from main::@8 to main::@4 - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -4907,14 +4913,14 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 @@ -4980,9 +4986,9 @@ FINAL SYMBOL TABLE (label) main::@8 (label) main::@return (byte) main::c -(byte) main::c#0 reg byte a 16.5 -(byte) main::c#1 reg byte a 22.0 -(byte) main::c#2 reg byte a 33.0 +(byte) main::c#0 reg byte x 16.5 +(byte) main::c#1 reg byte x 22.0 +(byte) main::c#2 reg byte x 33.0 (byte) main::i (byte) main::i#1 reg byte x 151.5 (byte) main::i#2 reg byte x 134.66666666666666 @@ -5000,7 +5006,7 @@ FINAL SYMBOL TABLE reg byte x [ main::scroll#3 main::scroll#10 main::scroll#1 ] reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::c#2 main::c#0 main::c#1 ] +reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] @@ -5019,7 +5025,7 @@ FINAL CODE TEXT: .text "-= this is rex of camelot testing a scroller created in kickc. kickc is an optimizing c-compiler for 6502 assembler. =- @" //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main @@ -5027,20 +5033,20 @@ main: { .const line = SCREEN+$28 .label nxt = 2 //SEG6 [2] call fillscreen param-assignment [ ] - //SEG7 [31] phi from main to fillscreen + //SEG7 [31] phi from main to fillscreen [phi:main->fillscreen] jsr fillscreen - //SEG8 [3] phi from main to main::@2 - //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG8 [3] phi from main to main::@2 [phi:main->main::@2] + //SEG9 [3] phi (byte*) main::nxt#3 = (const byte*) TEXT#0 [phi:main->main::@2#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 -- xby=coby1 + //SEG10 [3] phi (byte) main::scroll#3 = (byte) 7 [phi:main->main::@2#1] -- xby=coby1 ldx #7 - //SEG11 [3] phi from main::@2 to main::@2 - //SEG12 [3] phi from main::@4 to main::@2 - //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 -- register_copy - //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 -- register_copy + //SEG11 [3] phi from main::@2 to main::@2 [phi:main::@2->main::@2] + //SEG12 [3] phi from main::@4 to main::@2 [phi:main::@4->main::@2] + //SEG13 [3] phi (byte*) main::nxt#3 = (byte*) main::nxt#10 [phi:main::@4->main::@2#0] -- register_copy + //SEG14 [3] phi (byte) main::scroll#3 = (byte) main::scroll#10 [phi:main::@4->main::@2#1] -- register_copy //SEG15 main::@2 b2: //SEG16 [4] (byte~) main::$2 ← * (const byte*) RASTER#0 [ main::scroll#3 main::nxt#3 main::$2 ] -- aby=_star_cowo1 @@ -5068,11 +5074,11 @@ main: { //SEG26 [12] if((byte) main::scroll#1!=(byte) 255) goto main::@4 [ main::nxt#3 main::scroll#1 ] -- xby_neq_coby1_then_la1 cpx #$ff bne b4 - //SEG27 [13] phi from main::@8 to main::@5 - //SEG28 [13] phi (byte) main::i#2 = (byte) 0 -- xby=coby1 + //SEG27 [13] phi from main::@8 to main::@5 [phi:main::@8->main::@5] + //SEG28 [13] phi (byte) main::i#2 = (byte) 0 [phi:main::@8->main::@5#0] -- xby=coby1 ldx #0 - //SEG29 [13] phi from main::@5 to main::@5 - //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG29 [13] phi from main::@5 to main::@5 [phi:main::@5->main::@5] + //SEG30 [13] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@5->main::@5#0] -- register_copy //SEG31 main::@5 b5: //SEG32 [14] (byte~) main::$11 ← (const byte[]) main::line#0+(byte) 1 *idx (byte) main::i#2 [ main::nxt#3 main::i#2 main::$11 ] -- aby=cowo1_staridx_xby @@ -5085,41 +5091,42 @@ main: { cpx #$27 bne b5 //SEG36 main::@10 - //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- aby=_star_zpptrby1 + //SEG37 [18] (byte) main::c#0 ← * (byte*) main::nxt#3 [ main::nxt#3 main::c#0 ] -- xby=_star_zpptrby1 ldy #0 lda (nxt),y - //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- aby_neq_coby1_then_la1 - cmp #'@' + tax + //SEG38 [19] if((byte) main::c#0!=(byte) '@') goto main::@6 [ main::nxt#3 main::c#0 ] -- xby_neq_coby1_then_la1 + cpx #'@' bne b6 //SEG39 main::@11 - //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- aby=_star_cowo1 - lda TEXT - //SEG41 [21] phi from main::@11 to main::@6 - //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 -- zpptrby1=cowo1 + //SEG40 [20] (byte) main::c#1 ← * (const byte*) TEXT#0 [ main::c#1 ] -- xby=_star_cowo1 + ldx TEXT + //SEG41 [21] phi from main::@11 to main::@6 [phi:main::@11->main::@6] + //SEG42 [21] phi (byte*) main::nxt#4 = (const byte*) TEXT#0 [phi:main::@11->main::@6#0] -- zpptrby1=cowo1 lda #TEXT sta nxt+1 - //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 -- register_copy - //SEG44 [21] phi from main::@10 to main::@6 - //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 -- register_copy - //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 -- register_copy + //SEG43 [21] phi (byte) main::c#2 = (byte) main::c#1 [phi:main::@11->main::@6#1] -- register_copy + //SEG44 [21] phi from main::@10 to main::@6 [phi:main::@10->main::@6] + //SEG45 [21] phi (byte*) main::nxt#4 = (byte*) main::nxt#3 [phi:main::@10->main::@6#0] -- register_copy + //SEG46 [21] phi (byte) main::c#2 = (byte) main::c#0 [phi:main::@10->main::@6#1] -- register_copy //SEG47 main::@6 b6: - //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=aby - sta line+$27 + //SEG48 [22] *((const byte[]) main::line#0+(byte) 39) ← (byte) main::c#2 [ main::nxt#4 ] -- _star_cowo1=xby + stx line+$27 //SEG49 [23] (byte*) main::nxt#1 ← ++ (byte*) main::nxt#4 [ main::nxt#1 ] -- zpptrby1=_inc_zpptrby1 inc nxt bne !+ inc nxt+1 !: - //SEG50 [24] phi from main::@6 to main::@4 - //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 -- register_copy - //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 -- xby=coby1 + //SEG50 [24] phi from main::@6 to main::@4 [phi:main::@6->main::@4] + //SEG51 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#1 [phi:main::@6->main::@4#0] -- register_copy + //SEG52 [24] phi (byte) main::scroll#10 = (byte) 7 [phi:main::@6->main::@4#1] -- xby=coby1 ldx #7 - //SEG53 [24] phi from main::@8 to main::@4 - //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 -- register_copy - //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 -- register_copy + //SEG53 [24] phi from main::@8 to main::@4 [phi:main::@8->main::@4] + //SEG54 [24] phi (byte*) main::nxt#10 = (byte*) main::nxt#3 [phi:main::@8->main::@4#0] -- register_copy + //SEG55 [24] phi (byte) main::scroll#10 = (byte) main::scroll#1 [phi:main::@8->main::@4#1] -- register_copy //SEG56 main::@4 b4: //SEG57 [25] *((const byte*) SCROLL#0) ← (byte) main::scroll#10 [ main::scroll#10 main::nxt#10 ] -- _star_cowo1=xby @@ -5141,14 +5148,14 @@ main: { fillscreen: { .const fill = $20 .label cursor = 2 - //SEG65 [32] phi from fillscreen to fillscreen::@1 - //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG65 [32] phi from fillscreen to fillscreen::@1 [phi:fillscreen->fillscreen::@1] + //SEG66 [32] phi (byte*) fillscreen::cursor#2 = (const byte*) SCREEN#0 [phi:fillscreen->fillscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta cursor+1 - //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 - //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 -- register_copy + //SEG67 [32] phi from fillscreen::@1 to fillscreen::@1 [phi:fillscreen::@1->fillscreen::@1] + //SEG68 [32] phi (byte*) fillscreen::cursor#2 = (byte*) fillscreen::cursor#1 [phi:fillscreen::@1->fillscreen::@1#0] -- register_copy //SEG69 fillscreen::@1 b1: //SEG70 [33] *((byte*) fillscreen::cursor#2) ← (const byte) fillscreen::fill#0 [ fillscreen::cursor#2 ] -- _star_zpptrby1=coby1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym b/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym index fd2edb7c2..65658c771 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym +++ b/src/main/java/dk/camelot64/kickc/test/ref/scroll.sym @@ -37,9 +37,9 @@ (label) main::@8 (label) main::@return (byte) main::c -(byte) main::c#0 reg byte a 16.5 -(byte) main::c#1 reg byte a 22.0 -(byte) main::c#2 reg byte a 33.0 +(byte) main::c#0 reg byte x 16.5 +(byte) main::c#1 reg byte x 22.0 +(byte) main::c#2 reg byte x 33.0 (byte) main::i (byte) main::i#1 reg byte x 151.5 (byte) main::i#2 reg byte x 134.66666666666666 @@ -57,7 +57,7 @@ reg byte x [ main::scroll#3 main::scroll#10 main::scroll#1 ] reg byte x [ main::i#2 main::i#1 ] -reg byte a [ main::c#2 main::c#0 main::c#1 ] +reg byte x [ main::c#2 main::c#0 main::c#1 ] zp ZP_PTR_BYTE:2 [ main::nxt#4 main::nxt#3 main::nxt#10 main::nxt#1 fillscreen::cursor#2 fillscreen::cursor#1 ] reg byte a [ main::$2 ] reg byte a [ main::$4 ] diff --git a/src/main/java/dk/camelot64/kickc/test/ref/summin.log b/src/main/java/dk/camelot64/kickc/test/ref/summin.log index f0214deec..3506e6be5 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/summin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/summin.log @@ -585,12 +585,12 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call sum param-assignment [ sum::return#0 ] -//SEG3 [8] phi from @begin to sum +//SEG3 [8] phi from @begin to sum [phi:@begin->sum] sum_from_bbegin: -//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 -- zpby1=coby1 +//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 [phi:@begin->sum#0] -- zpby1=coby1 lda #2 sta sum.b -//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 -- zpby1=coby1 +//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 [phi:@begin->sum#1] -- zpby1=coby1 lda #1 sta sum.a jsr sum @@ -601,12 +601,12 @@ b2: lda sum.return sta s1 //SEG8 [2] call sum param-assignment [ s1#0 sum::return#0 ] -//SEG9 [8] phi from @2 to sum +//SEG9 [8] phi from @2 to sum [phi:@2->sum] sum_from_b2: -//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 -- zpby1=coby1 +//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 [phi:@2->sum#0] -- zpby1=coby1 lda #4 sta sum.b -//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 -- zpby1=coby1 +//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 [phi:@2->sum#1] -- zpby1=coby1 lda #3 sta sum.a jsr sum @@ -617,12 +617,12 @@ b3: lda sum.return sta s2 //SEG14 [4] call sum param-assignment [ s1#0 sum::return#0 s2#0 ] -//SEG15 [8] phi from @3 to sum +//SEG15 [8] phi from @3 to sum [phi:@3->sum] sum_from_b3: -//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 -- zpby1=coby1 +//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 [phi:@3->sum#0] -- zpby1=coby1 lda #$d sta sum.b -//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 -- zpby1=coby1 +//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 [phi:@3->sum#1] -- zpby1=coby1 lda #9 sta sum.a jsr sum @@ -697,11 +697,11 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call sum param-assignment [ sum::return#0 ] -//SEG3 [8] phi from @begin to sum +//SEG3 [8] phi from @begin to sum [phi:@begin->sum] sum_from_bbegin: -//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 -- aby=coby1 +//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 [phi:@begin->sum#0] -- aby=coby1 lda #2 -//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 -- yby=coby1 +//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 [phi:@begin->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG6 @2 @@ -709,11 +709,11 @@ b2: //SEG7 [1] (byte) s1#0 ← (byte) sum::return#0 [ s1#0 ] -- zpby1=aby sta s1 //SEG8 [2] call sum param-assignment [ s1#0 sum::return#0 ] -//SEG9 [8] phi from @2 to sum +//SEG9 [8] phi from @2 to sum [phi:@2->sum] sum_from_b2: -//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 -- aby=coby1 +//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 [phi:@2->sum#0] -- aby=coby1 lda #4 -//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 -- yby=coby1 +//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 [phi:@2->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG12 @3 @@ -721,11 +721,11 @@ b3: //SEG13 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- xby=aby tax //SEG14 [4] call sum param-assignment [ s1#0 sum::return#0 s2#0 ] -//SEG15 [8] phi from @3 to sum +//SEG15 [8] phi from @3 to sum [phi:@3->sum] sum_from_b3: -//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 -- aby=coby1 +//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 [phi:@3->sum#0] -- aby=coby1 lda #$d -//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 -- yby=coby1 +//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 [phi:@3->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG18 @4 @@ -762,10 +762,10 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call sum param-assignment [ sum::return#0 ] -//SEG3 [8] phi from @begin to sum -//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 -- aby=coby1 +//SEG3 [8] phi from @begin to sum [phi:@begin->sum] +//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 [phi:@begin->sum#0] -- aby=coby1 lda #2 -//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 -- yby=coby1 +//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 [phi:@begin->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG6 @2 @@ -773,11 +773,11 @@ b2: //SEG7 [1] (byte) s1#0 ← (byte) sum::return#0 [ s1#0 ] -- zpby1=aby sta s1 //SEG8 [2] call sum param-assignment [ s1#0 sum::return#0 ] -//SEG9 [8] phi from @2 to sum +//SEG9 [8] phi from @2 to sum [phi:@2->sum] sum_from_b2: -//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 -- aby=coby1 +//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 [phi:@2->sum#0] -- aby=coby1 lda #4 -//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 -- yby=coby1 +//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 [phi:@2->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG12 @3 @@ -785,11 +785,11 @@ b3: //SEG13 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- xby=aby tax //SEG14 [4] call sum param-assignment [ s1#0 sum::return#0 s2#0 ] -//SEG15 [8] phi from @3 to sum +//SEG15 [8] phi from @3 to sum [phi:@3->sum] sum_from_b3: -//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 -- aby=coby1 +//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 [phi:@3->sum#0] -- aby=coby1 lda #$d -//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 -- yby=coby1 +//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 [phi:@3->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG18 @4 @@ -832,30 +832,30 @@ ASSEMBLER .label s3 = 3 //SEG1 @begin //SEG2 [0] call sum param-assignment [ sum::return#0 ] -//SEG3 [8] phi from @begin to sum -//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 -- aby=coby1 +//SEG3 [8] phi from @begin to sum [phi:@begin->sum] +//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 [phi:@begin->sum#0] -- aby=coby1 lda #2 -//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 -- yby=coby1 +//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 [phi:@begin->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG6 @2 //SEG7 [1] (byte) s1#0 ← (byte) sum::return#0 [ s1#0 ] -- zpby1=aby sta s1 //SEG8 [2] call sum param-assignment [ s1#0 sum::return#0 ] -//SEG9 [8] phi from @2 to sum -//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 -- aby=coby1 +//SEG9 [8] phi from @2 to sum [phi:@2->sum] +//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 [phi:@2->sum#0] -- aby=coby1 lda #4 -//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 -- yby=coby1 +//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 [phi:@2->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG12 @3 //SEG13 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- xby=aby tax //SEG14 [4] call sum param-assignment [ s1#0 sum::return#0 s2#0 ] -//SEG15 [8] phi from @3 to sum -//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 -- aby=coby1 +//SEG15 [8] phi from @3 to sum [phi:@3->sum] +//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 [phi:@3->sum#0] -- aby=coby1 lda #$d -//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 -- yby=coby1 +//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 [phi:@3->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG18 @4 @@ -919,30 +919,30 @@ FINAL CODE .label s3 = 3 //SEG1 @begin //SEG2 [0] call sum param-assignment [ sum::return#0 ] -//SEG3 [8] phi from @begin to sum -//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 -- aby=coby1 +//SEG3 [8] phi from @begin to sum [phi:@begin->sum] +//SEG4 [8] phi (byte) sum::b#3 = (byte) 2 [phi:@begin->sum#0] -- aby=coby1 lda #2 -//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 -- yby=coby1 +//SEG5 [8] phi (byte) sum::a#3 = (byte) 1 [phi:@begin->sum#1] -- yby=coby1 ldy #1 jsr sum //SEG6 @2 //SEG7 [1] (byte) s1#0 ← (byte) sum::return#0 [ s1#0 ] -- zpby1=aby sta s1 //SEG8 [2] call sum param-assignment [ s1#0 sum::return#0 ] -//SEG9 [8] phi from @2 to sum -//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 -- aby=coby1 +//SEG9 [8] phi from @2 to sum [phi:@2->sum] +//SEG10 [8] phi (byte) sum::b#3 = (byte) 4 [phi:@2->sum#0] -- aby=coby1 lda #4 -//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 -- yby=coby1 +//SEG11 [8] phi (byte) sum::a#3 = (byte) 3 [phi:@2->sum#1] -- yby=coby1 ldy #3 jsr sum //SEG12 @3 //SEG13 [3] (byte) s2#0 ← (byte) sum::return#0 [ s1#0 s2#0 ] -- xby=aby tax //SEG14 [4] call sum param-assignment [ s1#0 sum::return#0 s2#0 ] -//SEG15 [8] phi from @3 to sum -//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 -- aby=coby1 +//SEG15 [8] phi from @3 to sum [phi:@3->sum] +//SEG16 [8] phi (byte) sum::b#3 = (byte) 13 [phi:@3->sum#0] -- aby=coby1 lda #$d -//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 -- yby=coby1 +//SEG17 [8] phi (byte) sum::a#3 = (byte) 9 [phi:@3->sum#1] -- yby=coby1 ldy #9 jsr sum //SEG18 @4 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log index 807d4c5bd..46a6fb98a 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/voronoi.log @@ -7239,7 +7239,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -7248,14 +7248,14 @@ bend: //SEG5 main main: { //SEG6 [2] call initscreen param-assignment [ ] - //SEG7 [85] phi from main to initscreen + //SEG7 [85] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen jmp b1 //SEG8 main::@1 b1: //SEG9 [3] call render param-assignment [ ] - //SEG10 [46] phi from main::@1 to render + //SEG10 [46] phi from main::@1 to render [phi:main::@1->render] render_from_b1: jsr render jmp b4 @@ -7472,33 +7472,33 @@ render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG69 [47] phi from render to render::@1 + //SEG69 [47] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 -- zpptrby1=cowo1 + //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- zpptrby1=cowo1 lda #COLORS sta colline+1 - //SEG71 [47] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 + //SEG71 [47] phi (byte) render::y#2 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 - //SEG72 [47] phi from render::@3 to render::@1 + //SEG72 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] b1_from_b3: - //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy - //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy + //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy jmp b1 //SEG75 render::@1 b1: - //SEG76 [48] phi from render::@1 to render::@2 + //SEG76 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG77 [48] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 + //SEG77 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 - //SEG78 [48] phi from render::@5 to render::@2 + //SEG78 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] b2_from_b5: - //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy + //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy jmp b2 //SEG80 render::@2 b2: @@ -7509,7 +7509,7 @@ render: { lda y sta findcol.y //SEG83 [51] call findcol param-assignment [ render::y#2 render::colline#2 render::x#2 findcol::return#0 ] - //SEG84 [60] phi from render::@2 to findcol + //SEG84 [60] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol jmp b5 @@ -7569,15 +7569,15 @@ findcol: { .label mindiff = 7 .label mindiff_11 = 10 .label mindiff_14 = 10 - //SEG97 [61] phi from findcol to findcol::@1 + //SEG97 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 -- zpby1=coby1 + //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 [phi:findcol->findcol::@1#0] -- zpby1=coby1 lda #0 sta mincol - //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 -- zpby1=coby1 + //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 [phi:findcol->findcol::@1#2] -- zpby1=coby1 lda #0 sta i jmp b1 @@ -7602,9 +7602,9 @@ findcol: { lda y cmp yp bne b2 - //SEG107 [66] phi from findcol::@9 to findcol::@return + //SEG107 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 -- zpby1=coby1 + //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- zpby1=coby1 lda #0 sta return jmp breturn @@ -7626,10 +7626,10 @@ findcol: { sec sbc x sta diff - //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 + //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] b5_from_b12: b5_from_b4: - //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy + //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy jmp b5 //SEG117 findcol::@5 b5: @@ -7650,10 +7650,10 @@ findcol: { clc adc _12 sta diff_3 - //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 + //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] b7_from_b14: b7_from_b6: - //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy + //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy jmp b7 //SEG124 findcol::@7 b7: @@ -7668,11 +7668,11 @@ findcol: { ldx i lda COLS,x sta mincol - //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 + //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] b8_from_b16: b8_from_b21: - //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 -- register_copy - //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy jmp b8 //SEG131 findcol::@8 b8: @@ -7682,20 +7682,20 @@ findcol: { lda i cmp #numpoints bcc b19 - //SEG134 [66] phi from findcol::@8 to findcol::@return + //SEG134 [66] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn //SEG136 findcol::@19 b19: //SEG137 [80] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] -- zpby1=zpby2 lda mindiff_11 sta mindiff - //SEG138 [61] phi from findcol::@19 to findcol::@1 + //SEG138 [61] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy - //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 -- register_copy - //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy + //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 //SEG142 findcol::@21 b21: @@ -7728,17 +7728,17 @@ findcol: { //SEG149 initscreen initscreen: { .label screen = 11 - //SEG150 [86] phi from initscreen to initscreen::@1 + //SEG150 [86] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta screen+1 jmp b1 - //SEG152 [86] phi from initscreen::@1 to initscreen::@1 + //SEG152 [86] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy jmp b1 //SEG154 initscreen::@1 b1: @@ -7973,7 +7973,7 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end @@ -7981,13 +7981,13 @@ bend: //SEG5 main main: { //SEG6 [2] call initscreen param-assignment [ ] - //SEG7 [85] phi from main to initscreen + //SEG7 [85] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG8 main::@1 b1: //SEG9 [3] call render param-assignment [ ] - //SEG10 [46] phi from main::@1 to render + //SEG10 [46] phi from main::@1 to render [phi:main::@1->render] render_from_b1: jsr render //SEG11 main::@4 @@ -8127,32 +8127,32 @@ render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG69 [47] phi from render to render::@1 + //SEG69 [47] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 -- zpptrby1=cowo1 + //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- zpptrby1=cowo1 lda #COLORS sta colline+1 - //SEG71 [47] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 + //SEG71 [47] phi (byte) render::y#2 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 - //SEG72 [47] phi from render::@3 to render::@1 + //SEG72 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] b1_from_b3: - //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy - //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy + //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy //SEG75 render::@1 b1: - //SEG76 [48] phi from render::@1 to render::@2 + //SEG76 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] b2_from_b1: - //SEG77 [48] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 + //SEG77 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 - //SEG78 [48] phi from render::@5 to render::@2 + //SEG78 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] b2_from_b5: - //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy + //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy //SEG80 render::@2 b2: //SEG81 [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#2 render::colline#2 render::x#2 findcol::x#0 ] -- zpby1=zpby2 @@ -8162,7 +8162,7 @@ render: { lda y sta findcol.y //SEG83 [51] call findcol param-assignment [ render::y#2 render::colline#2 render::x#2 findcol::return#0 ] - //SEG84 [60] phi from render::@2 to findcol + //SEG84 [60] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol //SEG85 render::@5 @@ -8207,14 +8207,14 @@ findcol: { .label yp = 10 .label diff = 7 .label mindiff = 6 - //SEG97 [61] phi from findcol to findcol::@1 + //SEG97 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 -- yby=coby1 + //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 -- xby=coby1 + //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG101 findcol::@1 b1: @@ -8234,9 +8234,9 @@ findcol: { lda y cmp yp bne b2 - //SEG107 [66] phi from findcol::@9 to findcol::@return + //SEG107 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 -- yby=coby1 + //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG109 findcol::@return breturn: @@ -8255,10 +8255,10 @@ findcol: { sec sbc x sta diff - //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 + //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] b5_from_b12: b5_from_b4: - //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy + //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy //SEG117 findcol::@5 b5: //SEG118 [71] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#4 ] -- zpby1_ge_zpby2_then_la1 @@ -8274,10 +8274,10 @@ findcol: { //SEG121 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] -- aby=zpby1_plus_aby clc adc diff - //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 + //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] b7_from_b14: b7_from_b6: - //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy + //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy //SEG124 findcol::@7 b7: //SEG125 [75] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#6 ] -- aby_ge_zpby1_then_la1 @@ -8287,11 +8287,11 @@ findcol: { b16: //SEG127 [76] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby ldy COLS,x - //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 + //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] b8_from_b16: b8_from_b21: - //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 -- register_copy - //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy //SEG131 findcol::@8 b8: //SEG132 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby=_inc_xby @@ -8299,19 +8299,19 @@ findcol: { //SEG133 [79] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby_lt_coby1_then_la1 cpx #numpoints bcc b19 - //SEG134 [66] phi from findcol::@8 to findcol::@return + //SEG134 [66] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn //SEG136 findcol::@19 b19: //SEG137 [80] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] -- zpby1=aby sta mindiff - //SEG138 [61] phi from findcol::@19 to findcol::@1 + //SEG138 [61] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy - //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 -- register_copy - //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy + //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 //SEG142 findcol::@21 b21: @@ -8340,17 +8340,17 @@ findcol: { //SEG149 initscreen initscreen: { .label screen = 3 - //SEG150 [86] phi from initscreen to initscreen::@1 + //SEG150 [86] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta screen+1 jmp b1 - //SEG152 [86] phi from initscreen::@1 to initscreen::@1 + //SEG152 [86] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] b1_from_b1: - //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy //SEG154 initscreen::@1 b1: //SEG155 [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] -- _star_zpptrby1=coby1 @@ -8409,20 +8409,20 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { //SEG6 [2] call initscreen param-assignment [ ] - //SEG7 [85] phi from main to initscreen + //SEG7 [85] phi from main to initscreen [phi:main->initscreen] initscreen_from_main: jsr initscreen //SEG8 main::@1 b1: //SEG9 [3] call render param-assignment [ ] - //SEG10 [46] phi from main::@1 to render + //SEG10 [46] phi from main::@1 to render [phi:main::@1->render] jsr render //SEG11 main::@4 b4: @@ -8561,29 +8561,29 @@ render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG69 [47] phi from render to render::@1 + //SEG69 [47] phi from render to render::@1 [phi:render->render::@1] b1_from_render: - //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 -- zpptrby1=cowo1 + //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- zpptrby1=cowo1 lda #COLORS sta colline+1 - //SEG71 [47] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 + //SEG71 [47] phi (byte) render::y#2 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 - //SEG72 [47] phi from render::@3 to render::@1 - //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy - //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy + //SEG72 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy //SEG75 render::@1 b1: - //SEG76 [48] phi from render::@1 to render::@2 - //SEG77 [48] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 + //SEG76 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG77 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 - //SEG78 [48] phi from render::@5 to render::@2 - //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy + //SEG78 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy //SEG80 render::@2 b2: //SEG81 [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#2 render::colline#2 render::x#2 findcol::x#0 ] -- zpby1=zpby2 @@ -8593,7 +8593,7 @@ render: { lda y sta findcol.y //SEG83 [51] call findcol param-assignment [ render::y#2 render::colline#2 render::x#2 findcol::return#0 ] - //SEG84 [60] phi from render::@2 to findcol + //SEG84 [60] phi from render::@2 to findcol [phi:render::@2->findcol] findcol_from_b2: jsr findcol //SEG85 render::@5 @@ -8638,14 +8638,14 @@ findcol: { .label yp = 10 .label diff = 7 .label mindiff = 6 - //SEG97 [61] phi from findcol to findcol::@1 + //SEG97 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] b1_from_findcol: - //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 -- yby=coby1 + //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 -- xby=coby1 + //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG101 findcol::@1 b1: @@ -8665,9 +8665,9 @@ findcol: { lda y cmp yp bne b2 - //SEG107 [66] phi from findcol::@9 to findcol::@return + //SEG107 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] breturn_from_b9: - //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 -- yby=coby1 + //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG109 findcol::@return breturn: @@ -8686,8 +8686,8 @@ findcol: { sec sbc x sta diff - //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 - //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy + //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy //SEG117 findcol::@5 b5: //SEG118 [71] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#4 ] -- zpby1_ge_zpby2_then_la1 @@ -8703,8 +8703,8 @@ findcol: { //SEG121 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] -- aby=zpby1_plus_aby clc adc diff - //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 - //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy + //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy //SEG124 findcol::@7 b7: //SEG125 [75] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#6 ] -- aby_ge_zpby1_then_la1 @@ -8714,9 +8714,9 @@ findcol: { b16: //SEG127 [76] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby ldy COLS,x - //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 - //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 -- register_copy - //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy //SEG131 findcol::@8 b8: //SEG132 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby=_inc_xby @@ -8724,19 +8724,19 @@ findcol: { //SEG133 [79] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby_lt_coby1_then_la1 cpx #numpoints bcc b19 - //SEG134 [66] phi from findcol::@8 to findcol::@return + //SEG134 [66] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] breturn_from_b8: - //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn //SEG136 findcol::@19 b19: //SEG137 [80] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] -- zpby1=aby sta mindiff - //SEG138 [61] phi from findcol::@19 to findcol::@1 + //SEG138 [61] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] b1_from_b19: - //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy - //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 -- register_copy - //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy + //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 //SEG142 findcol::@21 b21: @@ -8765,16 +8765,16 @@ findcol: { //SEG149 initscreen initscreen: { .label screen = 3 - //SEG150 [86] phi from initscreen to initscreen::@1 + //SEG150 [86] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] b1_from_initscreen: - //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta screen+1 jmp b1 - //SEG152 [86] phi from initscreen::@1 to initscreen::@1 - //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + //SEG152 [86] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy //SEG154 initscreen::@1 b1: //SEG155 [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] -- _star_zpptrby1=coby1 @@ -8840,18 +8840,18 @@ ASSEMBLER COLS: .byte 1, 2, 3, 4, 5, 7 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call initscreen param-assignment [ ] - //SEG7 [85] phi from main to initscreen + //SEG7 [85] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG8 main::@1 b1: //SEG9 [3] call render param-assignment [ ] - //SEG10 [46] phi from main::@1 to render + //SEG10 [46] phi from main::@1 to render [phi:main::@1->render] jsr render //SEG11 main::@4 //SEG12 [4] call animate param-assignment [ ] @@ -8981,28 +8981,28 @@ render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG69 [47] phi from render to render::@1 - //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 -- zpptrby1=cowo1 + //SEG69 [47] phi from render to render::@1 [phi:render->render::@1] + //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- zpptrby1=cowo1 lda #COLORS sta colline+1 - //SEG71 [47] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 + //SEG71 [47] phi (byte) render::y#2 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y jmp b1 - //SEG72 [47] phi from render::@3 to render::@1 - //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy - //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy + //SEG72 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy //SEG75 render::@1 b1: - //SEG76 [48] phi from render::@1 to render::@2 - //SEG77 [48] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 + //SEG76 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG77 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x jmp b2 - //SEG78 [48] phi from render::@5 to render::@2 - //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy + //SEG78 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy //SEG80 render::@2 b2: //SEG81 [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#2 render::colline#2 render::x#2 findcol::x#0 ] -- zpby1=zpby2 @@ -9012,7 +9012,7 @@ render: { lda y sta findcol.y //SEG83 [51] call findcol param-assignment [ render::y#2 render::colline#2 render::x#2 findcol::return#0 ] - //SEG84 [60] phi from render::@2 to findcol + //SEG84 [60] phi from render::@2 to findcol [phi:render::@2->findcol] jsr findcol //SEG85 render::@5 //SEG86 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#2 render::colline#2 render::x#2 render::col#0 ] -- aby=yby @@ -9053,13 +9053,13 @@ findcol: { .label yp = 10 .label diff = 7 .label mindiff = 6 - //SEG97 [61] phi from findcol to findcol::@1 - //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 -- yby=coby1 + //SEG97 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 -- xby=coby1 + //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG101 findcol::@1 b1: @@ -9078,8 +9078,8 @@ findcol: { lda y cmp yp bne b2 - //SEG107 [66] phi from findcol::@9 to findcol::@return - //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 -- yby=coby1 + //SEG107 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG109 findcol::@return breturn: @@ -9097,8 +9097,8 @@ findcol: { sec sbc x sta diff - //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 - //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy + //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy //SEG117 findcol::@5 b5: //SEG118 [71] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#4 ] -- zpby1_ge_zpby2_then_la1 @@ -9113,8 +9113,8 @@ findcol: { //SEG121 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] -- aby=zpby1_plus_aby clc adc diff - //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 - //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy + //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy //SEG124 findcol::@7 b7: //SEG125 [75] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#6 ] -- aby_ge_zpby1_then_la1 @@ -9123,9 +9123,9 @@ findcol: { //SEG126 findcol::@16 //SEG127 [76] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby ldy COLS,x - //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 - //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 -- register_copy - //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy //SEG131 findcol::@8 b8: //SEG132 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby=_inc_xby @@ -9133,17 +9133,17 @@ findcol: { //SEG133 [79] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby_lt_coby1_then_la1 cpx #numpoints bcc b19 - //SEG134 [66] phi from findcol::@8 to findcol::@return - //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + //SEG134 [66] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn //SEG136 findcol::@19 b19: //SEG137 [80] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] -- zpby1=aby sta mindiff - //SEG138 [61] phi from findcol::@19 to findcol::@1 - //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy - //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 -- register_copy - //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy + //SEG138 [61] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 //SEG142 findcol::@21 b21: @@ -9172,15 +9172,15 @@ findcol: { //SEG149 initscreen initscreen: { .label screen = 3 - //SEG150 [86] phi from initscreen to initscreen::@1 - //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG150 [86] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta screen+1 jmp b1 - //SEG152 [86] phi from initscreen::@1 to initscreen::@1 - //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + //SEG152 [86] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy //SEG154 initscreen::@1 b1: //SEG155 [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] -- _star_zpptrby1=coby1 @@ -9221,18 +9221,18 @@ ASSEMBLER COLS: .byte 1, 2, 3, 4, 5, 7 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call initscreen param-assignment [ ] - //SEG7 [85] phi from main to initscreen + //SEG7 [85] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG8 main::@1 b1: //SEG9 [3] call render param-assignment [ ] - //SEG10 [46] phi from main::@1 to render + //SEG10 [46] phi from main::@1 to render [phi:main::@1->render] jsr render //SEG11 main::@4 //SEG12 [4] call animate param-assignment [ ] @@ -9362,26 +9362,26 @@ render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG69 [47] phi from render to render::@1 - //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 -- zpptrby1=cowo1 + //SEG69 [47] phi from render to render::@1 [phi:render->render::@1] + //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- zpptrby1=cowo1 lda #COLORS sta colline+1 - //SEG71 [47] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 + //SEG71 [47] phi (byte) render::y#2 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y - //SEG72 [47] phi from render::@3 to render::@1 - //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy - //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy + //SEG72 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy //SEG75 render::@1 b1: - //SEG76 [48] phi from render::@1 to render::@2 - //SEG77 [48] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 + //SEG76 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG77 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x - //SEG78 [48] phi from render::@5 to render::@2 - //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy + //SEG78 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy //SEG80 render::@2 b2: //SEG81 [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#2 render::colline#2 render::x#2 findcol::x#0 ] -- zpby1=zpby2 @@ -9391,7 +9391,7 @@ render: { lda y sta findcol.y //SEG83 [51] call findcol param-assignment [ render::y#2 render::colline#2 render::x#2 findcol::return#0 ] - //SEG84 [60] phi from render::@2 to findcol + //SEG84 [60] phi from render::@2 to findcol [phi:render::@2->findcol] jsr findcol //SEG85 render::@5 //SEG86 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#2 render::colline#2 render::x#2 render::col#0 ] -- aby=yby @@ -9432,13 +9432,13 @@ findcol: { .label yp = 10 .label diff = 7 .label mindiff = 6 - //SEG97 [61] phi from findcol to findcol::@1 - //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 -- yby=coby1 + //SEG97 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 -- xby=coby1 + //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG101 findcol::@1 b1: @@ -9457,8 +9457,8 @@ findcol: { lda y cmp yp bne b2 - //SEG107 [66] phi from findcol::@9 to findcol::@return - //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 -- yby=coby1 + //SEG107 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG109 findcol::@return breturn: @@ -9476,8 +9476,8 @@ findcol: { sec sbc x sta diff - //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 - //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy + //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy //SEG117 findcol::@5 b5: //SEG118 [71] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#4 ] -- zpby1_ge_zpby2_then_la1 @@ -9492,8 +9492,8 @@ findcol: { //SEG121 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] -- aby=zpby1_plus_aby clc adc diff - //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 - //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy + //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy //SEG124 findcol::@7 b7: //SEG125 [75] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#6 ] -- aby_ge_zpby1_then_la1 @@ -9502,9 +9502,9 @@ findcol: { //SEG126 findcol::@16 //SEG127 [76] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby ldy COLS,x - //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 - //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 -- register_copy - //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy //SEG131 findcol::@8 b8: //SEG132 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby=_inc_xby @@ -9512,17 +9512,17 @@ findcol: { //SEG133 [79] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby_lt_coby1_then_la1 cpx #numpoints bcc b19 - //SEG134 [66] phi from findcol::@8 to findcol::@return - //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + //SEG134 [66] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn //SEG136 findcol::@19 b19: //SEG137 [80] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] -- zpby1=aby sta mindiff - //SEG138 [61] phi from findcol::@19 to findcol::@1 - //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy - //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 -- register_copy - //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy + //SEG138 [61] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 //SEG142 findcol::@21 b21: @@ -9551,14 +9551,14 @@ findcol: { //SEG149 initscreen initscreen: { .label screen = 3 - //SEG150 [86] phi from initscreen to initscreen::@1 - //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG150 [86] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta screen+1 - //SEG152 [86] phi from initscreen::@1 to initscreen::@1 - //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + //SEG152 [86] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy //SEG154 initscreen::@1 b1: //SEG155 [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] -- _star_zpptrby1=coby1 @@ -9754,18 +9754,18 @@ FINAL CODE COLS: .byte 1, 2, 3, 4, 5, 7 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { //SEG6 [2] call initscreen param-assignment [ ] - //SEG7 [85] phi from main to initscreen + //SEG7 [85] phi from main to initscreen [phi:main->initscreen] jsr initscreen //SEG8 main::@1 b1: //SEG9 [3] call render param-assignment [ ] - //SEG10 [46] phi from main::@1 to render + //SEG10 [46] phi from main::@1 to render [phi:main::@1->render] jsr render //SEG11 main::@4 //SEG12 [4] call animate param-assignment [ ] @@ -9895,26 +9895,26 @@ render: { .label x = 5 .label colline = 3 .label y = 2 - //SEG69 [47] phi from render to render::@1 - //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 -- zpptrby1=cowo1 + //SEG69 [47] phi from render to render::@1 [phi:render->render::@1] + //SEG70 [47] phi (byte*) render::colline#2 = (const byte*) COLORS#0 [phi:render->render::@1#0] -- zpptrby1=cowo1 lda #COLORS sta colline+1 - //SEG71 [47] phi (byte) render::y#2 = (byte) 0 -- zpby1=coby1 + //SEG71 [47] phi (byte) render::y#2 = (byte) 0 [phi:render->render::@1#1] -- zpby1=coby1 lda #0 sta y - //SEG72 [47] phi from render::@3 to render::@1 - //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 -- register_copy - //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 -- register_copy + //SEG72 [47] phi from render::@3 to render::@1 [phi:render::@3->render::@1] + //SEG73 [47] phi (byte*) render::colline#2 = (byte*) render::colline#1 [phi:render::@3->render::@1#0] -- register_copy + //SEG74 [47] phi (byte) render::y#2 = (byte) render::y#1 [phi:render::@3->render::@1#1] -- register_copy //SEG75 render::@1 b1: - //SEG76 [48] phi from render::@1 to render::@2 - //SEG77 [48] phi (byte) render::x#2 = (byte) 0 -- zpby1=coby1 + //SEG76 [48] phi from render::@1 to render::@2 [phi:render::@1->render::@2] + //SEG77 [48] phi (byte) render::x#2 = (byte) 0 [phi:render::@1->render::@2#0] -- zpby1=coby1 lda #0 sta x - //SEG78 [48] phi from render::@5 to render::@2 - //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 -- register_copy + //SEG78 [48] phi from render::@5 to render::@2 [phi:render::@5->render::@2] + //SEG79 [48] phi (byte) render::x#2 = (byte) render::x#1 [phi:render::@5->render::@2#0] -- register_copy //SEG80 render::@2 b2: //SEG81 [49] (byte) findcol::x#0 ← (byte) render::x#2 [ render::y#2 render::colline#2 render::x#2 findcol::x#0 ] -- zpby1=zpby2 @@ -9924,7 +9924,7 @@ render: { lda y sta findcol.y //SEG83 [51] call findcol param-assignment [ render::y#2 render::colline#2 render::x#2 findcol::return#0 ] - //SEG84 [60] phi from render::@2 to findcol + //SEG84 [60] phi from render::@2 to findcol [phi:render::@2->findcol] jsr findcol //SEG85 render::@5 //SEG86 [52] (byte) render::col#0 ← (byte) findcol::return#0 [ render::y#2 render::colline#2 render::x#2 render::col#0 ] -- aby=yby @@ -9965,13 +9965,13 @@ findcol: { .label yp = 10 .label diff = 7 .label mindiff = 6 - //SEG97 [61] phi from findcol to findcol::@1 - //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 -- yby=coby1 + //SEG97 [61] phi from findcol to findcol::@1 [phi:findcol->findcol::@1] + //SEG98 [61] phi (byte) findcol::mincol#11 = (byte) 0 [phi:findcol->findcol::@1#0] -- yby=coby1 ldy #0 - //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 -- zpby1=coby1 + //SEG99 [61] phi (byte) findcol::mindiff#10 = (byte) 255 [phi:findcol->findcol::@1#1] -- zpby1=coby1 lda #$ff sta mindiff - //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 -- xby=coby1 + //SEG100 [61] phi (byte) findcol::i#12 = (byte) 0 [phi:findcol->findcol::@1#2] -- xby=coby1 ldx #0 //SEG101 findcol::@1 b1: @@ -9990,8 +9990,8 @@ findcol: { lda y cmp yp bne b2 - //SEG107 [66] phi from findcol::@9 to findcol::@return - //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 -- yby=coby1 + //SEG107 [66] phi from findcol::@9 to findcol::@return [phi:findcol::@9->findcol::@return] + //SEG108 [66] phi (byte) findcol::return#0 = (byte) 0 [phi:findcol::@9->findcol::@return#0] -- yby=coby1 ldy #0 //SEG109 findcol::@return breturn: @@ -10009,8 +10009,8 @@ findcol: { sec sbc x sta diff - //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 - //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 -- register_copy + //SEG115 [70] phi from findcol::@12 findcol::@4 to findcol::@5 [phi:findcol::@12/findcol::@4->findcol::@5] + //SEG116 [70] phi (byte) findcol::diff#4 = (byte) findcol::diff#1 [phi:findcol::@12/findcol::@4->findcol::@5#0] -- register_copy //SEG117 findcol::@5 b5: //SEG118 [71] if((byte) findcol::y#0>=(byte) findcol::yp#0) goto findcol::@6 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::yp#0 findcol::diff#4 ] -- zpby1_ge_zpby2_then_la1 @@ -10025,8 +10025,8 @@ findcol: { //SEG121 [73] (byte) findcol::diff#3 ← (byte) findcol::diff#4 + (byte~) findcol::$12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#3 ] -- aby=zpby1_plus_aby clc adc diff - //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 - //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 -- register_copy + //SEG122 [74] phi from findcol::@14 findcol::@6 to findcol::@7 [phi:findcol::@14/findcol::@6->findcol::@7] + //SEG123 [74] phi (byte) findcol::diff#6 = (byte) findcol::diff#3 [phi:findcol::@14/findcol::@6->findcol::@7#0] -- register_copy //SEG124 findcol::@7 b7: //SEG125 [75] if((byte) findcol::diff#6>=(byte) findcol::mindiff#10) goto findcol::@21 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::mindiff#10 findcol::mincol#11 findcol::diff#6 ] -- aby_ge_zpby1_then_la1 @@ -10035,9 +10035,9 @@ findcol: { //SEG126 findcol::@16 //SEG127 [76] (byte) findcol::mincol#1 ← (const byte[]) COLS#0 *idx (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#12 findcol::diff#6 findcol::mincol#1 ] -- yby=cowo1_staridx_xby ldy COLS,x - //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 - //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 -- register_copy - //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 -- register_copy + //SEG128 [77] phi from findcol::@16 findcol::@21 to findcol::@8 [phi:findcol::@16/findcol::@21->findcol::@8] + //SEG129 [77] phi (byte) findcol::mindiff#11 = (byte) findcol::diff#6 [phi:findcol::@16/findcol::@21->findcol::@8#0] -- register_copy + //SEG130 [77] phi (byte) findcol::mincol#2 = (byte) findcol::mincol#1 [phi:findcol::@16/findcol::@21->findcol::@8#1] -- register_copy //SEG131 findcol::@8 b8: //SEG132 [78] (byte) findcol::i#1 ← ++ (byte) findcol::i#12 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby=_inc_xby @@ -10045,17 +10045,17 @@ findcol: { //SEG133 [79] if((byte) findcol::i#1<(const byte) numpoints#0) goto findcol::@19 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mincol#2 findcol::mindiff#11 ] -- xby_lt_coby1_then_la1 cpx #numpoints bcc b19 - //SEG134 [66] phi from findcol::@8 to findcol::@return - //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 -- register_copy + //SEG134 [66] phi from findcol::@8 to findcol::@return [phi:findcol::@8->findcol::@return] + //SEG135 [66] phi (byte) findcol::return#0 = (byte) findcol::mincol#2 [phi:findcol::@8->findcol::@return#0] -- register_copy jmp breturn //SEG136 findcol::@19 b19: //SEG137 [80] (byte~) findcol::mindiff#13 ← (byte) findcol::mindiff#11 [ findcol::x#0 findcol::y#0 findcol::i#1 findcol::mindiff#13 findcol::mincol#2 ] -- zpby1=aby sta mindiff - //SEG138 [61] phi from findcol::@19 to findcol::@1 - //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 -- register_copy - //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 -- register_copy - //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 -- register_copy + //SEG138 [61] phi from findcol::@19 to findcol::@1 [phi:findcol::@19->findcol::@1] + //SEG139 [61] phi (byte) findcol::mincol#11 = (byte) findcol::mincol#2 [phi:findcol::@19->findcol::@1#0] -- register_copy + //SEG140 [61] phi (byte) findcol::mindiff#10 = (byte~) findcol::mindiff#13 [phi:findcol::@19->findcol::@1#1] -- register_copy + //SEG141 [61] phi (byte) findcol::i#12 = (byte) findcol::i#1 [phi:findcol::@19->findcol::@1#2] -- register_copy jmp b1 //SEG142 findcol::@21 b21: @@ -10084,14 +10084,14 @@ findcol: { //SEG149 initscreen initscreen: { .label screen = 3 - //SEG150 [86] phi from initscreen to initscreen::@1 - //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 -- zpptrby1=cowo1 + //SEG150 [86] phi from initscreen to initscreen::@1 [phi:initscreen->initscreen::@1] + //SEG151 [86] phi (byte*) initscreen::screen#2 = (const byte*) SCREEN#0 [phi:initscreen->initscreen::@1#0] -- zpptrby1=cowo1 lda #SCREEN sta screen+1 - //SEG152 [86] phi from initscreen::@1 to initscreen::@1 - //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 -- register_copy + //SEG152 [86] phi from initscreen::@1 to initscreen::@1 [phi:initscreen::@1->initscreen::@1] + //SEG153 [86] phi (byte*) initscreen::screen#2 = (byte*) initscreen::screen#1 [phi:initscreen::@1->initscreen::@1#0] -- register_copy //SEG154 initscreen::@1 b1: //SEG155 [87] *((byte*) initscreen::screen#2) ← (const byte) FILL#0 [ initscreen::screen#2 ] -- _star_zpptrby1=coby1 diff --git a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log index 432d08afd..f2472b2d4 100644 --- a/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log +++ b/src/main/java/dk/camelot64/kickc/test/ref/zpparammin.log @@ -1322,7 +1322,7 @@ INITIAL ASM //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main jmp bend @@ -1337,15 +1337,15 @@ main: { .label _4 = 10 .label _5 = 14 .label i = 2 - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- zpby1=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- zpby1=coby1 lda #0 sta i jmp b1 - //SEG8 [2] phi from main::@4 to main::@1 + //SEG8 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy jmp b1 //SEG10 main::@1 b1: @@ -1533,21 +1533,21 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] main_from_bbegin: jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- yby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 - //SEG8 [2] phi from main::@4 to main::@1 + //SEG8 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] b1_from_b4: - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] -- xby=yby_plus_1 @@ -1648,19 +1648,19 @@ ASSEMBLER //SEG1 @begin bbegin: //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end bend: //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] b1_from_main: - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- yby=coby1 + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 - //SEG8 [2] phi from main::@4 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] -- xby=yby_plus_1 @@ -1765,17 +1765,17 @@ ASSEMBLER .const SCREEN2 = $400+$28 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 jmp b1 - //SEG8 [2] phi from main::@4 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] -- xby=yby_plus_1 @@ -1868,16 +1868,16 @@ ASSEMBLER .const SCREEN2 = $400+$28 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG8 [2] phi from main::@4 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] -- xby=yby_plus_1 @@ -2028,16 +2028,16 @@ FINAL CODE .const SCREEN2 = $400+$28 //SEG1 @begin //SEG2 [0] call main param-assignment [ ] -//SEG3 [1] phi from @begin to main +//SEG3 [1] phi from @begin to main [phi:@begin->main] jsr main //SEG4 @end //SEG5 main main: { - //SEG6 [2] phi from main to main::@1 - //SEG7 [2] phi (byte) main::i#2 = (byte) 0 -- yby=coby1 + //SEG6 [2] phi from main to main::@1 [phi:main->main::@1] + //SEG7 [2] phi (byte) main::i#2 = (byte) 0 [phi:main->main::@1#0] -- yby=coby1 ldy #0 - //SEG8 [2] phi from main::@4 to main::@1 - //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 -- register_copy + //SEG8 [2] phi from main::@4 to main::@1 [phi:main::@4->main::@1] + //SEG9 [2] phi (byte) main::i#2 = (byte) main::i#1 [phi:main::@4->main::@1#0] -- register_copy //SEG10 main::@1 b1: //SEG11 [3] (byte~) main::$0 ← (byte) main::i#2 + (byte) 1 [ main::i#2 main::$0 ] -- xby=yby_plus_1 diff --git a/src/main/java/dk/camelot64/kickc/test/scroll-clobber.kc b/src/main/java/dk/camelot64/kickc/test/scroll-clobber.kc index 98ecedf78..2524ce80d 100644 --- a/src/main/java/dk/camelot64/kickc/test/scroll-clobber.kc +++ b/src/main/java/dk/camelot64/kickc/test/scroll-clobber.kc @@ -1,6 +1,6 @@ byte* SCREEN = $0400; byte* SCROLL = $d016; -byte[] TEXT = "tst @"; +byte[] TEXT = "01234567@"; main(); void main() {